A Distributed Canny Edge Detector: Algorithm and FPGA Implementation

The Canny edge detector is one of the most widely used edge detection algorithms due to its superior performance. Unfortunately, not only is it computationally more intensive as compared with other edge detection algorithms, but it also has a higher latency because it is based on frame-level statistics. In this paper, we propose a mechanism to implement the Canny algorithm at the block level without any loss in edge detection performance compared with the original frame-level Canny algorithm. Directly applying the original Canny algorithm at the block-level leads to excessive edges in smooth regions and to loss of significant edges in high-detailed regions since the original Canny computes the high and low thresholds based on the frame-level statistics. To solve this problem, we present a distributed Canny edge detection algorithm that adaptively computes the edge detection thresholds based on the block type and the local distribution of the gradients in the image block. In addition, the new algorithm uses a nonuniform gradient magnitude histogram to compute block-based hysteresis thresholds. The resulting block-based algorithm has a significantly reduced latency and can be easily integrated with other block-based image codecs. It is capable of supporting fast edge detection of images and videos with high resolutions, including full-HD since the latency is now a function of the block size instead of the frame size. In addition, quantitative conformance evaluations and subjective tests show that the edge detection performance of the proposed algorithm is better than the original frame-based algorithm, especially when noise is present in the images. Finally, this algorithm is implemented using a 32 computing engine architecture and is synthesized on the Xilinx Virtex-5 FPGA. The synthesized architecture takes only 0.721 ms (including the SRAM READ/WRITE time and the computation time) to detect edges of 512 × 512 images in the USC SIPI database when clocked at 100 MHz and is faster than existing FPGA and GPU implementations.

[1]  Daggu Venkateshwar Rao,et al.  An efficient reconfigurable architecture and implementation of edge detection algorithm using Handle-C , 2004, International Conference on Information Technology: Coding and Computing, 2004. Proceedings. ITCC 2004..

[2]  Sungdae Cho,et al.  Design and Performance Evaluation of Image Processing Algorithms on GPUs , 2011, IEEE Transactions on Parallel and Distributed Systems.

[3]  Spiridon Nikolaidis,et al.  Real-time canny edge detection parallel implementation for FPGAs , 2010, 2010 17th IEEE International Conference on Electronics, Circuits and Systems.

[4]  Jens H. Krüger,et al.  A Survey of General‐Purpose Computation on Graphics Hardware , 2007, Eurographics.

[5]  Lei Zhang,et al.  Canny edge detection enhancement by scale multiplication , 2005, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[6]  Lina J. Karam,et al.  A No-Reference Image Blur Metric Based on the Cumulative Probability of Blur Detection (CPBD) , 2011, IEEE Transactions on Image Processing.

[7]  Shahan Nercessian A new class of edge detection algorithms with performance measure , 2009 .

[8]  Michel Paindavoine,et al.  Implementation of a recursive real time edge detector using retiming techniques , 1995, Proceedings of ASP-DAC'95/CHDL'95/VLSI'95 with EDA Technofair.

[9]  Hong Shan Neoh,et al.  Adaptive Edge Detection for Real-Time Video Processing using FPGAs , 2005 .

[10]  Chaitali Chakrabarti,et al.  A distributed Canny edge detector and its implementation on FPGA , 2011, 2011 Digital Signal Processing and Signal Processing Education Meeting (DSP/SPE).

[11]  Russell M. Mersereau,et al.  Post-processing for artifact reduction in JPEG-compressed images , 1995, 1995 International Conference on Acoustics, Speech, and Signal Processing.

[12]  J. M. Palomares,et al.  Parallelizing and Optimizing LIP-Canny Using NVIDIA CUDA , 2010, IEA/AIE.

[13]  J. Canny A Computational Approach to Edge Detection , 1986, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[14]  Kui Yuan,et al.  An improved Canny edge detector and its realization on FPGA , 2008, 2008 7th World Congress on Intelligent Control and Automation.

[15]  Ramani Duraiswami,et al.  Canny edge detection on NVIDIA CUDA , 2008, 2008 IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshops.

[16]  A. Ahumada,et al.  Discriminability measures for predicting readability of text on textured backgrounds. , 2000, Optics express.

[17]  Didier Demigny,et al.  Efficient ASIC and FPGA implementations of IIR filters for real time edge detection , 1997, Proceedings of International Conference on Image Processing.

[18]  L. H. A. Lourenco,et al.  Efficient Implementation of Canny Edge Detection Filter for ITK Using CUDA , 2012, 2012 13th Symposium on Computer Systems.

[19]  Rachid Deriche,et al.  Using Canny's criteria to derive a recursively implemented optimal edge detector , 1987, International Journal of Computer Vision.