利用MATLAB实现对一幅彩色图像的高斯滤波(不采用MATLAB函数)。

利用rgb三通道分别高斯滤波的方案完成对彩色图像的高斯滤波

function gaosilvbo()
I=imread('1.jpeg');
I= imnoise(I,'gaussian'); %加噪
imshow(I);
I1=I(:,:,1);%提取红色分量
I2=I(:,:,2);%提取绿色分量
I3=I(:,:,3);%提取蓝色分量
I1=gaosi(I1);   %构造的函数
I2=gaosi(I2);
I3=gaosi(I3);
c=cat(3,I1,I2,I3);  %cat用于构造多维数组
subplot(1,2,1);imshow(I),title('原图');
subplot(1,2,2);imshow(c),title('myself高斯滤波');

%--------------------------------------------------------------------------------------------------------------------
function d=gaosi(I)%构造高斯函数
OriImage_noise=I;
[ori_row,ori_col]=size(OriImage_noise);
sigma = 0.8; %sigma赋值
N = 7; %大小是(2N+1)×(2N+1)
N_row = 2N+1;
H = []; %求高斯模板H
for i=1:N_row
for j=1:N_row
fenzi=double((i-N-1)2+(j-N-1)2);
H(i,j)=exp(-fenzi/(2
sigmasigma))/(2pi*sigma);
end
end
H=H/sum(H(冒号)); %归一化(汉字冒号改为“ :”后运行)

desimg=zeros(ori_row,ori_col); %滤波后图像
for i=1:ori_row
for j=1:ori_col
desimg(i,j)=OriImage_noise(i,j);
end
end

temp=[];
for ai=N+1:ori_row-N-1
for aj=N+1:ori_col-N-1
temp=0;
for bi=1:N_row
for bj=1:N_row
temp= temp+(desimg(ai+bi-N,aj+bj-N)*H(bi,bj));
end
end
desimg(ai,aj)=temp;
end
end
desimg=uint8(desimg);
d=desimg;

利用MATLAB实现对一幅彩色图像的高斯滤波(不采用MATLAB函数)。_第1张图片

支持可以关注我哦,持续分享编写的代码。

你可能感兴趣的:(MTLAB-图像处理,matlab,图像处理)