用它的4个邻域的中值替换每个像素

时间:2013-03-07 14:35:20

标签: image matlab digital

我做了这个代码可以任何人告诉我这是对的如何验证它。

I=imread('cameraman.tif');
[M N]=size(I);
for i=2:M-1
    for j=2:N-1
        x=I(i-1,j);
        y=I(i+1,j);
        z=I(i,j-1);
        zz=I(i,j+1);
        A=[x y z zz];
        J(i,j)=median(A);
    end
end

1 个答案:

答案 0 :(得分:1)

一般来说,你能发现它是否符合预期的唯一方法就是尝试它是否有效。 @Maroun已经描述了这一点。

以下是我注意到的一些事情:

  • 我认为代码没有任何技术问题。

  • 我不是这个主题的专家,但如果您在确定中位数时不想考虑中间点I(i,j),我会感到惊讶。现在你只需向上和向下检查左右。除此之外,你可能想要评估竖直向下和向下。然而,这是一个选择。

  • 另一件需要注意的事情是,目前您的结果将小于原始图像。您可能希望从J=IJ = NaN(size(I));

  • 开始