《Visual C++实践与提高数字图像处理与工程应用篇》第三章学习笔记Word格式文档下载.docx
- 文档编号:15291877
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:49
- 大小:42.10KB
《Visual C++实践与提高数字图像处理与工程应用篇》第三章学习笔记Word格式文档下载.docx
《《Visual C++实践与提高数字图像处理与工程应用篇》第三章学习笔记Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《Visual C++实践与提高数字图像处理与工程应用篇》第三章学习笔记Word格式文档下载.docx(49页珍藏版)》请在冰豆网上搜索。
*************************************************************************/
BOOLGrayLinTrans(LPSTRlpDIBBits,LONGlmageWidth,LONGlmageHeight,intoralow,intorahig,intnewlow,intnewhig)
{
unsignedchar*lpSrc;
//指向源图像的指针
inti;
//循环变量
intj;
BYTEbyMap[256];
//定义灰度映射表
for(i=0;
i<
=oralow;
i++)//当灰度级小于要增强的灰度级时
{
if(newlow>
0)//判断新灰度级是否大于0
{
byMap[i]=newlow;
//赋予新值
}
else
byMap[i]=0;
//直接赋值为0
}
for(;
=orahig;
i++)
if(orahig!
=oralow)//判断orahig是否等于oralow(防止
//分母为0)
//线性变换
byMap[i]=newlow+(BYTE)((newhig-newlow)*(i-oralow)/(orahig-oralow));
//直接赋值为newlow
newhig;
if(newhig<
=255)//判断d是否大于255
byMap[i]=newhig;
//直接赋值为newhig
byMap[i]=255;
//直接赋值为255
for(i=0;
lmageHeight;
i++)//对图像的每个像素值进行变换
for(j=0;
j<
lmageWidth;
j++)//对每列进行变换
//指向DIB第i行,第j个象素的指针
lpSrc=(unsignedchar*)lpDIBBits+lmageWidth*(lmageHeight-1-i)+j;
*lpSrc=byMap[*lpSrc];
//用新的灰度替代原有的灰度
returnTRUE;
//返回
}
该函数调用函数CDImagePorcessView视图类的OnGrayEnhance().代码如下:
voidCDImageProcessView:
:
OnGrayEnhance()
CDImageProcessDoc*pDoc=GetDocument();
//获取当前文档
LPSTRlpDIB;
//指向当前DIB的指针
LPSTRlpDIBBits;
//指向当前DIB像素指针
lpDIB=(LPSTR):
GlobalLock((HGLOBAL)pDoc->
GetHObject());
//锁定DIB
lpDIBBits=pDoc->
m_dib.GetBits(lpDIB);
//找到DIB图像象素起始位置
if(pDoc->
m_dib.GetColorNum(lpDIB)!
=256)//判断是否是256色位图
MessageBox("
目前只支持256色位图!
"
"
系统提示"
MB_ICONINFORMATION|MB_OK);
//如果不是,提示用户
:
GlobalUnlock((HGLOBAL)pDoc->
//解除锁定
return;
//返回
CGrayEnhancegray;
//重载灰度变换对话框类
if(gray.DoModal()!
=IDOK)//显示对话框,提示用户设定参数
//定义四个变量用于存贮对话框设置的参数
intnewhig;
//新灰度上限
intnewlow;
//新灰度下限
intorahig;
//旧灰度上限
intoralow;
//旧灰度下限
newhig=gray.m_newhig;
//获取用户设定的参数
newlow=gray.m_newlow;
orahig=gray.m_orahig;
//获取用户设定的参数
oralow=gray.m_oralow;
deletegray;
//删除对话框
BeginWaitCursor();
//更改光标形状
//调用GrayLinTrans()函数进行灰度变换
GrayLinTrans(lpDIBBits,pDoc->
m_dib.GetWidth(lpDIB),pDoc->
m_dib.GetHeight(lpDIB),oralow,orahig,newlow,newhig);
pDoc->
SetModifiedFlag(TRUE);
//图像已经处理,设置脏标记
UpdateAllViews(NULL);
//更新视图
EndWaitCursor();
//恢复光标
}
直方图均衡化
*\函数名称:
*GrayHistEnhance()
*\输入参数:
*LONGlmageHeight//源图像的高度
*BOOL//成功则返回TRUE,否则返回FALSE
*该函数对指定的图像进行直方图均衡化处理
BOOLGrayHistEnhance(LPSTRlpDIBBits,LONGlmageWidth,LONGlmageHeight)
//指向源图像的指针
intnTemp;
//临时变量
//循环变量
//累积直方图,即灰度映射表
intnCount[256];
//直方图
256;
i++)//重置计数为0
nCount[i]=0;
//清零
i++)//每行
j++)//每列
nCount[*(lpSrc)]++;
//计数加1
i++)//计算累积直方图
nTemp=0;
//初始为0
for(j=0;
=i;
j++)
nTemp+=nCount[j];
byMap[i]=(BYTE)(nTemp*255/lmageHeight/lmageWidth);
//计算对应的新灰度值
//说明:
*255实际上就是将新的灰度值也转换为0~255的范围。
//指向DIB第i行,第j个象素的指针
//计算新的灰度值
//返回
该函数调用函数CDImagePorcessView视图类的OnHistEnhance()。
OnHistEnhance()
//指向当前
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual C+实践与提高数字图像处理与工程应用篇 Visual C+实践与提高数字图像处理与工程应用篇第三章
链接地址:https://www.bdocx.com/doc/15291877.html