An FPGA is ideal for lower complexity, higher rate processing. Optical flow seems to use a large amount of inner-products and similar functions. These parts are a good fit for an FPGA because the logic is simple, and a large number of computations are needed, and they can be done in parallel.
A CPU is ideal for higher complexity, lower rate processing. Navigational control might have aspects where a CPU is useful, though I can't really say.
This complexity-compute split has a few common solutions:
1.) external computer -- an external PC does complex algorithms at a low rate then sends commands to the FPGA.
2.) external on-board CPU -- an external CPU performs the higher complexity parts. This solution tends to have a lower CPU performance than having an external computer, but offers lower latency and higher bandwidth between the devices.
3.) SOC -- the internal CPU offers an exceptional amount of bandwidth and the lowest latency between the CPU and the FPGA as they are on the same package and were designed for this. The CPU might be slower than an external CPU though.
4.) FPGA only -- When applications don't have any high-complexity parts, FPGA-only makes sense. Doing everything in an FPGA (even when there is no performance reasons to do so) can increase design time.