VC++数字图像处理源程序及详解之4(灰度阈值变换).docVIP

VC++数字图像处理源程序及详解之4(灰度阈值变换).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9.4? 灰度阈值变换 本节介绍灰度阈值变换的基本原 理和实现方法,它用于产生二值图。 9.4.1? 基本原理 阈值,又称为临界值,它目的是要确定出一个范围,然后在这个范围内的部分使用同一种方法处理,而阈值之外的部 分则使用另一种处理方法或者保持原样。 灰度的阈值变换可以让一幅图像变成黑白二值图,其 表达式为: 其中T为阈值,如果图像的像素值小 于阈值,则变换后该点的灰度值为0,反之则为255。阈值变换的效果如图9-24所示。 图9-24? 灰度阈值变换 阈值变换在生物学上的运用较为广泛,常用于细胞图 像分割等。 9.4.2? 编程实现 1.阈值变换函数 下面的函数实现了图像的阈值变换。 /*************************************************************************** *?? 作用: 灰度阈值变换函数 *?? 参数:??????? *?????? pixel: ???? 原始像素数组 *?????? tempPixel: 保存变换后图像的像素数组 *?????? width: ???? 原始图像宽度 *?????? height: ??????? 原始图像高度 *?????? thr: ?????? 阈值 ***************************************************************************/ void ThresholdTrans(BYTE* pixel, BYTE* tempPixel, UINT width, UINT height, int thr) { ??? // 灰度映射表 ??? BYTE map[256]; ??? for (int i = 0; i 256; i++) ??? { ??????? if (i = thr) ??????????? map[i] = 255; ??????? else ??????????? map[i] = 0; ??? } ??? // 变换后的值直接在映射表中查找 ??? for (UINT i = 0; i width * height; i++) ??? { ??????? int x = pixel[i * 4]; ??????? tempPixel[i*4] = tempPixel[i*4+1] = tempPixel[i*4+2] = map[x]; ??????? tempPixel[i*4+3] = 255; ??? } } 2.阈值变换对话框 打开MagicHouse项目,添加一个ID为 IDD_THRESHOLD的对话框资源,按照图9-25完成其设计。然后为其添加名为CThresholdDlg的对话框类,并按照表9-4关联对应变 量。 图9-25? 对数变换对话框的设计 表9-4? 阈值变换对话框资源与变量的关系 编??? 号 资 源 类 型 资源ID 关联变量类型 关联变量名称 1 滑块控件 IDC_SLIDER CSliderCtrl m_SliderNum 2 文本框 IDC_NUM int m_nNum 3.实例代码清单 下面列出ThresholdDlg.h的代码清 单: #pragma once #include PreviewDlg.h #include afxcmn.h // CThresholdDlg 对话框 class CThresholdDlg : public CDialog { ??? DECLARE_MESSAGE_MAP() ??? DECLARE_DYNAMIC(CThresholdDlg) public: ??? CSliderCtrl m_SliderNum;??????????? ??????? // 阈值的滑块对象 ??? int m_nNum;???????? ??????????????????? // 阈值 ??? int m_nPos;???????????? ??????????????? // 滑块对象关联变量 ??? // 标准构造和析构函数 ??? CThresholdDlg(CWnd* pParent = NULL); ??? virtual ~CThresholdDlg(); ??? void Refresh();???????????????????? ??? // 刷新预览窗口 ??? virtual BOOL OnInitDialog();??????????? ??? // 初始化对话框 ??? afx_msg void OnEnChangeNum();?????? ??? // 阈值被修改时的响应函数 ??? afx_msg void OnB

文档评论(0)

lizhencai0920 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6100124015000001

1亿VIP精品文档

相关文档