MATLAB: Difference between “Canny” and “Canny_old” in Image Processing toolbox function “edge”

cannycanny_oldedgeImage Processing ToolboxMATLABopencv

Hi,
I was trying to compare OpenCV and Matlab outputs a given test image for Canny edge function and I realized that the "edge" function in matlab provides a "canny" and a "canny_old" implementations.
Can you please provide some reference as to the math behind it and what is the difference between the two?
Thanks & Regards,
Mazhar

Best Answer

Mazhar:
Apologies for such a delayed response. As far as I know, 'canny_old' does not have any relation to the openCV implementation. I would encourage you to avoid using canny_old, as it probably exists only for backward compatibility reasons.
openCV does not use a derivative of gaussian for gradient computations, whereas the MATLAB version does so. Additionally, the use of bwselect in the sub-function 'thinAndThreshold' makes the MATLAB results better looking than the openCV equivalent.
See this post for additional details: https://dsp.stackexchange.com/questions/4716/differences-between-opencv-canny-and-matlab-canny
Are you trying to get the same results that MATLAB provides, using openCV? Could you elaborate on how you are trying to do so?