- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字图像处理课程设计报告
——————细胞识别
目录
一、实验内容………………………………………...........................................3
实验过程……………………………………………………………………3
算法分析……………………………………………………………………4
实验结果……………………………………………………………………12
实验中错误…………………………………………………………………16
实验心得……………………………………………………………………17
实验课题:细胞识别
实验目的:对血液细胞切片图片进行各种处理,最终得出细胞的数目、面积等信息
一、实验内容
基于VC++6.0软件下的细胞识别,通过细胞的标记、二值化、填洞、收缩、找中心点、计数等过程完成实验目的。
实验过程
1、图像信息获取
(1)在onDraw函数中添加代码实现打开一幅图像的功能。
(2)通过:查看——建立类向导——添加OnInitialUpdate()函数,实现对自动打开固定图片。
获取RGB、HSI信息
(1)通过:查看——建立类向导——添加OnMouseMove()函数,添加代码实现获取所要信息。
(2)通过函数RgbtoHsi实现RGB向HSI的转化。
2、标记Mark点
实现是Mark点,,边界Edge的标记,MayBeMark To Mark,将细胞、可能是细胞的区域、不可能是细胞的区域、细胞边界分别用红色、蓝色、深红色和黄色标记出来。
3、二值化
将原有彩色图像变换为二值图像,背景灰度值为0,细胞内部灰度值为128,边缘为240。
4、填洞
遍历图像,将mark及edge外部的黑点全置为已访问0x01,再将0x01恢复成0。Edge置为黑点。
5、收缩
进行8方向收缩,将最边界的Mark点或者mark点八方向有一个不是Mark点置成边缘Edge,去掉边缘点,然后将剩下的Mark点生成边缘点,再去掉在生成,直到去掉三次边缘,就这样收缩,如果收缩过程中有些Mark点收缩到很小,可以认为那不是细胞,那就可以直接去掉。
6、获取中心点
根据前面所作工作统计获得的中心点个数,去掉一系列不符合要求的点得出最终的细胞个数、细胞的平均半径和平均面积,用对话框输出统计结果CImgcell203View的公共成员函数m_Cdib
添加Serialize()
添加显示代码
打开图像
自动打开图像
2、RgbtoHsi(Rgb *pRgb, HSI *pHsi)
RGB 向HSI 模型的转换是由一个基于笛卡尔直角坐标系的单位立方体向基于圆柱极坐标的双锥体的转换。基本要求是将RGB 中的亮度因素分离,将色度分解为色调和饱和度,并用角向量表示色调。
如果直接对R、G、B处理,其处理过程中很可能会引起三个量不同程度的变化,这样就会产生色差问题,甚至带来颜色上的失真HSI模型的出现,使得在保持色彩无失真的情况下实现图像处理成为可能HSI可以更好地区分细胞与非细胞。
3、OnMouseMove(UINT nFlags, CPoint point)
当鼠标移动时调用此函数显示所要显示的数据 。
nFlags 指示各种虚拟按键是否按下。
point :鼠标的X,Y坐标:该坐标为 鼠标距离截获该消息的窗口左上角(类似原点)的位置。
在OnMouseMove函数里调用RgbtoHsi(rgb, Hsi)函数,可以在屏幕上显示鼠标所指点的坐标以及RGB、HSI和灰度值。
4、OnMark()
Mark点指的是我们要寻找的细胞内的点。通过计算色调的平均值设置一个门限值MarkDoor=0.09。与目标偏离小于0.09,将色调与平均值差距在门限范围内的点设置为Mark点,同理通过计算色调的平均值设置一个MaybeMark的门限MayBeMarkDoor=0.15,与目标偏离在(0.09,0.15)之间,将色调与平均值差距在门限范围内的点设置为MaybeMark点。
MarkMaybeMrak
Maybemark to mark
6、OnEdge()
OnEdge()是把边缘标记出来,方便后面的图像处理。提取边缘的过程是先开辟一块内存用于存放数据,通过设置的门限值来找到边缘点,在提取边缘时用到重要的sobel算子,sobel算子主要用作边缘检测。该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。
7、OnTwoVaule()
一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最常用的方法就是设定一个
文档评论(0)