数据图像处理实验报告Word文档下载推荐.docx
- 文档编号:6340208
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:38
- 大小:3.09MB
数据图像处理实验报告Word文档下载推荐.docx
《数据图像处理实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据图像处理实验报告Word文档下载推荐.docx(38页珍藏版)》请在冰点文库上搜索。
imshow(gray);
灰度图像'
subplot(2,2,3);
imshow(hsv);
HSV空间图像'
subplot(2,2,4);
imshow(ycbcr);
YCBCR空间图像'
运行结果如右:
分析:
原图为RGB颜色空间的图像,RGB是依据人眼识别的颜色定义出的空间,可表示大部分颜色。
它是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的。
RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值。
RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216种颜色。
在RGB模式下,每种RGB成分都可使用从0(黑色)到255(白色)的值。
灰度图中,用不同的灰度色阶来表示“红,绿,蓝”在图像中的比重。
通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255。
用于显示的灰度图像通常用每个采样像素8位的非线性尺度来保存,这样可以有256级灰度。
HSV空间图像中,HSV模型颜色的参数分别是:
色调(H),饱和度(S),亮度(V)。
H参数表示色彩信息,即所处的光谱颜色的位置。
该参数用一角度量来表示,红、绿、蓝分别相隔120度。
互补色分别相差180度。
纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。
S=0时,只有灰度。
V表示色彩的明亮程度,范围从0到1。
YCBCR空间图像中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。
主要的子采样格式有YCbCr4:
2:
0、YCbCr4:
2和YCbCr4:
4:
4。
2、图像灰度变换与代码编写
a)在VC6.0环境下打开“医学图像处理系统”代码,进行编译调试,打开实验前准备的医学图像,进行灰度变换曲线调整如下图,观察图像进行灰度调整后的效果;
图表2原图图表3灰度变换后的图
变换后的图像颜色层次更加分明。
从上图的灰度变换曲线调整窗口可知,灰度值在0-50和200-255范围内对比度降低,其余部分对比度提高。
而该图像灰度值大部分集中在50-200范围内,这样整个图像的对比度就增强了。
b)在VC6.0环境下找到图像灰度变换函数代码,分析代码实现过程与方法,在实验结束后,画出灰度变换函数代码的实现流程图,理解灰度变换在在VC6.0环境下实现的基本方法;
代码:
BOOLWINAPIGrayStretch(LPSTRlpDIBBits,LONGlWidth,LONGlHeight,BYTEbX1,BYTEbY1,BYTEbX2,BYTEbY2)
{unsignedchar*lpSrc;
LONGi;
LONGj;
BYTEbMap[256];
LONGlLineBytes;
lLineBytes=WIDTHBYTES(lWidth*8);
for(i=0;
i<
=bX1;
i++)
{
if(bX1>
0)
bMap[i]=(BYTE)bY1*i/bX1;
else
bMap[i]=0;
}
for(;
=bX2;
if(bX2!
=bX1)
bMap[i]=bY1+(BYTE)((bY2-bY1)*(i-bX1)/(bX2-bX1));
bMap[i]=bY1;
256;
=255)
bMap[i]=bY2+(BYTE)((255-bY2)*(i-bX2)/(255-bX2));
bMap[i]=255;
for(i=0;
lHeight;
for(j=0;
j<
lWidth;
j++)
{
lpSrc=(unsignedchar*)lpDIBBits+lLineBytes*(lHeight-1-i)+j;
*lpSrc=bMap[*lpSrc];
}
returnTRUE;
}
3、灰度运算对于图像处理的作用,对照观察灰度变换前后的图像,了解各种灰度变换的作用
使图像加亮使图像减暗
提高图像对比度降低图像对比度
灰度级切片
四、思考题
1、要设计一个功能完善的图像灰度变换处理软件,需要在那些功能上进行完善和设计;
答:
还应该考虑图像灰度变换后大于255和小于0的情况和任意灰度级的图像。
2、设备无关位图(DIB)基础及访问DIB函数的基本方法;
BMP文件可以分为DIB格式和DDB格式。
DIB格式(Device-IndependentBitmanp)是与设备无关的BMP文件格式,也就是BMP文件格式,它自带颜色信息,颜色表管理容易,具有很强的通用性。
Windows支持一些重要的DIB访问函数。
这些函数都没有被封装到MFC中,需要参考联机Win32文档中的细节。
实验二图像的FFT变换实验
1、练习VisualC++的一些FFT变换的算法实现方式;
2、编写VisualC++关于图像的FFT变换函数的编写和调试;
3、熟悉FFT变换在图像处理中的作用及功能;
4、熟悉FFT变换后的显示基本算法;
5、学会编写图像的FFT变换相关函数:
1、图像的FFT变换基本原理
(1)二维傅立叶变换基本原理
如果二维函数满足狄里赫莱条件,那么它的Fourier变换可以表示为:
在离散条件下二维图像的变换公式为:
(2)二维DFT变换的快速算法
二维FFT变换具有可分离特性,因而可以利用一维快速变换的方法来进行快速变换,在编程时可通过先编写一维FFT变换函数,然后在二维变换中调用来实现二维变换的快速算法(一维运算函数的实现代码可参考所给代码);
2、熟悉VC编程环境,理解并掌握图像的FFT变换基本方法,及FFT变换的平移、旋转、分离等特性。
三、实验内容
1、将实验指导老师所给图像进行FFT变换(在Matlab下实现,观察图像变换后的效果及幅度数据分布),观察变换后的幅度图像特征及理解FFT的基本特征;
lena.bmp'
I1=fft2(I);
I2=fftshift(I1);
figure
subplot(1,2,1);
imshow(I);
subplot(1,2,2);
imshow(log(abs(I2)),[]);
傅里叶变换'
2、图像傅立叶变换与代码编写
a)在VC6.0环境下打开课程所给”医学图像处理系统”代码,进行编译调试,打开实验前准备的医学图像,进行图像变换得到适合条件的灰度图像,观察图像进行灰度调整后的效果;
图1:
原始图像及灰度变换后的待处理图像
b)在VC6.0环境下找到图像的Fourier函数代码,分析代码实现过程与方法,在实验结束后,画出Fourier变换函数代码的实现流程图,理解图像的Fourier变换在在VC6.0环境下实现的基本方法;
代码:
BOOLWINAPIFourier(LPSTRlpDIBBits,LONGlWidth,LONGlHeight)
{
//指向源图像的指针
unsignedchar*lpSrc;
//中间变量
doubledTemp;
//循环变量
//进行付立叶变换的宽度和高度(2的整数次方)
LONGw;
LONGh;
intwp;
inthp;
//图像每行的字节数
//计算图像每行的字节数
//赋初值
w=1;
h=1;
wp=0;
hp=0;
//计算进行付立叶变换的宽度和高度(2的整数次方)
while(w*2<
=lWidth)
w*=2;
wp++;
while(h*2<
=lHeight)
h*=2;
hp++;
//分配内存
complex<
double>
*TD=newcomplex<
[w*h];
*FD=newcomplex<
//行
h;
//列
w;
//指向DIB第i行,第j个象素的指针
//给时域赋值
TD[j+w*i]=complex<
(*(lpSrc),0);
//对y方向进行快速付立叶变换
FFT(&
TD[w*i],&
FD[w*i],wp);
//保存变换结果
TD[i+h*j]=FD[j+w*i];
//对x方向进行快速付立叶变换
TD[i*h],&
FD[i*h],hp);
//计算频谱
dTemp=sqrt(FD[j*h+i].real()*FD[j*h+i].real()+
FD[j*h+i].imag()*FD[j*h+i].imag())/100;
//判断是否超过255
if(dTemp>
255)
{
//对于超过的,直接设置为255
dTemp=255;
}
//指向DIB第(i<
h/2?
i+h/2:
i-h/2)行,第(j<
w/2?
j+w/2:
j-w/2)个象素的指针
//此处不直接取i和j,是为了将变换后的原点移到中心
//lpSrc=(unsignedchar*)lpDIBBits+lLineBytes*(lHeight-1-i)+j;
lpSrc=(unsignedchar*)lpDIBBits+lLineBytes*
(lHeight-1-(i<
i-h/2))+(j<
j-w/2);
//更新源图像
*(lpSrc)=(BYTE)(dTemp);
//删除临时变量
deleteTD;
deleteFD;
//返回
c)在VC6.0环境下,打开上次实验所建工程,添加Fourier变换功能并实现此变换,观察图像进行Fourier变换后的幅度分布特征及平移特性,理解图像的二维傅立叶变换特性
图2:
图像的Fourier变换前后对照图
d)写出具体实现过程,并分析图像的二维Fourier变换的特性。
二维Fourier变换的特性:
(1)可分离性。
二维Fourier变换可分离为两次以为Fourier变换;
(2)同址运算,在变换前后用同一地址。
3、在Matlab中实现图像的Fourier变换,并对照比较两种变换的效果,分析有无差异,并说明
Matlab下的Fourier变换VC下的Fourier变换
四.实验小结:
通过本次实验,让我在书本中、上课时学习的知识得到了灵活运用,尤其通过对VisualC++的一些FFT变换的算法实现方式的了解及编写VisualC++关于图像的FFT变换函数的编写和调试,使我更清楚地了解了FFT变换在图像处理中的作用及功能,本次实验也让我对VisualC++软件有了一定的了解和认识,为进一步学习数图知识打下了良好的基础。
实验三图像增强设计实验
一、设计任务与要求
编程实现下列功能:
读出以BMP格式存储的黑白灰度图象并显示,显示灰度直方图,对图象进行直方图均衡化处理,显示处理后图象及直方图,画出灰度变换曲线,以BMP格式存储处理后图象。
二、实验内容与思考题
1、在图像处理软件(如Photoshop等)上观察图像增强效果,并进行分析
(1)对比度增强
1)在Photoshop中打开一黑白灰度图象文件。
2)在图象菜单中选直方图项,观察原始图象的直方图。
3)在图象菜单调整子菜单中选亮度/对比度项,调节对比度滑块,观察图象变化。
4)在图象菜单中选直方图项,观察处理后图象的直方图,并同
(2)中的直方图比较。
亮度-35对比度61直方图
亮度13对比度61直方图
从以上实验结果可以看出,对比度为-50的图像像素值更加集中,图像比较模糊;
而对比度为100的图像的像素值分布的范围更广,图像层次更明显。
(2)灰度变换
3)在图象菜单调整子菜单中选反相项,观察图象变化。
反相后的图像的直方图与原来的直方图对称
5)画出灰度变换曲线。
6)在编辑菜单中选返回项,恢复原始图象。
7)在图象菜单调整子菜单中阈值项,调节阈值色阶滑块,观察图象变化。
8)在图象菜单中选直方图项,观察处理后图象的直方图,并同
(2)中的直方图比较。
9)画出灰度变换曲线。
(3)直方图均衡化1)在Photoshop中打开一黑白灰度图象文件。
3)在图象菜单调整子菜单中选色调均化项,观察图象变化。
(4)图象平滑
1)在Photoshop中打开一黑白灰度图象文件。
3)在滤镜菜单模糊子菜单中选进一步模糊项,观察图象变化。
模糊后的图片直方图
5)在编辑菜单中选返回项,恢复原始图象。
6)在滤镜菜单模糊子菜单中选高斯模糊项,观察图象变化。
7)在图象菜单中选直方图项,观察处理后图象的直方图,并同
(2)中的直方图比较。
高斯模糊直方图
8)在MatlabHelp菜单中,选Demos项。
9)打开Toolboxes\ImageProcessing项,选NoiseReductionFiltering,并运行。
10)选图象Blood、噪声类型Salt&
Pepper、滤波器类型Median、邻域3x3,比较原始图象、受噪声污染图象、滤波后图象。
11)改变参数,重做(10)。
Gaussian噪声,滤波器类型Median、邻域3x3
Speckle噪声,滤波器类型Median、邻域3x3
Speckle噪声,滤波器类型Median、邻域7*7
12)选其他图象,重做(10)-(11)。
13)思考何种滤波器对抑制何种类型噪声更有效,邻域大小对抑制噪声效果及图象模糊程度的影响。
经过以上实验,可以总结出以下结论:
1.邻域(neighbourhood)越小,图像越清晰,但是抑制噪声效果越差。
2.中值滤波器(MedianFilter)对抑制椒盐噪声(Salt&
Pepper)更有效。
3.AdaptiveFilter对抑制高斯噪声(Gaussian)更有效。
4.AveragingFilter对抑制斑点噪声(Speckle)更有效
(5)图象锐化
原图直方图
3)在滤镜菜单锐化子菜单中选进一步锐化项,观察图象变化。
锐化后的图像直方图
6)在滤镜菜单锐化子菜单中选USM锐化项,观察图象变化。
USM锐化直方图
图象锐化目的是加强图象轮廓,使图象看起来比较清晰。
图象轮廓是灰度陡然变化的部分,包含着丰富的空间高频成分。
把高频分量相对突出,显然可使轮廓清晰。
高频加强滤波器使高频分量相对突出,而低频分量和甚高频分量则相对抑制。
8)在编辑菜单中选返回项,恢复原始图象。
9)在滤镜菜单风格化子菜单中选查找边缘项,观察图象变化。
10)在图象菜单中选直方图项,观察处理后图象的直方图,并同
(2)中的直方图比较。
边缘直方图
11)在编辑菜单中选返回项,恢复原始图象。
12)在滤镜菜单风格化子菜单中选照亮边缘项,观察图象变化。
13)在图象菜单中选直方图项,观察处理后图象的直方图,并同
(2)中的直方图比较。
照亮边缘直方图
在照亮边缘中,有一些参数设置,边缘是白色的,被勾亮出来,故直方图灰度级高的点出现频率较小,大片的黑色使灰度级较低的点的频率出现较大,直方图如上所示。
2、分析“医学图像处理系统”图像增强部分代码,理解图像增强的VC实现基本过程及方法,观察图像增强中的平滑、中值滤波、梯度锐化、拉普拉斯变换等处理的效果对照图,阅读分析代码;
原图平均滤波3*3
高斯3*3平均滤波3*1中值滤波
梯度锐化(阈值10)拉普拉斯锐化
本次实验达到了实验目的,通过实验加强了我对图像增强方法、效果及灰度直方图认识与理解,并了解到很多对图像进行各种处理的具体方法,如对图像进行加噪、滤波、锐化等,都有多种方法来进行处理,且处理的效果也不同,我们在对图像进行处理时就可以选择处理效果最好的方法。
实验四图像分割设计实验
1、编程实现下列功能:
读出以BMP格式存储的黑白灰度图象并显示,用拉普拉斯算子对图象进行边缘检测,显示处理后图象,以BMP格式存储处理后图象。
2、编程实现下列功能:
读出以BMP格式存储的黑白灰度图象并显示,用鼠标点击图象上某一点,以灰度相近原则进行区域生长,显示处理后图象,以BMP格式存储处理后图象。
1、在Matlab图像处理工具箱上实现图像的边缘检测,模板匹配,区域生长算法并根据分割效果,进行分析,选择适合的图像分割方法。
(一)边缘检测
a)在MatlabHelp菜单中,选Demos项。
b)打开Toolboxes\ImageProcessing项,选EdgeDetection,并运行。
c)选图象Blood、边缘检测方法Sobel,如图
d)按Apply键。
e)观察检测到的边界。
f)改变阈值,重做(4)-(5)。
g)选边缘检测方法Prewitt,重做(4)-(6)。
h)选边缘检测方法Roberts,重做(4)-(6)。
i)选边缘检测方法LaplacianofGaussian,重做(4)-(6)。
Sobel算子、自动阈值Sobel算子,阈值为0.2
Prewitt算子、自动阈值Prewitt算子、阈值0.2
Roberts算子、自动阈值Roberts算子、自动阈值
LaplacianofGaussian算子、自动阈值LaplacianofGaussian算子、阈值0.01
Canny算子、自动阈值Canny算子、阈值0.05
(一)模板匹配
a)在Photoshop中打开一黑白灰度图象文件,如图2所示。
b)在滤镜菜单其他子菜单中选自定项。
c)在自定界面中输入点模板。
d)按好键。
e)观察处理后图象。
点模版
f)在编辑菜单中选返回项,恢复原始图象。
g)在滤镜菜单其他子菜单中选自定项。
h)在自定界面中分别输入线模板、方向模板,重做(4)-(5)。
线模板
四、实验小节:
通过本次实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 图像 处理 实验 报告