数字图像处理报告.docx
《数字图像处理报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理报告.docx(23页珍藏版)》请在冰豆网上搜索。
数字图像处理报告
开课学院及实验室:
实验时间:
学生姓名
学号
成绩
学生所在学院
年级/专业/班
课程名称
数字图像处理
课程代码
实验项目名称
Matlab图像处理工具箱的初步练习
项目代码
指导教师
项目学分
一、实验目的和任务
1、 初步了解与掌握MATLAB语言的基本用法;
2、 掌握MATLAB语言中图象数据与信息的读取方法;
3、 掌握在MATLAB语言中图像类型的转换。
二、实验设备、仪器及器材
1、计算机
2、MatLab软件/语言包括图像处理工具箱(ImageProcessingToolbox)
3、实验所需要的图片
三、实验原理
将数字图像的RGB表示转换为YUV表示;
Y=0.30R+0.59G+0.11B
U=0.70R-0.59G-0.11B
V=-0.30R-0.59G+0.89B
四、实验步骤(按照实际操作过程)
1、阅读资料并熟悉MatLab的基本操作
2、读取MATLAB中的图象数据
3、显示MATLAB中的图象文件。
用MATLAB在自建的文件夹中建立m文件,在这个文件的程序将MATLAB目录下work文件夹中的tree.tif图象文件读出,用到imread,imfinfo等命令,观察一下图象数据,了解一下数字图象在MATLAB中的处理就是处理一个矩阵的本质。
4、将3中的图象显示出来(用imshow)。
5、对MATLAB目录下work文件夹中的flowers.tif进行真彩色图像、索引色图像、灰度图像、二值图像之间的相互变换,并显示。
6、进行真彩色图像RGB(lenacolor.jpg)、YIQ图像、HSV图像、YcbCr图像的相互转换,并显示。
五、实验过程记录(数据、图表、计算等)
1、学习Matlab基本操作。
2、读取并显示tree.tif图象。
[X,Map]=imread('trees.tif','tif')
imshow(X,Map)
3、对flowers.tif图像进行真彩色图像、索引色图像、灰度图像、二值图像之间的相互变换,并显示。
程序如下:
%原图像
[X,MAP]=imread('lenacolor.jpg','jpg');
imshow(X,MAP),title('lenacolor.tif')
%真彩色
RGB=imread('lenacolor.jpg','jpg');
imshow(RGB),title('真彩色')
%真彩色→索引色图像
map=jet(256);
SY=rgb2ind(RGB,map);
imshow(SY),title('真彩色→索引色图像')
%索引色→真彩色图像
ZC=ind2rgb(SY,map);
imshow(ZC),title('索引色→真彩色图像')
%索引色→灰度图像
gray2=ind2gray(SY,map);
imshow(gray2),title('索引色→灰度图像')
%真彩色→灰度图像
gray1=rgb2gray(RGB)
imshow(gray1),title('真彩色→灰度图像')
%二值图像
BW=im2bw(RGB,0.5);
imshow(BW),title('二值图像')
4、进行真彩色图像RGB(lenacolor.jpg)、YIQ图像、HSV图像、YcbCr图像的相互转换,并显示。
程序如下:
%真彩色
RGB=imread('lenacolor.jpg')
imshow(RGB),title('lenacolor.tif-真彩色')
%RGB→YIQ图像
RGB1=RGB
map=jet(256)
yiqmap=rgb2ntsc(map)
YIQ=rgb2ntsc(RGB1)
imshow(YIQ),title('RGB→YIQ图像')
%RGB→HSV图像
RGB2=RGB
hsvmap=rgb2ntsc(map)
HSV=rgb2ntsc(RGB2)
imshow(HSV),title('RGB→HSV图像')
%RGB→YCbCr图像
RGB3=RGB
YcbCrmap=rgb2ycbcr(map)
YCBCR=rgb2ycbcr(RGB3)
imshow(YCBCR),title('RGB→YCbCr图像')
%YIQ→RGB图像
rgbmap=rgb2ntsc(yiqmap)
RGB1=rgb2ntsc(YIQ)
imshow(RGB1),title('YIQ→RGB图像')
%HSV→RGB图像
rgbmap=hsv2rgb(hsvmap)
RGB2=hsv2rgb(HSV)
imshow(RGB2),title('HSV→RGB图像')
%YCbCr→RGB图像
rgbmap=ycbcr2rgb(YcbCrmap)
RGB3=ycbcr2rgb(YCBCR)
imshow(RGB3),title('YCbCr→RGB图像')
六、实验结果分析及问题讨论
1、图像之间转换的基础是什么,为什么可以实现相互的转换
.
开课学院及实验室:
实验时间:
学生姓名
学号
成绩
学生所在学院
年级/专业/班
课程名称
数字图像处理
课程代码
实验项目名称
图像的频域处理方法
项目代码
指导教师
项目学分
一、实验目的和任务
1、了解离散傅立叶变换的基本原理;
2、掌握应用MATLAB进行Fourier变换、反变换的算法实现,并初步理解Fourier变换的物理意义。
二、实验仪器、设备及材料
1、计算机
2、MatLab软件/语言包括图像处理工具箱(ImageProcessingToolbox)
3、实验所需要的图片
三、实验原理
Fourier变换
Fouriern逆变换
振幅谱:
四、实验步骤
1.用Fourier变换算法,对简单图像line.bmp,yuan.bmp,twoyuan.bmp,juxing.bmp,xuanzhuan.bmp,pingyiy.bmp,pingyi.bmp做Fourier变换,体会从空域转换到频域的不同表现。
2.对图像Lenna.bmp作二维Fourier变换;(可以采用快速Fourier变换方法)
3.用Fourier系数的幅度进行Fourier反变换;
4.用Fourier系数的相位进行Fourier反变换;
5.比较2、3的结果,评价人眼对图像幅频特性和相频特性的敏感度。
五、实验过程记录(数据、图表、计算等)
1、用Fourier变换算法,对简单图像line.bmp,yuan.bmp,twoyuan.bmp,juxing.bmp,xuanzhuan.bmp,pingyiy.bmp,pingyi.bmp做Fourier变换。
程序如下:
%line
I=imread('line.bmp')
imshow(I)
B=fftshift(fft2(I));
imshow(log(abs(B)),[],'notruesize');
%yuan
I=imread('yuan.bmp')
imshow(I)
B=fftshift(fft2(I));
imshow(log(abs(B)),[],'notruesize');
%twoyuan
I=imread('twoyuan.bmp')
imshow(I)
B=fftshift(fft2(I));
imshow(log(abs(B)),[],'notruesize');
%juxing
I=imread('juxing.bmp')
imshow(I)
B=fftshift(fft2(I));
imshow(log(abs(B)),[],'notruesize');
%xuanzhuan
I=imread('xuanzhuan.bmp')
imshow(I)
B=fftshift(fft2(I));
imshow(log(abs(B)),[],'notruesize');
%pingyiy
I=imread('pingyiy.bmp')
imshow(I)
B=fftshift(fft2(I));
imshow(log(abs(B)),[],'notruesize');
%pingyi
I=imread('pingyi.bmp')
imshow(I)
B=fftshift(fft2(I));
imshow(log(abs(B)),[],'notruesize');
2、对图像Lenna.bmp作二维Fourier变换。
程序如下:
I=imread('lenna.bmp')
imshow(I)
B=fftshift(fft2(I));
imshow(log(abs(B)),[],'notruesize');
3、分别用Fourier系数的幅度和相位进行Fourier反变换;
程序如下:
X=imread('pingyi.bmp')
F=fftshift(fft2(X))
imshow(log(abs(F)),[]),title('pingyi')
I=imread('lenna.bmp')
F=fftshift(fft2(I))
imshow(log(abs(F)),[]),title('lenna')
I=imread('lenna.bmp')
fftI=fft2(I)
sfftI=fftshift(fftI)
RRfdp1=real(sfftI)
IIfdp1=imag(sfftI)
a=sqrt(RRfdp1.^2+IIfdp1.^2)
a=(a-min(min(a)))/(max(max(a))-min(min(a)))*255
figure
(2)
subplot(2,2,1)
imshow(real(a)),xlabel('(a)lena图的幅值谱图')
b=angle(fftI)
subplot(2,2,3)
imshow(real(b)),xlabel('(c)lena图的相位谱图')
theta=pi/6
RR1=a*cos(theta)
II1=a*sin(theta)
fftI1=RR1+1i.^II1
C=ifft2(fftI1)*255
subplot(2,2,2)
imshow(real(C)),xlabel('(b)利用幅值谱图重构lena图')
MM=150
RR2=MM*cos(angle(fftI))
II2=MM*sin(angle(fftI))
fftI2=RR2+1i.^II2
D=ifft2(fftI2)
subplot(2,2,4)
imshow(real(D)),xlabel('(d)利用相位谱图重构lena图')
实验结果如下:
六、实验结果分析及问题讨论
1、频谱对应的特征量代表的含义
2、为什么图像对幅频特性和相频特性有不同的敏感度。
.
开课学院及实验室:
实验时间:
学生姓名
学号
成绩
学生所在学院
年级/专业/班
课程名称
数字图像处理
课程代码
实验项目名称
图像的空域处理方法
项目代码
指导教师
项目学分
一、实验目的和任务
1、掌握在MATLAB中绘制灰度直方图的方法,了解灰度直方图的均衡化的方法;
2、了解图象滤波的基本定义及目的;
3、了解空域滤波的基本原理及方法;
4、掌握用MATLAB语言进行图象的空域滤波的方法;
二、实验设备、仪器及器材
1、计算机
2、MatLab软件/语言包括图像处理工具箱(ImageProcessingToolbox)
3、实验所需要的图片
三、实验原理
1、灰度变换是对一幅图象的灰度级进行变换,
B(x,y)=f[A(x,y)]
2、
用均值滤波器去除图像中的噪声;
3、用中值滤波器去除图像中的噪声;
四、实验步骤(按照实际操作过程)
1、运行matlab-help—demos—toolboxes—imageprocessing—IntensityAdjustmentandHistogram,做灰度变换和直方图变换,进一步了解变换的原因;
2、读出men.bmp这幅图像,显示它的图象及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图象与原图象的差别,调整后的灰度直方图与原灰度直方图的区别。
3、运行matlab-help—demos—toolboxes—imageprocessing—NoiseReductionfilter,进一步理解空域滤波的原理;
4、读出lena.bmp这幅图像,给这幅图像加入椒盐噪声
5、用均值滤波器去除图像中的噪声;
6、用中值滤波器去除图像中的噪声;
7、比较两种方法的处理结果。
五、实验过程记录(数据、图表、计算等)
1、读出men.bmp这幅图像,显示它的图象及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图象与原图象的差别,调整后的灰度直方图与原灰度直方图的区别。
程序如下:
I=imread('men.bmp')
subplot(2,2,1)
imshow(I),title('原图像')
subplot(2,2,2)
imhist(I),title('原图像的直方图')
J=imadjust(I,[0.030.1],[01])
subplot(2,2,3)
imshow(J),title('变换后的图像')
subplot(2,2,4)
imhist(J),title('变换后的直方图')
2、读出lena.bmp这幅图像,给这幅图像加入椒盐噪声。
程序如下:
I=imread(lenna.bmp');
subplot(2,2,1);
imshow(I),title('原图像')
subplot(2,2,3);
J=imnoise(I,'salt&pepper',0.02);
imshow(J),title('噪声图像')
3、分别用均值滤波器和中值滤波器去除图像中的噪声。
1.均值滤波
I=imread('men.bmp');
J=imnoise(I,'salt&pepper',0.02);
h=fspecial('average');
I1=imfilter(J,h);
subplot(1,2,1);
imshow(I1),title('3×3均值滤波去噪')
h=fspecial('average',[55]);
I2=imfilter(J,h);
subplot(1,2,2);
imshow(I2),title('5×5均值滤波去噪')
2.中值滤波
I=imread('men.bmp');
J=imnoise(I,'salt&pepper',0.02);
h=fspecial('average');
I3=medfilt2(J);
subplot(1,2,1);
imshow(I3),title('3×3中值滤波去噪')
I4=medfilt2(J,[55]);
subplot(1,2,2);
imshow(I4),title('5×5中值滤波去噪')
六、实验结果分析及问题讨论
1.小结一下本实验所用的增强方法
2.比较一下均值滤波和中值滤波处理的效果并指出其中异同
开课学院及实验室:
实验时间:
学生姓名
学号
成绩
学生所在学院
年级/专业/班
课程名称
数字图像处理
课程代码
实验项目名称
图像分割和目标识别
项目代码
指导教师
项目学分
一、实验目的和任务
1、掌握在MATLAB中边缘检测的方法;
2、了解图像分割的基本策略及方法;
3、掌握用MATLAB语言进行边缘检测和目标识别的方法。
二、实验设备、仪器及器材
1、计算机
2、MatLab软件/语言包括图像处理工具箱(ImageProcessingToolbox)
3、实验所需要的图片
三、实验原理
1、阈值分割是对一幅图象的目标和背景进行判定,
2、
用中值滤波器去除图像中的噪声;
3、二值形态学基本公式:
设A表示一副二值图像,B为结构元素则A关于B的膨胀和腐蚀变换分别定义为:
其中
是B的映像。
腐蚀是表示用某种形状的结构元素对一个图像进行探测,以便找出图像内部可以放下该结构元素的区域。
它是一种消除边界点,使边界向内部收缩的过程。
可以用来消除小且无意义的物体。
四、实验步骤(按照实际操作过程)
1、读出chrimage.bmp这幅图像,转换为灰度图像。
2、用中值滤波器去除图像中的噪声;
3、采用阈值分割将图像转换为二值图像;
4、对二值图像进行形态学操作,获得分析值。
五、实验过程记录(数据、图表、计算等)
1、读出chrimage.bmp这幅图像,转换为灰度图像。
程序如下:
I=imread('chrimage.bmp')
subplot(1,2,1)
imshow(I),title('原图像')
subplot(1,2,2)
I2=rgb2gray(I)
imshow(I2),title('灰度图像')
2.用中值滤波器去除图像中的噪声。
程序如下:
I=imread('chrimage.bmp')
I2=rgb2gray(I)
K1=medfilt2(I2,[33])
K2=medfilt2(I2,[55])
K3=medfilt2(I2,[77])
subplot(2,2,1)
imshow(I),title('原图像')
subplot(2,2,2)
imshow(K1),title('3×3中值滤波')
subplot(2,2,3)
imshow(K2),title('5×5中值滤波')
subplot(2,2,4)
imshow(K2),title('7×7中值滤波')
3、采用阈值分割将图像转换为二值图像。
程序如下:
I=imread('chrimage.bmp')
I2=rgb2gray(I)
K1=medfilt2(I2,[77])
I3=imadjust(K1)
bw=im2bw(I3,0.3)
subplot(1,2,1)
imshow(I),title('原图像')
subplot(1,2,2)
imshow(bw),title('二值图像')
4、对二值图像进行形态学操作,获得分析值。
程序如下:
I=imread('chrimage.bmp')
I2=rgb2gray(I)
s=size(I2);
I4=255*ones(s
(1),s
(2),'uint8');
I5=imsubtract(I4,I2);
K1=medfilt2(I5,[77])
I3=imadjust(K1)
bw=im2bw(I3,0.3)
bw=bwareaopen(bw,10)
subplot(2,2,1);
imshow(bw),title('去除杂点')
[labeled,numObjects]=bwlabel(bw,4);%标记连通域
RGB_label=label2rgb(labeled,@spring,'c','shuffle');%用颜色标记每一个染色体
subplot(2,2,2);
imshow(RGB_label),title('标记每一个染色体')
subplot(2,2,3);
chrdata=regionprops(labeled,'basic')
allchrs=[chrdata.Area];
num=size(allchrs)
nbins=20;
hist(allchrs,nbins),title(['染色体总数',num2str(num
(2))])
(1)去除图像中面积过小的,可以肯定不是染色体的杂点。
这些杂点一部分是滤噪没有滤去的染色体附近的小毛糙,一部分是图像边缘亮度差异产生的,结果见下图
(2)用颜色标记每一个染色体,以便直观显示。
此时染色体的断开与粘连问题已基本被解决。
最终效果如下图。
结果见下图
(3)统计被标记的染色体区域的面积分布,显示染色体总数。
统计总数为46,与人工数出数目的相同。