什么是高斯的二阶导数?

时间:2014-04-09 02:25:04

标签: image-processing computer-vision

我想在我的图像的每个像素上找到边缘幅度,为此我需要应用Guassian滤波器的二阶导数。我正在使用索贝尔。它是正确的还是我应该使用其他过滤器?

 Sobel(src,magY,CV_32F,0,1,size);

这是图片

enter image description here

在算法中写道,使用的可操纵滤波器是二阶导数 高斯。并通过绘制边缘幅度来输出

enter image description here

我试图使用索贝尔,但我没有得到这个输出。我也试过拉普拉斯,但输出与上面的不相似。

2 个答案:

答案 0 :(得分:0)

要找到边缘幅度(如非常基本的边缘检测方法),您只需使用" imfilter" 喜欢在

filter = fspecial('gaussian',h,sigma); %create a gaussian filter
filtered = imfilter(img, filter);  %gaussian convolved with image
figure;imshow(filtered,[]);        %you can see a blurred version of your image
[fx,fy] = gradient(filtered);      %take that blurred image's derivative

然后在

中找到衍生物的大小
edgemap = fx.*fx + fy.*fy;     

如果您愿意,可以规范化此边图或应用阈值。

答案 1 :(得分:0)

高斯的二阶导数是什么意思?如果你试图在图像的每个像素处获得边缘幅度,你可以应用高斯差分,这基本上是2高斯模糊图像之间的差异,每个模糊它自己的西格玛/内核大小。显示内核大小为3和1的DoG方法的c ++代码如下所示:

cv::GaussianBlur(imagep,image1, cv::Size(3,3), 0, 0, cv::BORDER_DEFAULT ); 
cv::GaussianBlur(imagep,image2, cv::Size(1,1), 0, 0, cv::BORDER_DEFAULT );
finalImage=image2-image1;

差异将是左边缘,因为DoG是带通,高频噪声被过滤掉,而低于带通下限的低频将是对象的同质部分。所以在乐队内的任何东西都会留下边缘。

从那里你应该能够找到你的优势。

希望以某种方式帮助你。如果您需要更多帮助,或者这不是您要求的,请随时发表评论,我会尽力回复(: