`filter2`在这段代码中做了什么?

时间:2018-03-01 03:41:18

标签: matlab image-processing filtering

function G=costfunction(im) 
   G=zeros(size(im,1),size(im,2));
   for ii=1:size(im,3) 
      G=G+(filter2([.5 1 .5; 1 -6 1; .5 1 .5],im(:,:,ii))).^2; 
   end
end

这里,im是输入图像(rgb图像)。 这个成本函数将返回什么?

2 个答案:

答案 0 :(得分:3)

这一位:

filter2([.5 1 .5; 1 -6 1; .5 1 .5],im(:,:,ii))

Laplace filter应用于im的一个2D切片。通常,拉普拉斯滤波器实现为[0 1 0; 1 -4 1; 0 1 0][1 1 1; 1 -8 1; 1 1 1]。我想无论是谁编写这段代码都无法在这两者之间做出决定并取平均值。

循环遍历3D图像im中的每个2D切片,并将每个结果的平方加在一起。如果im是RGB图像,它会将滤镜应用于每个颜色通道,并添加结果的平方。

拉普拉斯算子对图像中的细线以及图像边缘周围的响应(正和负)给出强烈的负面响应。通过取平方,所有回答都是积极的。请注意,成本函数在边缘上接近于零,但在边缘内外都很高。

答案 1 :(得分:0)

假设filter2与用于图像处理(在问题中标记)相同,则应进行二维线性过滤,im将过滤其数据具有2d FIR滤波器的矩阵[.5 1 .5; 1 -6 1; .5 1 .5]。 对于返回,G应该是zeros(size(im,1),size(im,2))加上那里处理过的所有图像。