
程序如下:
clearall
clc
I=imread('up4-Amp.png')
OutImg=I
R=I(:,:,1)
G=I(:,:,2)
B=I(:,:,3)
R=medfilt2(R,[3,3])
G=medfilt2(G,[3,3])
B=medfilt2(B,[3,3])
I1=cat(3,R,G,B) %对彩色图像R,G,B三个通道分别进行3×3模板的中值滤波cat函数用于连接两个矩阵或数组
R=filter2(fspecial('average',3),R)/255
G=filter2(fspecial('average',3),G)/255
B=filter2(fspecial('average',3),B)/255
I2=cat(3,R,G,B) %对彩色图像R,G,B三个通道分别进行3×3模板的均值滤波
figure,imshow(I)
title('原图')
figure,
imshow(I1)
title('中值滤波')
figure,imshow(I2)
title('均值滤波')
扩展资料:注意事项
1、在频域滤波,由于是点乘,所以滤波模板矩阵和图像矩阵必须尺寸一样。
2、因为尺寸一样,它们的原点必须要对齐。
3、因在进行离散傅里叶变换后,在频域点乘,相当于在时域卷积,但是这个时候实际上是对时域周期矩阵进行卷积。直接在时域卷积,matlab默认是在边界补0。
4、Matlabfreqz2()这个函数可以自动得到一个指定尺寸的,对应于时域的频域模板。
5、图像经过傅里叶变换后,它的原点在左上角。而模板经过freqz2后,原点在中心,所以只要平移其中的一个就好了。
6、在对原图像进行傅里叶变换之前,按照一定规则补0就好了。
I=imread('lena.bmp')inf=imfinfo('lena.bmp')
figure,imshow(I)
X=grayslice(I,64)
imshow(X,pink(64))
load trees
figure,image(10,10,X)
imwrite(X,map,'trees.bmp')
imfinfo('trees.bmp')
figure,imshow(X,map)
BW=im2bw(X,map,0.6)
figure,imshow(BW)
I=imread('lena.bmp')
inf=imfinfo('lena.bmp')
figure,imshow(I)
X=grayslice(I,64)
figure,imshow(X,pink(64))
A=imread('lena.bmp')
imshow(A)
B=fftshift(fft2(A))
figure
imshow(log(abs(B)),[8,10])
clc
clear all
I=imread('lena.tif')
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %用中值滤波,多维滤波,使用中心为-4,-8的拉普
% %拉斯滤波器,高斯低通滤波,拉普拉斯滤波器进行滤波处理
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure%figure1
subplot(2,2,1)
imshow(I)
title('原始图像')
J=imnoise(I,'salt &pepper',0.04)%加椒盐噪声
title('加椒盐噪声')
subplot(2,2,2)
imshow(J)
K=medfilt2(J,[4,4])%进行中值滤波
subplot(2,2,3)
imshow(K)
title('进行中值滤波')
h=ones(3,3)/9%多维滤波
w=h
g=imfilter(I,w,'conv','replicate')
subplot(2,2,4)
imshow(g)
title('多维滤波')
%使用中心为-4,-8的拉普拉斯滤波器,
w4=[1 1 1
1 -4 1
1 1 1]
w8=[1 1 1
1 -8 1
1 1 1]
f=im2double(I)
g4=f-imfilter(f,w4,'replicate')
g8=f-imfilter(f,w8,'replicate')
imshow(f)
figure%figure2
subplot(1,2,1)
imshow(g4)
title('中心为-4的拉普拉斯滤波')
subplot(1,2,2)
imshow(g8)
title('中心为-8的拉普拉斯滤波')
h3=fspecial('gaussian',[3,3],0.5)%高斯低通滤波
figure%figure3
B4=filter2(h3,I)
subplot(1,2,1)
imshow(B4,[ ])
title('高斯低通滤波')
h4=fspecial('laplacian',0)%使用拉普拉斯滤波器
B5=filter2(h4,I)
subplot(1,2,2)
imshow(B5,[ ])
title('拉普拉斯滤波器')
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %从空域的角度进行亮度变换
% %把灰度等级是10-100的变化到10-255
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure%figure4
subplot(2,2,1)
imshow(I)
title('原始图像')
J2=imadjust(I,[],[],0.5)% 增强低灰度级
subplot(2,2,2)
imshow(J2)
title('增强低灰度级')
J3=imadjust(I,[ ],[ ],2)%增强高灰度级
subplot(2,2,3)
imshow(J3)
title('增强高灰度级')
a1=100/255%把灰度等级是10-100的变化到10-255
a2=255/255
a3=10/255
J2=imadjust(I,[a3,a1],[a3,a2],[])
subplot(2,2,4)
imshow(J2)
title('把灰度等级是10-100的变化到10-255')
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %从频域的角度进行亮度变换
% %fft2
% %由于能量主要集中在低频部分
% %所以对低频进行处理可以得到理想的效果
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I=imread('lena.tif')
up=0.5%设置处理频率上限
down=0.09%%设置处理频率下限
figure%figure5
subplot(421)
imshow(I)
title('原始图像')
f=double(I)
subplot(4,2,3)
imshow(log(abs(f)),[])
title('unit8转化为double')
g=fft2(f)
g=fftshift(g)
subplot(4,2,5)
imshow(log(abs(g)),[])
title('FFT2变化后的图像')
[M,N]=size(g)% 转换数据矩阵
y1=max(max(abs(g)))%求出最大频率
y2=min(min(abs(g)))%%求出最小频率
y3=(y1-y2)*up+y2%设置滤波上限
y4=(y1-y2)*down+y2%%设置滤波下限
for i=1:M
for j=1:N
if (abs(g(i,j))<y4)
g(i,j)=g(i,j)^1.1%对低频部分进行灰度增强
end
end
end
result=ifftshift(g)
J2=ifft2(result)
J3=uint8(abs(J2))
subplot(427)
imshow(J3,[ ])
title('频域处理后的图像')
subplot(422)
imhist(I,64)
subplot(424)
imhist(f,64)
subplot(426)
imhist(g,64)
subplot(428)
imhist(J3,64)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)