AptCore ACL1 – Optical Flow Processor

Designed for Automotive and Machine Vision

The ACL1 is an optical flow image processor optimised for automotive and machine vision applications. It offloads the repetitive processing that is required by optical flow. The processing is performed using a dedicated core that combines the advantages of a small hardwired unit, whilst retaining the flexibility of parameter selection via software.



The ACL is controlled using memory mapped registers from software. These allow parameters and execution to be controlled by the host processor. Full read / write access to the image pyramid and features is provided to the host. The host can control many aspects of the processing, including:

  • Original image size
  • Number of pyramid levels
  • FAST feature detection threshold
  • Number of LK iterations
  • LK determinant threshold
  • To allow host processor interaction, Processing can be broken down into
    • scaling;
    • feature detect;
    • optical flow
  • Processing can be automatically sequenced

The graphic to the right shows the percentage of a frame taken to perform optical flow on a 1024×640 pixel image assuming 10k features and a single flow engine.


Due to the flexible nature of the sequencing it is possible for the host or other image processor to intercept, generate or modify the scaled images, pre-flow and post-flow feature lists. This could allow an alternative feature detection or sharing of scaled images with another processor.


The table below shows the cycle times and frames per second for the various stages for different sized images.


ACL Area

The graph below shows the gate count for different flow engine options.



The ACL represents the ultimate performance for optical flow image processing.

  • Simple programming interface
  • High performance fixed function unit
  • Flexible parameter selection via software
  • Optimised architecture
  • FPGA or ASIC
  • Image pyramid creation
  • FAST feature identification
  • Memory mapped or streamed image input