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

问题描述 投票:1回答:2
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图像)。这个成本函数将返回什么?

matlab image-processing filtering
2个回答
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图像,它会将滤镜应用于每个颜色通道,并添加结果的平方。

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.