图像处理,实验报告4
I期业若二弁死琴位 实验报告单 位(条)计算机学院 名业 计算机科学与技术琪皴12计科4 ■名 郝耀峰 修号 1250312025 同狙人 无 实验宦S4305 绥号 日期 2015.4. 16 镖程数字图像处理 指导老啊 鲁静 成镯 实脸项可偏号 04 试脸项司名私 点运算之直方图均衡化 一、度岭目的 1、参照程序中“点运算-〉线性变换函数,编写完成灰度均衡功能 的函数OnPointEqua()和InteEqualize(),并加入到程序的相应位 置。 2、运行程序观察直方图均衡化的效果。 1. 就珍林境(仗器残备,软件筹) Win7 VC6.0 三、实岭原理(我要求) 直方图的均衡化是把原始图像的灰度直方图从比较集中的某个区域 变成全部灰度范围内的均匀分布,实际上是对图像进行非线性拉伸。 使一定灰度范围内的像素个数大致相同。这样就能增强图像的局部对 比度,亮度可以更好的在直方图上分布。 四,实验岁瞭 void CChl_I ViewOnPointEqua { //灰度均衡 //获取文档 CChl_lDoc* pDoc GetDocument; //指向DIB的指针 LPSTR IpDIB; //指向DIB象素指针 LPSTR IpDIBBits; //锁定DIB IpDIB LPSTRGlobalLockHGLOBAL pDoc-GetHDIB; 〃找到DIB图像像素的起始位置 lpDIBBitsfindDIBBitslpDIB; 〃判断是否是8-bpp位图这里为了方便,只处理8-bpp位图的平移,其它的可以类推 if DIBNumColorslpDIB 256 { //提示用户 MessageBox目前只支持256色位图的平移 ”,”系统提示”, MB_ICONINATION I MBJ3K; //解除锁定 GlobalUnlockHGLOBAL pDoc-GetHDIB; //返回 return; //更改光标形状 BeginWaitCursor; //调用InteEqualize函数进行直方图均衡化 InteEqualizelpDIBBits,DIBWidthlpDIB,DIBHeightlpDIB //设置脏标记 pDoc-SetModifiedFlagTRUE; //更新视图 pDoc-UpdateAHViewsNULL; //解除锁定 GlobalUnIockHGLOBAL pDoc-GetHDIB; 〃恢复光标 EndWaitCursor; BOOL WINAPI InteEqualizeLPSTR IpDIBBits, LONG IWidth, LONG IHeight { //指向源图像的指针 unsigned char* IpSrc; 〃临时变量 LONG ITemp; //循环变量 LONG i; LONG j; //灰度映射表 BYTE bMap[256]; //灰度映射表 LONG lCount|256]; //图像每行的字节数 LONG ILineBytes; //计算图像每行的字节数 ILineBytes WIDTHBYTESWidth * 8; 〃重置计数为0 fori0;iv256;i 〃清零 lCount[i]0; 〃计算各个灰度值 fori 0; i IHeight; i { //每列 forj0; j vlWidth;j //指向DIB第i行,第j个象素的指针 IpSrc unsigned char*lpDIBBits ■ ILineBytes * i j; //计算新的灰度值 ICount[*lpSrc]; } //计算灰度映射表 for i 0; i 256; i { lTemp0; forj0;ji;j lTemplCount[j]; } 〃计算对应的新的灰度值 bMap[i]BYTElTemp*255/lHeight/lWidth; } //每行 fori 0; i IHeight; i //每列 forj0;jlWidth;j //指向DIB第i行,第j个象素的指针 IpSrc unsigned char*lpDIBBits ILineBytes * IHeight - 1 - i j; //计算新的灰度值 *lpSrc bMap[*lpSrc]; //返回 return TRUE; A.牝柔S处理(度睑徵据.届差舍祈, 处理前的图片 直方图均衡化处理后的图片 上,实睑小偌 通过此次实验,我们对图像的点运算操作有了更加深刻的理解,也 掌握灰度均衡化的操作。