上机实验

  • 格式:doc
  • 大小:398.50 KB
  • 文档页数:9

实验一Matlab图像工具箱的使用读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。

a=imread('f:\1.jpg')i = rgb2gray(a)I = im2bw(a,0.5)subplot(3,1,1);imshow(a);title('原图像')subplot(3,1,2);imshow(i);title('灰度图像')subplot(3,1,3);imshow(I);title('二值图像')实验二图像变换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); %取傅里叶变换的虚部A=sqrt(RR.^2+II.^2); %计算频谱府幅值A=(A-min(min(A)))/(max(max(A)))*255; % 归一化b=circshift(s,[800 450]); %对图像矩阵im中的数据进行移位操作b=rgb2gray(b)b=double(b)c=fft2(b); %傅里叶变换e=fftshift(c); % 直流分量移到频谱中心l=log(abs(e)); %对数变换f=fftshift(c); %直流分量移到频谱中心WW=real(f); %取傅里叶变换的实部B ZZ=imag(f); %取傅里叶变换的虚部B=sqrt(WW.^2+ZZ.^2); %计算频谱府幅值B=(B-min(min(B)))/(max(max(B)))*255; % 归一化subplot(2,2,1);imshow(s);title('原图像')subplot(2,2,2);imshow(uint8(b));;title('平移图像')subplot(2,2,3);imshow(A);title('离散傅里叶频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱')2.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。

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); %取傅里叶变换的虚部A=sqrt(RR.^2+II.^2); %计算频谱府幅值A=(A-min(min(A)))/(max(max(A)))*255; % 归一化b=imrotate(s, -90); %对图像矩阵im中的数据进行移位操作b=rgb2gray(b)b=double(b)c=fft2(b); %傅里叶变换e=fftshift(c); % 直流分量移到频谱中心l=log(abs(e)); %对数变换f=fftshift(c); %直流分量移到频谱中心WW=real(f); %取傅里叶变换的实部B ZZ=imag(f); %取傅里叶变换的虚部B=sqrt(WW.^2+ZZ.^2); %计算频谱府幅值B=(B-min(min(B)))/(max(max(B)))*255; % 归一化subplot(2,2,1);imshow(s);title('原图像')subplot(2,2,2);imshow(uint8(b));;title('平移图像')subplot(2,2,3);imshow(A);title('离散傅里叶频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱')实验三图像灰度修正技术和直方图均衡化1.显示一幅灰度图像a,改变图像亮度使其整体变暗得到图像b,显示两幅图像的直方图。

a=imread('f:\lena_color.png')c=rgb2gray(a)b=c-46subplot(2,1,1);imhist(c);title('原图像')subplot(2,1,2);imhist(b);title('变暗后的图像')2.对图像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) %显示均衡化后图像的直方图3.读入图像c,执行直方图规定化,使图像a的灰度分布与c大致相同,显示变换后图像及对应直方图。

I=imread('f:\lena.png');>> J=histeq(I,64); %均衡化成32个灰度级的直方图>> [counts,x]=imhist(J); %返回直方图图像向量countsb=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.采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波,窗口分别采用3*3,5*5,7*7I = imread('f:\lena.png');J = imnoise(I,'salt & pepper',0.04);K1 = medfilt2(J,[3 3]);%对矩阵i进行二维中值滤波,领域为3*3K2 = medfilt2(J,[5 5]);K3 = medfilt2(J,[7 7]);subplot(2,2,1);imshow(J);title('椒盐噪声干扰图像')subplot(2,2,2);imshow(K1);title('领域为3*3二维中值滤波')subplot(2,2,3);imshow(K2);title('领域为5*5二维中值滤波')subplot(2,2,4);imshow(K3);title('领域为7*7二维中值滤波')2.采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波I = imread('f:\lena.png');j=imnoise(i,'gaussian',0,0.02);%模拟均值为0方差为0.02的高斯噪声,M= filter2(fspecial('average',9),J)/255; %模板尺寸为9subplot(2,1,1);imshow(j);title('噪声干扰图像')subplot(2,1,2);imshow(M);title('改进后的图像')实验五图像的锐化采用三种不同算子对图像进行锐化处理。

i=imread('f:\1.jpg')I=rgb2gray(s)H=fspecial('sobel')%应用Sobel算子锐化图像I1=filter2(H,I)%Sobel算子滤波锐化H=fspecial('prewitt')%应用prewitt算子锐化图像I2=filter2(H,I)%prewitt算子滤波锐化H=fspecial('log')%应用log算子锐化图像I3=filter2(H,I)%log算子滤波锐化subplot(2,2,1);imshow(i);title('原图像')subplot(2,2,2);imshow(I1);title('Sobel算子锐化图像') subplot(2,2,3);imshow(I2);title('prewitt算子锐化图像') subplot(2,2,4);imshow(I3);title('log算子锐化图像')。