一.图像几何变化
(1)放大,缩小,旋转
程序:
I=imread('111.jpg');
J=imresize(I,1.5);
L=imresize(I,0.75);
K=imrotate(I,35,'bilinear');
subplot(221),subimage(I); title('原图像');
subplot(222),subimage(J); title('放大后图像');
subplot(223),subimage(L); title('缩小后图像');
subplot(224),subimage(K);title('旋转后图像');
二.图像频域变换
(1)傅里叶变换
真彩图像灰度图像傅里叶变换谱程序:I=imread('111.jpg');
figure(1);
imshow(I);
B=rgb2gray(I);
figure(2);
imshow(B)
D=fftshift(fft2(B));
figure(3);
imshow(log(abs(D)),[ ]);
(2)离散余弦变换
真彩图灰度图进行离散余弦变换后程序:
RGB=imread('111.jpg');
figure(1);
imshow(RGB);
G=rgb2gray(RGB);
figure(2);
imshow(G);
DCT=dct2(G);
figure(3);
imshow(log(abs(DCT)),[]);
三.图像增强:
(1)指数变换
程序:
f=imread('111.jpg')
f=double(f);
g=(2^2*(f-1))-1;
f=uint8(f);
g=uint8(g);
subplot(1,2,1),subimage(f);
subplot(1,2,2),subimage(g);
(2)直方图均衡
程序:
I=imread('111.jpg');
I=rgb2gray(I);
figure
subplot(221);imshow(I);
subplot(222);imhist(I)
I1=histeq(I);
figure;
subplot(221);imshow(I1)
subplot(222);imhist(I1)
(3)空域滤波增强
锐化滤波(Roberts算子Sobel算子拉普拉斯算子)
程序:
I=imread('000.tif');
J1=edge(I,'roberts'); %Roberts算子figure;
imshow(uint8(I));title('原图');
figure;
subplot(221);imshow(J1);title('Roberts算子锐化'); J2=fspecial('Sobel'); %Sobel算子J2=J2';
TJ1=filter2(J2,I);
J2=J2';
TJ2=filter2(J2,I);
subplot(222),imshow(TJ1,[]),title('垂直模板'); subplot(223),imshow(TJ2,[]),title('水平模板');
f=fspecial('laplacian'); %拉普拉斯算子J3=imfilter(I,f);
subplot(224),imshow(J3);title('拉普拉斯算子');
平滑滤波及中值滤波
程序:
I=imread('000.tif');
J=imnoise(I,'salt & pepper',0.02);
subplot(221),imshow(I);title('原图像');
subplot(222),imshow(J);title('添加椒盐噪声图像');
k1=filter2(fspecial('average',3),J); %进行3*3模板平滑滤波k2=medfilt2(J); %进行3*3模板中值滤波subplot(223),imshow(uint8(k1));title('3*3模板平滑滤波');
subplot(224),imshow(k2);title('3*3模板中值滤波');
(4)频域滤波增强
低通滤波
程序:
I=imread('000.tif');
J=imnoise(I,'salt & pepper',0.02);
subplot(121),imshow(J);title('添加椒盐噪声图像');
J=double(J);
f=fft2(J); %采用傅里叶变换
g=fftshift(f) %数据矩阵平衡
[M,N]=size(f);
n=3;d0=20
n1=floor(M/2)
n2=floor(N/2)
for i=1:M %进行低通滤波for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2)
h=1/(1+(d/d0)^(2*n));
g1(i,j)=h*g(i,j);
end
end
g1=ifftshift(g1);
g1=uint8(real(ifft2(g1)));
subplot(122);imshow(g1);title('低通滤波后的图像'); %显示低通滤波结果 高通滤波
程序:
I=imread('000.tif');
J=imnoise(I,'salt & pepper',0.02);
subplot(221),imshow(J);title('添加椒盐噪声图像');
J=double(J);
f=fft2(J); %采用傅里叶变换
[M,N]=size(f);
n=2;d0=20
n1=floor(M/2)
n2=floor(N/2)
for i=1:M %进行巴特沃斯高通滤波及巴特沃斯高通加强滤波for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);
if d==0;
h1=0;
h2=0.5;
else
h1=1/(1+(d0/d)^(2*n));
h2=1/(1+(d0/d)^(2*n))+0.5;
end
gg1(i,j)=h1*g(i,j);
gg2(i,j)=h2*g(i,j);
end
end
gg1=ifftshift(gg1);
gg1=uint8(real(ifft2(gg1)));
subplot(222);imshow(gg1);title('巴特沃斯高通滤波后的图像'); %显示结果
gg2=ifftshift(gg2);
gg2=uint8(real(ifft2(gg2)));
subplot(223);imshow(gg2);title('巴特沃斯高通滤波加强后的图像');
同态滤波
程序:
J=imread('000.tif');
subplot(121);imshow(J);title('原图像');
J=double(J);
f=fft2(J); %采用傅里叶变换
[M,N]=size(f);
d0=10;
r1=0.5;
rh=2
c=4;
n1=floor(M/2);
n2=floor(N/2);
for i=1:M %进行同态滤波for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2)
h=(rh-r1)*(1-exp(-c*(d.^2/d0.^2)))+r1;
g(i,j)=h*g(i,j);
end
end
g=ifftshift(g);
g=uint8(real(ifft2(g)));
subplot(122);imshow(g);title('同态滤波后的图像'); %显示同态滤波结果。