数字图像处理实验报告学生姓名王真颖学生学号L01指导教师梁毅雄专业班级计算机科学与技术1501完成日期2017年10月30日计算机科学与技术系信息科学与工程学院目录实验一 ..................................................................................................... 错误!未定义书签。
一、实验目的............................................................................................... 错误!未定义书签。
二、实验基本原理....................................................................................... 错误!未定义书签。
三、实验内容与要求................................................................................... 错误!未定义书签。
四、实验结果与分析................................................................................... 错误!未定义书签。
实验总结.................................................................................................. 错误!未定义书签。
参考资料. (3)实验一数字图像基本操作及灰度调整一.实验目的1.掌握读、写图像的基本方法;2.掌握MATLAB语言中图像数据与信息的读取方法;3.理解图像灰度变换处理在图像增强的作用;4.掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方法。
二.实验基本原理灰度变换灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。
图像反转灰度级范围为[0, L-1]的图像反转可由下式获得r L s --=1对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围,如直接使用原图,则一部分细节可能丢失。
解决的方法是对原图进行灰度压缩,如对数变换: s = clog(1 + r),c 为常数,r ≥ 0 幂次变换:0,0,≥≥=γγc cr s对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸:其对应的数学表达式为:直方图均衡化灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计特征。
依据定义,在离散形式下, 用rk 代表离散灰度级,用pr(rk)代表pr(r),并且有下式成立:n n r P kk r =)( 1,,2,1,010-=≤≤l k r k Λ式中:nk 为图像中出现rk 级灰度的像素数,n 是图像像素总数,而nk/n 即为频数。
直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。
假定变换函数为ωωd p r T s r r)()(0⎰==(a) Lena 图像 (b) Lena 图像的直方图 图1-1 Lena 图像及直方图当灰度级是离散值时,可用频数近似代替概率值,即1,,1,010)(-=≤≤=l k r nn r p k k k r Λ式中:l 是灰度级的总数目,pr(rk)是取第k 级灰度值的概率,nk 是图像中出现第k 级灰度的次数,n 是图像中像素总数。
所以积分可以表示为下列累计分布函数(cumulative distribution function, CDF)1,,1,010)()(0-=≤≤===∑∑==l k r r p nn r T s j kj j r kj j k k Λ三.实验内容与要求copy 若干个图形文件如和到MATLAB 目录下work 文件夹中。
1. 熟悉MATLAB 语言中对图像数据读取,显示等基本函数。
特别需要熟悉下列命令:熟悉imread()函数,imwrite()函数,size()函数 Subplot ()函数:Figure ()函数a.将MATLAB 目录下work 文件夹中的图像文件读出.用到imread ,imfinfo 等文件,观察一下图像数据,了解一下数字图像在MATLAB 中的处理就是处理一个矩阵。
将这个图像显示出来(用imshow )。
尝试修改map 颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。
b 将MATLAB 目录下work 文件夹中的图像文件读出,用rgb2gray()将其转化为灰度图像,记为变量B ;2.图像灰度变换处理在图像增强的作用;读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果;3.绘制图像灰度直方图的方法,对图像进行均衡化处理。
请自己编程和调用Matlab函数完成如下实验。
a.显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别。
b.对B进行直方图均衡化处理,试比较与源图的异同。
c.对B进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。
四.实验结果与分析1. 熟悉MATLAB语言中对图像数据读取,显示等基本函数。
a.将MATLAB目录下work文件夹中的图像文件读出.对应源代码如下:[I ,map] = imread(''),Imshow(I,map)结果如下图所示:图3-1尝试修改map颜色矩阵的值,再将图像显示出来,相关代码如下:[I ,map] = imread(''),Imshow(I,map/4)对应图像颜色的变化如下:图3-2Imfinfo函数的使用,显示图片相关信息,其对应源代码如下:imfinfo('','tif')对应结果如下ans =Filename: ''FileModDate: '04-Dec-2000 13:57:58'FileSize: 124888Format: 'tif'FormatVersion: []Width: 447Height: 301BitDepth: 8ColorType: 'indexed'FormatSignature: [73 73 42 0]ByteOrder: 'little-endian'NewSubfileType: 0BitsPerSample: 8Compression: 'PackBits'PhotometricInterpretation: 'RGB Palette'StripOffsets: [17x1 double]SamplesPerPixel: 1RowsPerStrip: 18StripByteCounts: [17x1 double]XResolution: 72YResolution: 72ResolutionUnit: 'Inch'Colormap: [256x3 double]PlanarConfiguration: 'Chunky'TileWidth: []TileLength: []TileOffsets: []TileByteCounts: []Orientation: 1FillOrder: 1GrayResponseUnit:MaxSampleValue: 255MinSampleValue: 0Thresholding: 1ImageDescription: 'Carmanah Ancient Forest, British Columbia, Canadab将MATLAB目录下work文件夹中的图像文件读出,用rgb2gray()将其转化为灰度图像,记为变量B,对应代码如下:I=imread(''),Imshow(B);B = rgb2gray(I)对应结果如下:图3-3结果分析:观察了图像数据了解一下数字图像在MATLAB中的处理就是处理一个矩阵rgb2gray()将真彩色图像转换成灰度图像或者将彩色色图转换成灰度色图2.图像灰度变换处理在图像增强的作用,对应源代码如下:figure;subplot(2,3,1);I=imread('');I=im2double(I);imshow(I);title('图像3');subplot(2,3,5);r=[0::1];s=[r<].*r*+[r<=].*[r>=].*+*)+[r>].*(1+*(r-1));plot(r,s);title('2p,');subplot(2,3,2);T1=[I<].*I*+[I<=].*[I>=].*+*)+[I>].*(1+*(I-1));imshow(T1);title('2I,');subplot(2,3,6);r=[0::1];s=[r<=].*[r>=]*+[r>].*r+[r<].*r;plot(r,s);title('6p,');subplot(2,3,3);T6=[I<=].*[I>=]*+[I>].*I+[I<].*I;imshow(T6);title('6I,');对应结果如下:图3-4结果分析:rgb2gray ( ) 将真彩色图像转换成灰度图像或者将彩色色图转换成灰度色图im2bw()通过设定亮度将阈值灰度、真彩、索引图像转换为二值图像rgb2hsv()实现RGB颜色空间到HSV颜色空间变换的函数3.绘制图像灰度直方图的方法,对图像进行均衡化处理。
显示B的图像及灰度直方图,对应源代码如下:I=imread(''),B = rgb2gray(I),subplot(2,2,1),imshow(B),subplot(2,2,2),imhist(B)对应结果如下:图3-5用imadjust函数将它的灰度值调整到[0,1]之间,对应源代码如下:I=imread(''),B = rgb2gray(I),subplot(1,2,1), C=imadjust(B,[200/255;1],[]),imshow(C),subplot(1,2,2),imhist(C)图3-6Imadjust()调节灰度图像的亮度或彩色图像的颜色矩阵。