数字图像处理基本操作与灰度调整实验报告.docx
《数字图像处理基本操作与灰度调整实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理基本操作与灰度调整实验报告.docx(10页珍藏版)》请在冰豆网上搜索。
数字图像处理基本操作与灰度调整实验报告
一.实验目的
1.掌握读、写图像的根本方法;
2.掌握MATLAB语言中图像数据与信息的读取方法;
3.理解图像灰度变换处理在图像增强的作用;
4.掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换与均衡化的方法。
二.实验根本原理
1.灰度变换
灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度X围与分布,是图象数字化与图象显示的重要工具。
1)图像反转
灰度级X围为[0,L-1]的图像反转可由下式获得
2)对数运算:
有时原图的动态X围太大,超出某些显示设备的允许动态X围,如直接使用原图,如此一局部细节可能丢失。
解决的方法是对原图进展灰度压缩,如对数变换:
s=clog(1+r),c为常数,r≥0
3)幂次变换:
4)比照拉伸:
在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一X围的灰度值,或对不同X围的灰度值进展不同的拉伸处理,即分段线性拉伸:
其对应的数学表达式为:
2.直方图均衡化
灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最根本的统计特征。
依据定义,在离散形式下,用rk代表离散灰度级,用pr(rk)代表pr(r),并且有下式成立:
式中:
nk为图像中出现rk级灰度的像素数,n是图像像素总数,而nk/n即为频数。
直方图均衡化处理是以累积分布函数变换法为根底的直方图修正法。
假定变换函数为
(a)Lena图像(b)Lena图像的直方图
图1-1Lena图像与直方图
当灰度级是离散值时,可用频数近似代替概率值,即
式中:
l是灰度级的总数目,pr(rk)是取第k级灰度值的概率,nk是图像中出现第k级灰度的次数,n是图像中像素总数。
所以积分可以表示为如下累计分布函数(cumulativedistributionfunction,CDF)
四.实验内容与要求
copy假如干个图形文件如forest.tif和到MATLAB目录下work文件夹中。
1.熟悉MATLAB语言中对图像数据读取,显示等根本函数。
特别需要熟悉如下命令:
熟悉imread()函数,imwrite()函数,size()函数Subplot〔〕函数:
Figure〔〕函数
〔1〕将MATLAB目录下work文件夹中的forest.tif图像文件读出.用到imread,imfinfo等文件,观察一如下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。
将这个图像显示出来〔用imshow〕。
尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。
图片显示:
代码:
[I,map]=imread('forest.tif');imshow(I,map);
运行结果:
图像信息数据的显示:
代码:
imfinfo('forest.tif')
ans=
Filename:
'forest.tif'
FileModDate:
'13-Nov-201012:
02:
44'
FileSize:
124888
Format:
'tif'
FormatVersion:
[]
Width:
447
Height:
301
BitDepth:
8
ColorType:
'indexed'
FormatSignature:
[7373420]
ByteOrder:
'little-endian'
NewSubfileType:
0
BitsPerSample:
8
pression:
'PackBits'
PhotometricInterpretation:
'RGBPalette'
StripOffsets:
[17x1double]
SamplesPerPixel:
1
RowsPerStrip:
18
StripByteCounts:
[17x1double]
XResolution:
72
YResolution:
72
ResolutionUnit:
'Inch'
Colormap:
[256x3double]
PlanarConfiguration:
'Chunky'
TileWidth:
[]
TileLength:
[]
TileOffsets:
[]
TileByteCounts:
[]
Orientation:
1
FillOrder:
1
MaxSampleValue:
255
MinSampleValue:
0
Thresholding:
1
ImageDescription:
'CarmanahAncientForest,BritishColumbia,Canada'
将map值改为“128〞,图像变为黑白,
代码是:
[I,map]=imread('forest.tif');imshow(I,128);
显示如下:
〔2〕将MATLAB目录下work文件夹中的图像文件读出,用rgb2gray()将其转化为灰度图像,记为变量B;
代码如下:
figure;
subplot(1,2,1);
i=imread('b747.jpg');
imshow(i);title('原始图像');
subplot(1,2,2);
B=rgb2gray(i);
imshow(B);title('灰度图像');
运行结果如下:
2.图像灰度变换处理在图像增强的作用;
读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进展灰度变换,比拟相应的处理效果;
代码如下:
figure;
subplot(2,3,1);
I=imread('b747.jpg');
I=im2double(I);imshow(I);title('图像3');
subplot(2,3,5);
r=[0:
0.001:
1];
s=[r<0.35].*r*0.3+[r<=0.65].*[r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*(1+0.3*(r-1));
plot(r,s);title('2p,');
subplot(2,3,2);
T1=[I<0.35].*I*0.3+[I<=0.65].*[I>=0.35].*(0.105+2.6333*(I-0.35))+[I>0.65].*(1+0.3*(I-1));
imshow(T1);title('2I,');
subplot(2,3,6);
r=[0:
0.001:
1];
s=[r<=0.4].*[r>=0.2]*0.6+[r>0.4].*r+[r<0.2].*r;
plot(r,s);title('6p,');
subplot(2,3,3);
T6=[I<=0.4].*[I>=0.2]*0.6+[I>0.4].*I+[I<0.2].*I;
imshow(T6);title('6I,');
运行结果:
3.绘制图像灰度直方图的方法,对图像进展均衡化处理。
请自己编程和调用Matlab函数完成如下实验。
〔1〕显示B的图像与灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差异,调整后的灰度直方图与原灰度直方图的区别。
代码如下:
subplot(2,2,1);
I=imread('b747.jpg');
B=rgb2gray(I);
imshow(B);title('原始图像');
subplot(2,2,3);
imhist(B);title('原始直方图');
subplot(2,2,2);
C=imadjust(B,[0,1],[0,1]);
imshow(C);title('处理后图像');
subplot(2,2,4);
imhist(C);title('处理后直方图');
运行结果如下:
〔2〕对B进展直方图均衡化处理,试比拟与源图的异同。
代码如下:
subplot(2,2,1);
I=imread('b747.jpg');
B=rgb2gray(I);
imshow(B);title('原始图像');
subplot(2,2,3);
imhist(B);title('处理图像');
subplot(2,2,2);
C=histeq(B);
imshow(C);title('原始直方图');
subplot(2,2,4);
imhist(C);title('处理直方图');
运行结果如下:
中间灰度变高,灰度值分散。
〔3〕对B进展如下列图的分段线形变换处理,试比拟与直方图均衡化处理的异同。
代码如下:
subplot(2,2,1);
i=imread('b747.jpg');
B=rgb2gray(i);
imshow(B);title('原始图像');
subplot(2,2,2);
B=im2double(B);
T=[B<0.125].*B*2+[B<=0.75].*[B>=0.125].*(0.6*B+0.175)+[B>0.75].*(1.5*B-0.5);
imshow(T);title('处理图像');
subplot(2,2,4);
imhist(T);title('处理图像的直方图');
运行结果如下:
取值更加陡峭,离散,与直方图均衡化处理比图像明暗变化更加明显一些。