⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 canny.m

📁 MATLAB Functions for Multiple View Geometry
💻 M
字号:
% CANNY - Canny edge detection%% Function to perform Canny edge detection. Code uses modifications as% suggested by Fleck (IEEE PAMI No. 3, Vol. 14. March 1992. pp 337-345)%% Usage: [gradient or] = canny(im, sigma)%% Arguments:   im    - image to be procesed%              sigma - standard deviation of Gaussian smoothing filter%                      (typically 1)%% Returns:     gradient - edge strength image (gradient amplitude)%              or       - orientation image (in degrees 0-180, positive%                         anti-clockwise)%% See also:  NONMAXSUP, HYSTHRESH% Copyright (c) 1999-2003 Peter Kovesi% School of Computer Science & Software Engineering% The University of Western Australia% http://www.csse.uwa.edu.au/% % Permission is hereby granted, free of charge, to any person obtaining a copy% of this software and associated documentation files (the "Software"), to deal% in the Software without restriction, subject to the following conditions:% % The above copyright notice and this permission notice shall be included in all% copies or substantial portions of the Software.%% The Software is provided "as is", without warranty of any kind.% April 1999    Original version% January 2003  Error in calculation of d2 correctedfunction [gradient, or] = canny(im, sigma)[rows, cols] = size(im);im = double(im);         % Ensure doublehsize = [6*sigma+1, 6*sigma+1];   % The filter size.gaussian = fspecial('gaussian',hsize,sigma);im = filter2(gaussian,im);        % Smoothed image.h =  [  im(:,2:cols)  zeros(rows,1) ] - [  zeros(rows,1)  im(:,1:cols-1)  ];v =  [  im(2:rows,:); zeros(1,cols) ] - [  zeros(1,cols); im(1:rows-1,:)  ];d1 = [  im(2:rows,2:cols) zeros(rows-1,1); zeros(1,cols) ] - ...                               [ zeros(1,cols); zeros(rows-1,1) im(1:rows-1,1:cols-1)  ];d2 = [  zeros(1,cols); im(1:rows-1,2:cols) zeros(rows-1,1);  ] - ...                               [ zeros(rows-1,1) im(2:rows,1:cols-1); zeros(1,cols)   ];X = h + (d1 + d2)/2.0;Y = v + (d1 - d2)/2.0;gradient = sqrt(X.*X + Y.*Y); % Gradient amplitude.or = atan2(-Y, X);            % Angles -pi to + pi.neg = or<0;                   % Map angles to 0-pi.or = or.*~neg + (or+pi).*neg; or = or*180/pi;               % Convert to degrees.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -