DOG算子是一种边缘检测算子,用于Sift,Canny等算法中。
matlab实现:
function [output] = DOG(source,sigma1,sigma2,width) % sigma1,sigma2: Parameter of Gaussian Distribution % width: Width of Gaussian Window output = uint8(GaussianFilter(source,sigma1,width)-GaussianFilter(source,sigma2,width)); end
function [output] = GaussianFilter(source,sigma,width) filter = zeros(width,width); for i = -1*floor(width/2):floor(width/2) for j=-1*floor(width/2):floor(width/2) filter(i+1+floor(width/2),j+1+floor(width/2))=exp(-(i^2+j^2)/(2*sigma^2)); end end filter = filter/sum(sum(filter)); output = conv2(source,filter); output = uint8(output); end
原文:http://www.cnblogs.com/Student-W/p/3620688.html