Canny Edge Detection

Canny example resides in L2/examples/canny directory.

This benchmark tests the performance of canny function. The Canny edge detector finds the edges in an image or video frame. It is one of the most popular algorithms for edge detection.

The tutorial provides a step-by-step guide that covers commands for building and running kernel.

Executable Usage

  • Work Directory(Step 1)

The steps for library download and environment setup can be found in README file of L2 folder. For getting the design,

cd L2/example/canny
  • Build kernel(Step 2)

Run the following make command to build your XCLBIN and host binary targeting a specific device. Please be noticed that this process will take a long time, maybe couple of hours.

export OPENCV_INCLUDE=< path-to-opencv-include-folder >
export OPENCV_LIB=< path-to-opencv-lib-folder >
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:< path-to-opencv-lib-folder >
export DEVICE=< path-to-platform-directory >/< platform >.xpfm
make host xclbin TARGET=hw
  • Run kernel(Step 3)

To get the benchmark results, please run the following command.

make run TARGET=hw
  • Example output(Step 4)
-----------Canny Design---------------
Found Platform
Platform Name: Xilinx
XCLBIN File Name: krnl_canny
INFO: Importing Vitis_Libraries/vision/L2/examples/canny/Xilinx_Canny_L2_Test_vitis_hw_u200/build_dir.hw.xilinx_u200_xdma_201830_2/krnl_canny.xclbin
Loading: 'Vitis_Libraries/vision/L2/examples/canny/Xilinx_Canny_L2_Test_vitis_hw_u200/build_dir.hw.xilinx_u200_xdma_201830_2/krnl_canny.xclbin'
before kernelafter kernel
before kernelafter kernel
actual number of cols is 3840
Total Execution time 10.5ms
------------------------------------------------------------

Profiling

The canny design is validated on Alveo U200 board at 300 MHz frequency. The hardware resource utilizations are listed in the following table.

Table 1 Hardware resources for Canny edge detection
Dataset LUT BRAM FF DSP
Resolution NPPC other params
4K 8 L1 Norm, Filter - 3x3 31408 132 19148 96
FHD 8 L1 Norm, Filter - 3x3 17451 65 11256 63

The performance is shown below

Table 2 Performance numbers in terms of FPS (Frames Per Second) for Canny edge detection
Dataset FPS(CPU) FPS(FPGA)
4k (3840x2160) 9 95
Full HD(1920x1080) 25 333