Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 将每个像素替换为其4个邻域的中值_Image_Matlab_Digital - Fatal编程技术网

Image 将每个像素替换为其4个邻域的中值

Image 将每个像素替换为其4个邻域的中值,image,matlab,digital,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 一般来说,你能发现它是否

我做了这个代码,谁能告诉我这是对的,我怎么能验证它

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

一般来说,你能发现它是否达到你期望的效果的唯一方法就是尝试它是否有效@马龙已经描述了这一点

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

  • 我相信代码没有技术问题

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

  • 另一件需要注意的事情是,当前的结果将小于原始图像。可能您想从
    J=I
    J=NaN(大小(I))开始


创建一个简单的矩阵,然后打印出来。将其传递给函数。打印出来。看看它是否有效。此外,您可以向其传递图像,如果图像模糊,可能您做得对。您是否有机会访问图像处理工具箱,因为:这个问题在代码审阅时更合适。顺便说一句:但您的代码看起来确实正确。您应该避免在matlab中使用
i
j
作为变量名,尽管它们是
sqrt(-1)
的关键字。另外,对于你的边缘,你可以取3个相邻像素的中值,而不是完全忽略它们。通常你也会包括中心像素。@bicker:这是一个平均滤波器,而不是中值滤波器。