picture =imread('pout.tif');
n=415;
m=554;
I=im2double(picture) ;%由于matlab中读入的图像是uint8的,因此将其转换成double型进行运算
for h=1:m
X(1,h)=I(1,h);% 由于第一、二行行,最后一行,倒数第二行,第一、二列,最后一列,倒数二列,不能满足九个邻域,因此我们将它的数据保存起来不变。最后和变化后的数据一起组成图像的灰度矩阵,并显示。
X(2,h)=I(2,h);
%X(3,h)=I(3,h);
%X(413,h)=I(413,h);
X(414,h)=I(414,h);
X(415,h)=I(415,h);
end
for j=1:n
X(j,1)=I(j,1);
X(j,2)=I(j,2);
%X(j,3)=I(j,3);
% X(j,552)=I(j,552);
X(j,553)=I(j,553);
X(j,554)=I(j,554);
end
for i=3:n-2
for j=3:m-2
F1=[I(i-2,j-2),I(i-2,j-1),I(i-2,j),I(i-1,j-2),I(i-1,j-1),I(i-
1,j),I(i,j-2),I(i,j-1),I(i,j)];%取出每个邻域的像素值
F2=[I(i-2,j+1),I(i-2,j-1),I(i-2,j),I(i-1,j+1),I(i-1,j-1),I(i-
1,j),I(i,j+1),I(i,j-1),I(i,j)];
F3=[I(i-2,j+1),I(i-2,j+2),I(i-2,j),I(i-1,j+1),I(i-1,j+2),I(i-
1,j),I(i,j+1),I(i,j+2),I(i,j)];
F4=[I(i+1,j-2),I(i+1,j-1),I(i+1,j),I(i-1,j-2),I(i-1,j-1),I(i-
1,j),I(i,j-2),I(i,j-1),I(i,j)];
F5=[I(i+1,j+1),I(i+1,j-1),I(i+1,j),I(i-1,j+1),I(i-1,j-1),I(i-
1,j),I(i,j+1),I(i,j-1),I(i,j)];
F6=[I(i+1,j+1),I(i+1,j+2),I(i+1,j),I(i-1,j+1),I(i-1,j+2),I(i-
1,j),I(i,j+1),I(i,j+2),I(i,j)];
F7=[I(i+1,j-2),I(i+1,j-1),I(i+1,j),I(i+2,j-2),I(i+2,j-1),I
(i+2,j),I(i,j-2),I(i,j-1),I(i,j)];
F8=[I(i+1,j+1),I(i+1,j-1),I(i+1,j),I(i+2,j+1),I(i+2,j-1),I
(i+2,j),I(i,j+1),I(i,j-1),I(i,j)];
F9=[I(i+1,j+1),I(i+1,j+2),I(i+1,j),I(i+2,j+1),I(i+2,j+2),I
(i+2,j),I(i,j+1),I(i,j+2),I(i,j)];
I1=var(F1);%求方差
I2=var(F2);
I3=var(F3);
I4=var(F4);
I5=var(F5);
I6=var(F6);
I7=var(F7);
I8=var(F8);
I9=var(F9);
shuzu=[I1,I2,I3,I4,I5,I6,I7,I8,I9];%将方差放在一个数组中
sort (shuzu);%对方差排序
switch shuzu(1)%判断最小方差属于哪一个邻域
case I1
junzhi=(I(i-2,j-2)+I(i-2,j-1)+I(i-2,j)+I(i-1,j-2)+I(i-1,j-1)
+I(i-1,j)+I(i,j-2)+I(i,j-1)+I(i,j))/9;
case I2
junzhi=(I(i-2,j+1)+I(i-2,j-1)+I(i-2,j)+I(i-1,j+1)+I(i-1,j-1)+I
(i-1,j)+I(i,j+1)+I(i,j-1)+I(i,j))/9;
case I3
junzhi=(I(i-2,j+1)+I(i-2,j+2)+I(i-2,j)+I(i-1,j+1)+I(i-1,j+2)
+I(i-1,j)+I(i,j+1)+I(i,j+2)+I(i,j))/9;
case I4
junzhi=(I(i+1,j-2)+I(i+1,j-1)+I(i+1,j)+I(i-1,j-2)+I(i-1,j-1)
+I(i-1,j)+I(i,j-2)+I(i,j-1)+I(i,j))/9;
case I5
junzhi=(I(i+1,j+1)+I(i+1,j-1)+I(i+1,j)+I(i-1,j+1)+I(i-1,j-1)
+I(i-1,j)+I(i,j+1)+I(i,j-1)+I(i,j))/9;
case I6
junzhi=(I(i+1,j+1)+I(i+1,j+2)+I(i+1,j)+I(i-1,j+1)+I(i-1,j+2)
+I(i-1,j)+I(i,j+1)+I(i,j+2)+I(i,j))/9;
case I7
junzhi=(I(i+1,j-2)+I(i+1,j-1)+I(i+1,j)+I(i+2,j-2)+I(i+2,j-1)
+I(i+2,j)+I(i,j-2)+I(i,j-1)+I(i,j))/9;
case I8
junzhi=(I(i+1,j+1)+I(i+1,j-1)+I(i+1,j)+I(i+2,j+1)+I(i+2,j-1)
+I(i+2,j)+I(i,j+1)+I(i,j-1)+I(i,j))/9;
case I9
junzhi=(I(i+1,j+1)+I(i+1,j+2)+I(i+1,j)+I(i+2,j+1)+I(i+2,j+2)
+I(i+2,j)+I(i,j+1)+I(i,j+2)+I(i,j))/9;
end
X(i,j)=junzhi;%将九个邻域中像素最均匀的邻域的均值赋给该像素
end
end
zuihou=im2uint8(X);%将double型数据转换成uint8
imshow(picture),title('原图');
figure;
imshow(zuihou),title('最大均匀性平滑后的图像');
??? F1=[I(i-2,j-2),I(i-2,j-1),I(i-2,j),I(i-1,j-2),I(i-1,j-1),I(i-
|
Error: Expression or statement is incorrect--possibly unbalanced (, {, or [.