实验一 图像的点运算
实验1.1 直方图
一.实验目的
1.熟悉matlab图像处理工具箱及直方图函数的使用;
2.理解和掌握直方图原理和方法;
二.实验设备
1.PC机一台;2.软件matlab。
三.程序设计
在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像
subplot(1,2,1),imshow(I) %输出图像
title('原始图像') %在原始图像中加标题
subplot(1,2,2),imhist(I) %输出原图直方图
title('原始图像直方图') %在原图直方图上加标题
四.实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab环境;
2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果;
5.结束运行,退出;
五.实验结果
观察图像matlab环境下的直方图分布。
(a)原始图像 (b)原始图像直方图
六.实验报告要求
1、给出实验原理过程及实现代码;
2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。
实验1.2 直方图均衡化
一.实验目的
1.熟悉matlab图像处理工具箱中直方图均衡化函数的使用;
2.理解和掌握直方图均衡化原理和实现方法;
二.实验设备
1.PC机一台;
2.软件matlab;
三.程序设计
在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像
subplot(2,2,1),imshow(I) %输出图像
title('原始图像') %在原始图像中加标题
subplot(2,2,3),imhist(I) %输出原图直方图
title('原始图像直方图') %在原图直方图上加标题
a=histeq(I,256); %直方图均衡化,灰度级为256
subplot(2,2,2),imshow(a) %输出均衡化后图像
title('均衡化后图像') %在均衡化后图像中加标题
subplot(2,2,4),imhist(a) %输出均衡化后直方图
title('均衡化后图像直方图') %在均衡化后直方图上加标题
四.实验步骤
1. 启动matlab:双击桌面matlab图标启动matlab环境;
2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的灰度均衡函数,设置参数;最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果;
5.结束运行,退出;
五.实验结果
观察matlab环境下图像灰度均衡结果及直方图分布。
(a)原始图像 (b)均衡化后图像
(c)原始图像直方图 (d)均衡化后图像直方图
实验二 图像滤波
实验2.1 3*3均值滤波
一.实验目的
1.熟悉matlab图像处理工具箱及均值滤波函数的使用;
2.理解和掌握3*3均值滤波的方法和应用;
二.实验设备
1.PC机一台;
2.软件matlab;
三.程序设计
在matlab环境中,程序首先读取图像,然后调用图像增强(均值滤波)函数,设置相关参数,再输出处理后的图像。
I = imread('cameraman.tif');
figure,imshow(I);
J=filter2(fspecial(‘average’,3),I)/255;
figure,imshow(J);
四.实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab环境;
2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的图像增强(均值滤波)函数,设置参数;最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果;
5.结束运行,退出;
五.实验结果
观察matlab环境下原始图像经3*3均值滤波处理后的结果。
(a)原始图像 (b)3*3均值滤波处理后的图像
图(3)
实验2.2 3*3中值滤波
一.实验目的
1.熟悉matlab图像处理工具箱及中值滤波函数的使用;
2.理解和掌握中值滤波的方法和应用;
二.实验设备
1.PC机一台;
2.软件matlab;
三.程序设计
在matlab环境中,程序首先读取图像,然后调用图像增强(中值滤波)函数,设置相关参数,再输出处理后的图像。
I = imread('cameraman.tif');
figure,imshow(I);
J=medfilt2(I,[5,5]);
figure,imshow(J);
四.实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab环境;
2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的图像增强(中值滤波)函数,设置参数;最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果;
5.结束运行,退出;
五.实验结果
观察matlab环境下原始图像经3*3中值滤波处理后的结果。
(a)原始图像 (b)3*3中值滤波处理后的图像
图(4)
实验三 图像几何变换
实验3.1 图像的缩放
一.实验目的
1.熟悉matlab图像处理工具箱及图像缩放函数的使用;
2.掌握图像缩放的方法和应用;
二.实验设备
1.PC机一台;
2.软件matlab;
三.程序设计
在matlab环境中,程序首先读取图像,然后调用图像缩放函数,设置相关参数,再输出处理后的图像。
I = imread('cameraman.tif');
figure,imshow(I);
scale = 0.5;
J = imresize(I,scale);
figure,imshow(J);
四.实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab环境;
2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的图像缩放函数,设置参数;最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果;
5.结束运行,退出;
五.实验结果
观察matlab环境下图像缩放后的结果。
(a)原始图像 (b)缩放后的图像
图(5)
实验3.2 图像旋转
一.实验目的
1.熟悉matlab图像处理工具箱及图像旋转函数的使用;
2.理解和掌握图像旋转的方法和应用;
二.实验设备
1.PC机一台;
2.软件matlab;
三.程序设计
在matlab环境中,程序首先读取图像,然后调用图像旋转函数,设置相关参数,再输出处理后的图像。
I = imread('cameraman.tif');
figure,imshow(I);
theta = 30;
K = imrotate(I,theta); % Try varying the angle, theta.
figure, imshow(K)
四.实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab环境;
2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的图像旋转函数,设置参数;最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果;
5.结束运行,退出;
五.实验结果
观察matlab环境下图像旋转后的结果。
(a)原始图像 (b)旋转后的图像
图(7)
实验四 图像边缘检测
实验4.1 边缘检测(Sobel、Prewitt、Log边缘算子)
一.实验目的
1.熟悉matlab图像处理工具箱及图像边缘检测函数的使用;
2.理解和掌握图像边缘检测(Sobel、Prewitt、Log边缘算子)的方法和应用;
二.实验设备
1.PC机一台;
2.软件matlab;
三.程序设计
在matlab环境中,程序首先读取图像,然后调用图像边缘检测(Sobel、Prewitt、缘算子)函数,设置相关参数,再输出处理后的图像。
I = imread('cameraman.tif');
J1=edge(I,'sobel');
J2=edge(I,'prewitt');
J3=edge(I,'log');
边Log
subplot(1,4,1),imshow(I);
subplot(1,4,2),imshow(J1);
subplot(1,4,3),imshow(J2);
subplot(1,4,4),imshow(J3);
四.实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab环境;
2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的边缘检测(Sobel边缘算子、Prewitt边缘算子、Log边缘算子)函数,设置参数;最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果;
5.结束运行,退出;
五.实验结果
观察经过图像边缘检测(Sobel、Prewitt、Log边缘算子)处理后的结果。
原始图像
(b)Sobel边缘算子
(a)
(c)Prewitt边缘算子 (d)Log边缘算子
图(7)
六.实验报告要求
输入一幅灰度图像,给出其图像边缘检测(Sobel、Prewitt、Log边缘算子)后的结果并进行分析对比。
实验五 图像傅立叶变换
%%%%%图像傅里叶变换实验
I1=imread(‘lena.tif\\); %读入原图像文件
I2=imread('cell.tif'); %读入原图像文件
I3=imread('cameraman.tif'); %读入原图像文件
subplot(3,2,1);imshow(I1); %显示原图像
fftI1=fft2(I1); %二维离散傅立叶变换
sfftI1=fftshift(fftI1); %直流分量移到频谱中心
RR1=real(sfftI1); %取傅立叶变换的实部
II1=imag(sfftI1); %取傅立叶变换的虚部
A1=sqrt(RR1.^2+II1.^2); %计算频谱幅值
A1=(A1-min(min(A1)))/(max(max(A1))-min(min(A1)))*225;%归一化
subplot(3,2,2);imshow(A1); %显示原图像的频谱
subplot(3,2,3);imshow(I2); %显示原图像
fftI2=fft2(I2); %二维离散傅立叶变换
sfftI2=fftshift(fftI2); %直流分量移到频谱中心
RR2=real(sfftI2); %取傅立叶变换的实部
II2=imag(sfftI2); %取傅立叶变换的虚部
A2=sqrt(RR2.^2+II2.^2); %计算频谱幅值
A2=(A2-min(min(A2)))/(max(max(A2))-min(min(A2)))*225;%归一化
subplot(3,2,4);imshow(A2); %显示原图像的频谱
subplot(3,2,5);imshow(I3); %显示原图像
fftI3=fft2(I3); %二维离散傅立叶变换
sfftI3=fftshift(fftI3); %直流分量移到频谱中心
RR3=real(sfftI3); %取傅立叶变换的实部
II3=imag(sfftI3); %取傅立叶变换的虚部
A3=sqrt(RR3.^2+II3.^2); %计算频谱幅值
A3=(A3-min(min(A3)))/(max(max(A3))-min(min(A3)))*225;%归一化
subplot(3,2,6);imshow(A3); %显示原图像的频谱
实验六 图像分割
%直方图双峰法分割
I1=imread('cell.tif'); %读入原图像文件
subplot(2,3,1);imshow(I1); %显示原图像
subplot(2,3,2),imhist(I1);
level=graythresh(I1);
I2=im2bw(I1,level);
subplot(2,3,3),imshow(I2);
%边界检测法分割
I3=imread('cell.tif'); %读入原图像文件
subplot(2,3,4);imshow(I3); %显示原图像
I4=edge(I3,'sobel');
[B,L]=bwboundaries(I4,'noholes');
subplot(2,3,5),imshow(-im2bw(L));
hold on
for k=1:length(B)
boundary=B{k};
plot(boundary(:,2),boundary(:,1),'w','linewidth',2);
end
实验七 图像退化复原
%%%%%%%%%%%%%%%%%%%%图像复原实验(维纳滤波)
I=imread('e:\estimage\\Lena.bmp');
%I=rgb2gray(I);
J1=imnoise(I,'gaussian',0,0.02);
J2=imnoise(I,'salt & pepper',0.02);
subplot(2,5,1),imshow(I);
title('original image');
subplot(2,5,2),imshow(J1);
title('gaussian nosied image');
subplot(2,5,7),imshow(J2);
title('salt nosied image');
K1=wiener2(J1,[3 3]); ;%gaussian noise
K2=wiener2(J1,[5 5]);
K3=wiener2(J1,[9 9]);
subplot(2,5,3),imshow(K1);
title('wiener3*3 image');
subplot(2,5,4),imshow(K2);
title('wiener5*5 image');
subplot(2,5,5),imshow(K3);
title('wiener9*9 image');
K4=wiener2(J2,[3 3]);%salt pepper noise
K5=wiener2(J2,[5 5]);
K6=wiener2(J2,[9 9]);
subplot(2,5,8),imshow(K4);
title('wiener3*3 image');
subplot(2,5,9),imshow(K5);
title('wiener5*5 image');
subplot(2,5,10),imshow(K6);
title('wiener9*9 image');
实验八 图像代数运算
图像代数(加与减)运算:
I=imread('lena.jpg');
J=rgb2gray(I);
K=histeq(J,256);
subplot(2,2,1),imshow(J); title('原始图像J')
subplot(2,2,2),imshow(K); title('直方图均衡化图像K') G=double(J)-double(K);
subplot(2,2,3),imshow(uint8(G));title('J-K')
H=double(K)+double(J);
subplot(2,2,4),imshow(uint8(H)); title('J+K')