图像处理与模式识别第一次作业.docx
- 文档编号:2965512
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:10
- 大小:503.23KB
图像处理与模式识别第一次作业.docx
《图像处理与模式识别第一次作业.docx》由会员分享,可在线阅读,更多相关《图像处理与模式识别第一次作业.docx(10页珍藏版)》请在冰豆网上搜索。
图像处理与模式识别第一次作业
图像处理与模式识别第一次作业
技术报告
2014年3月21日
目录
1任务说明1
2算法基本原理1
2.1直方图均衡化1
2.2灰度线性变化2
3功能实现2
3.1实验环境和测试环境2
3.2实现功能2
3.3功能函数3
3.3.1原始图像显示模块3
3.3.2彩色变灰度图模块3
3.3.3直方图均衡模块4
3.3.4灰度现行变化模块6
4样例实验7
5实验结论10
图标目录
图1图像灰度拉伸变换函数示例2
图2实现功能开始界面截图3
图3原始样例图片8
图4样例图片灰度图8
图5原始样例均衡后的灰度图9
图6样例图片线性变换后的灰度图9
1任务说明
打开一幅图像,进行直方图均衡.将灰度线性变化,将灰度拉伸。
评分标准:
能够用C语言或JAVA编程序读出图像文件,并利用算法进行灰度拉伸.(满分20分,读出图像5分,实现拉伸11分,写出技术报告4分)。
2算法基本原理
2.1直方图均衡化
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。
直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。
直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围从而可达到增强图像整体对比度的效果。
设原始图像在(x,y)处的灰度为f,而改变后的图像为g,则对图像增强的方法可表述为将在(x,y)处的灰度f映射为g。
在灰度直方图均衡化处理中对图像的映射函数可定义为:
g=EQ(f),这个映射函数EQ(f)必须满足两个条件(其中L为图像的灰度级数):
(1)EQ(f)在0≤f≤L-1范围内是一个单值单增函数。
这是为了保证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列。
(2)对于0≤f≤L-1有0≤g≤L-1,这个条件保证了变换前后灰度值动态范围的一致性。
累积分布函数(cumulativedistributionfunction,CDF)即可以满足上述两个条件,并且通过该函数可以完成将原图像f的分布转换成g的均匀分布。
此时的直方图均衡化映射函数为:
上述求和区间为0到k,根据该方程可以由源图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。
在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,然后根据计算出的累计直方图分布求出到的灰度映射关系。
在重复上述步骤得到源图像所有灰度级到目标图像灰度级的映射关系后,按照这个映射关系对源图像各点像素进行灰度转换,即可完成对源图的直方图均衡化。
2.2灰度线性变化
灰度拉伸又叫对比度拉伸,它是最基本的一种灰度变换,使用的是最简单的分段线性变换函数,它的主要思想是提高图像处理时灰度级的动态范围。
它可以有选择的拉伸某段灰度区间以改善输出图像。
如图,所示的变换函数的运算结果是将原图在a到b之间的灰度拉伸到c到d之间。
如果一幅图像的灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来拉伸(斜率>1)物体灰度区间以改善图像;同样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量。
图1图像灰度拉伸变换函数示例
3功能实现
3.1实验环境和测试环境
本实验在Eclipse环境下用java实现,在win7旗舰版下进行测试。
3.2实现功能
程序提供了一个简单的操作界面,其能实现查看原始图像、查看灰度图、查看均衡后的灰度图、查看线性变换后的灰度图这四个操作,如下图:
图2实现功能开始界面截图
3.3功能函数
3.3.1原始图像显示模块
publicvoidOld()throwsIOException{
form=newMyFrame(buf);
form.setVisible(true);
}
3.3.2彩色变灰度图模块
publicvoidChangeGray()throwsIOException{
int[]pixels=newint[width*height];//定义一数组,用来存储图片的象素
intgray;
bufc=buf;
PixelGrabberpg=newPixelGrabber(bufc,x,y,width,height,pixels,0,width);
try{
pg.grabPixels();
}catch(InterruptedExceptione){
e.printStackTrace();
}
//读取像素值
for(intj=0;j for(inti=0;i //由红,绿,蓝值得到灰度值 gray=(int)(((pixels[width*j+i]>>16)&0xff)*0.8); gray+=(int)(((pixels[width*j+i]>>8)&0xff)*0.1); gray+=(int)(((pixels[width*j+i])&0xff)*0.1); pixels[width*j+i]=(255<<24)|(gray<<16)|(gray<<8)|gray; } } bufc.setRGB(0,0,width,height,pixels,0,width); form=newMyFrame(bufc); form.setVisible(true); } 3.3.3直方图均衡模块 publicvoidAverageImage()throwsIOException{ ChangeGray(); int[]pixels=newint[width*height];//定义一数组,用来存储图片的象素 int[]bili=newint[256];//比例 doublepixel; intgray; PixelGrabberpg=newPixelGrabber(buf,x,y,width,height,pixels,0,width); try{ pg.grabPixels(); }catch(InterruptedExceptione){ e.printStackTrace(); } //初始化 for(inti=0;i<256;i++){ bili[i]=0; } //读取像素值 for(intj=0;j for(inti=0;i gray=(int)((pixels[width*j+i])&0xff); bili[gray]++; } } intbfb=0; for(inti=0;i<256;i++){ bfb+=bili[i]; bili[i]=bfb; } for(intj=0;j for(inti=0;i gray=(int)((pixels[width*j+i])&0xff); pixel=(double)bili[gray]/(width*height)*255; pixels[width*j+i]=(255<<24)|((int)pixel<<16)|((int)pixel<<8)|(int)pixel; } } buf.setRGB(0,0,width,height,pixels,0,width); form.repaint(); } 3.3.4灰度现行变化模块 publicvoidLinearTransformation()throwsIOException{ ChangeGray(); int[]pixels=newint[width*height];//定义一数组,用来存储图片的象素 intmin=(int)((pixels[0])&0xff),max=(int)((pixels[0])&0xff); doublepixel; intgray; PixelGrabberpg=newPixelGrabber(buf,x,y,width,height,pixels,0,width); try{ pg.grabPixels(); }catch(InterruptedExceptione){ e.printStackTrace(); } //读取像素值 for(intj=0;j for(inti=0;i gray=(int)((pixels[width*j+i])&0xff); if(gray min=gray; if(gray>max) max=gray; } } System.out.println(min); System.out.println(max); for(intj=0;j for(inti=0;i gray=(int)((pixels[width*j+i])&0xff); gray=255/(max-min)*(gray-0)+0; pixels[width*j+i]=(255<<24)|((int)gray<<16)|((int)gray<<8)|(int)gray; } } buf.setRGB(0,0,width,height,pixels,0,width); form.repaint(); } 4样例实验 本实验采用图像处理经典图片(见原始图片)进行实验,分别显示对样例图片灰度化,均衡化和现行变换后的结果,具体实验结果截图如下: 图3原始样例图片 图4样例图片灰度图 图5原始样例均衡后的灰度图 图6样例图片线性变换后的灰度图 5实验结论 图像增强的目的是为了改善图像的视觉效果,弥补由于照明光场发生变化而引起的图像灰度值的改变。 在图像增强过程中突出了一部分信息,同时可能会压制另一部分信息。 本文介绍了图像的线性灰度变换技术,并通过Java得到完全实现。 直方图均衡化增加了图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。 通过这种方法,亮度可以更好地在直方图上分布。 这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 处理 模式识别 第一次 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)