3、对图像b进行直方图均衡化,显示结果图像和对应直方图。 b=imread('f:\\lena_color.png') c=rgb2gray(b) j=histeq(c)
subplot(2,2,1),imshow(c) subplot(2,2,2),imshow(j)
subplot(2,2,3),imhist(c) %显示原始图像直方图 subplot(2,2,4),imhist(j) %显示均衡化后图像的直方图
4、读入图像c,执行直方图规定化,使图像a的灰度分布与c大致相同,显示变换后图像及对应直方图。 I=imread('f:\\lena.png');
>> J=histeq(I,64); %均衡化成32个灰度级的直方图 >> [counts,x]=imhist(J); %返回直方图图像向量counts b=imread('f:\\1.jpg') Q=rgb2gray(b)
>> M=histeq(Q,counts); %将原始图像Q的直方图变成指定向量counts >> figure,
>> subplot(3,2,1),imshow(I); >> subplot(3,2,2),imshow(Q); >> subplot(3,2,3),imhist(I); >> subplot(3,2,4),imhist(Q)
>> subplot(3,2,5),imhist(J); >> subplot(3,2,6),imhist(M);
实验三 图像变换
一、实验目的
1、熟悉及掌握图像的变换原理及性质,实现图像的傅里叶变换。 二、实验环境
MATLAB 6.5以上版本、WIN XP或WIN2000计算机
三、相关函数 ? 图像的变换 1 fft2
fft2函数用于数字图像的二维傅立叶变换,如: i=imread('e:\\w01.tif');
j=fft2(i);
由于MATLAB无法显示复数图像,因此变换后的结果还需进行求模运算,即调用abs函数。
之后常常还进行对数变换,即调用log函数,以减缓傅里叶谱的快速衰减,更好地显示高频信息。 2 ifft2
ifft2函数用于数字图像的二维傅立叶反变换,如: i=imread('e:\\w01.tif'); j=fft2(i);
k=ifft2(j); 3 fftshift
用于将变换后图像频谱中心从矩阵的原点移动到矩阵的中心 B=fftshift(i)
4 利用fft2计算二维卷积
利用fft2函数可以计算二维卷积,如: a=[8,1,6;3,5,7;4,9,2]; b=[1,1,1;1,1,1;1,1,1]; a(8,8)=0; b(8,8)=0;
c=ifft2(fft2(a).*fft2(b)); c=c(1:5,1:5);
利用conv2(二维卷积函数)校验, 如: a=[8,1,6;3,5,7;4,9,2]; b=[1,1,1;1,1,1;1,1,1]; c=conv2(a,b); 四、实验内容
1、对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。
s=imread('f:\\1.jpg');%读入原图像 i=rgb2gray(s) i=double(i)
j=fft2(i); %傅里叶变换 k=fftshift(j); % 直流分量移到频谱中心 l=log(abs(k)); %对数变换
m=fftshift(j); %直流分量移到频谱中心 RR=real(m); %取傅里叶变换的实部 II=imag(m); %取傅里叶变换的虚部