用matlab对图像进行平滑处理

2019-04-15 15:09发布

pic=imread('1.jpg');
data=rgb2gray(pic);
[m,n]=size(data);
data0=zeros(m,n);
mob=[1 1 1;1 1 1;1 1 1];
for i=2:m-1
    for j=2:n-1
        part=data(i-1:i+1,j-1:j+1);
        part=double(part);        
        temp=mob.*part;
        data0(i,j)=sum(sum(temp));
    end
end
imshow(uint8(data0));
-----------------------
data=imread('1.jpg');  %图像读取
data0=rgb2gray(data);    %转化为灰度图像
figure,imshow(data0);
title('原灰度图像');
data1=imnoise(data0,'salt & pepper',0.02);%加椒盐噪声
figure,imshow(data1);
title('加椒盐噪音的灰度图像');
mob=[1 1 1;1 1 1;1 1 1]/9;  %模板
[m,n]=size(data1);   %确定灰度图像长和宽即矩阵的行和列
data2=zeros(m,n);    %建立和图像长和宽相同的矩阵   
for i=2:m-1
    for j=2:n-1     
        part=data1(i-1:i+1,j-1:j+1); %选取要处理图像的一部分
        part=double(part);   %转化为双精度
        temp=mob.*part;    %将选取的一部分图像和模板进行卷积
        data2(i,j)=sum(sum(temp));  %求卷积和
        %对矩阵进行sum() 将每一行元素相加,
        %得到一维向量,与矩阵列数相同,两次
        %sum()求出整个矩阵的和

    end
end
figure,imshow(uint8(data2));  %将图像显示
title('平滑处理后的灰度图像');