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))开始代码>
i
和j
作为变量名,尽管它们是sqrt(-1)
的关键字。另外,对于你的边缘,你可以取3个相邻像素的中值,而不是完全忽略它们。通常你也会包括中心像素。@bicker:这是一个平均滤波器,而不是中值滤波器。