MFC对话框绘制灰度直方图讲述.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC对话框绘制灰度直方图讲述

 HYPERLINK /eastmount/article/detailsMFC对话框绘制灰度直方图 一. 程序运行结果 ? ? ? ? 该篇文章主要是在上一篇文章基础上进行的讲解,其中当打开一张BMP图像后,点击”直方图“-》”显示原图直方图“如下。 二. 灰度直方图原理 ? ? ? ? 什么是灰度直方图? ? ? ? ? 灰度直方图(histogram)是灰度级的函数,描述的是图像中每种灰度级像素的个数,反映图像中每种灰度出现的频率。横坐标是灰度级,纵坐标是灰度级出现的频率。 ? ? ? ??对于连续图像,平滑地从中心的高灰度级变化到边缘的低灰度级。直方图定义为: ? ? ? ??其中A(D)为阈值面积函数:为一幅连续图像中被具有灰度级D的所有轮廓线所包围的面积。对于离散函数,固定ΔD为1,则:H(D)=A(D)-A(D+1) ? ? ? ??色彩直方图是高维直方图的特例,它统计色彩的出现频率,即色彩概率分布信息。 ? ? ? ??通常这需要一定的量化过程,将色彩分成若干互不重叠的种类。一般不直接在RGB色彩空间中统计,而是在将亮度分离出来后,对代表色彩部分的信息进行统计,如在HSI空间的HS子空间、YUV空间的UV子空间,以及其它反映人类视觉特点的彩色空间表示中进行。 ? ? ? ? 其中直方图的计算方法如下: ? ? ? ??依据定义,若图像具有L(通常L=256,即8位灰度级)级灰度,则大小为MxN的灰度图像f(x,y)的灰度直方图hist[0…L-1]可用如下计算获得。 ? ? ??? 1、初始化 hist[k]=0; k=0,…,L-1? ? ? ? ? 2、统计 hist[f(x,y)]++; x=0,…,M-1, y =0,…,N-1? ? ? ? ? 3、归一化 hist[f(x,y)]/=M*N? ? ? ? ? 那么说了这么多,直方图究竟有什么作用呢? ? ? ? ? 在使用轮廓线确定物体边界时,通过直方图更好的选择边界阈值,进行阈值化处理;对物体与背景有较强对比的景物的分割特别有用;简单物体的面积和综合光密度IOD可以通过图像的直方图求得。 三. 程序实现 1.建立直方图对话框 ? ? ? ?第一步:创建Dialog ? ? ? ? 将视图切换到ResourceView界面,选中Dialog右键鼠标新建一个Dialog,并新建一个名为IDD_DIALOG_ZFT,设置成下图对话框。 ? ? ? ? 右键添加属性如下: ? ? ? ? 对话框-原始直方图-IDD_DIALOG_ZFT ? ? ? ? 组框-RGB-IDC_STATIC_RGB ? ? ? ??图像-框架-IDC_STATIC_KJ-蚀刻(重点:有它才能添加直方图在此处,注意GetDlgItem()函数中是IDC而不是IDD对话框) ? ? ? ? 添加蚀刻线(图像蚀刻形成的直线)形如图中的3个矩形框,并添加静态文本:Red、Green、Blue、红、绿、蓝、像素、平均灰度、中值灰度、标准差;这些静态文本都是IDC_STATIC且为默认属性 ? ? ? ? 添加红色4个值(Static)、绿色4个值、蓝色4个值,分别为: ? ? ? ? IDC_STATIC_XS_RED(GREEN BLUE)对应像素XS ? ? ? ? IDC_STATIC_PJHD_RED(GREEN BLUE)对应平均灰度PJHD ? ? ? ? IDC_STATIC_ZZHD_RED(GREED BLUE)对应中值灰度ZZHD ? ? ? ? IDC_STATIC_BZC_RED(GREEN BLUE)对应标准差BZC ? ? ? ?第二步:建立类向导MFC ClassWizard ? ? ? ? (1) 在对话框资源模板空白区双击鼠标(Ctrl+W),创建一个新类,命名为CImageZFTDlg会自动生成它的.h和.cpp文件。在类向导中选中类名CImageZFTDlg,IDs为CImageZFTDlg,WM_INITDIALOG建立这个函数用于初始化。 ? ? ? ? (2) 打开类向导,选择Member Variables页面,添加如下变量,类型均为CString。 ? ? ? ? 像素 m_redXS、m_greenXS、m_blueXS ? ? ? ? 标准差 m_redBZC、m_greeenBZC、m_blueBZC ? ? ? ? 平均灰度 m_redPJHD、m_greenPJHD、m_bluePJHD ? ? ? ? 中值灰度 m_redZZHD、m_greenZZHD、m_blueZZHD ? ? ? ? (3) 在View.cpp中添加直方图的头文件 #inlcude ImageZFT

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档