细胞识别(课程设计).doc

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

PAGE PAGE 1 数字图像处理课程设计报告 细胞识别 实验课题:细胞识别 实验目的: 对血液细胞切片图片进行各种处理,最终得出细胞的数目、面积等信息 一、实验内容 基于VC++6.0软件下的细胞识别,通过细胞的标记、二值化、填洞、收缩、找中心点、计数等过程完成实验目的。 1、图像信息获取 (1)在onDraw函数中添加代码实现打开一幅图像的功能。 (2)通过:查看——建立类向导——添加OnInitialUpdate()函数,实现对自动打开固定图片。 获取RGB、HSI信息 (1)通过:查看——建立类向导——添加OnMouseMove()函数,添加代码实现获取所要信息。 (2)通过函数RgbtoHsi实现RGB向HSI的转化。 2、标记Mark点 实现是Mark点,,边界(edge)的标记,MayBeMark To Mark,将细胞、可能是细胞的区域、不可能是细胞的区域、细胞边界分别用红色、暗红、蓝色和绿色标记出来。 3、二值化 将原有彩色图像变换为二值图像,背景灰度值为128,细胞灰度值为240,边缘为255。 4、填洞 将细胞中灰度值为128的部分的灰度值设置为240。 5、收缩 扫描图像,对图像进行预先的3次腐蚀,判断所生成边界点,然后根据原理判定是否标注该点,存放所标志的中心点,便于统计细胞个数及计算细胞半径。 6、获取中心点 根据前面所作工作统计获得的中心点个数,去掉一系列不符合要求的点得出最终的细胞个数、细胞的平均半径和平均面积,用对话框输出统计结果。 二、学习心得 这次的课程设计,我受益颇多!让我们明白了VC6.0这款软件的强大,这几天的学习,让我知道了MFC(Microsoft Foundation Classes)这个非常好用的类库,也学会了它的使用方法。通过这几天的探究,我明白要想把一个东西做好,必须下足功夫,必须专心致志,必须去亲自动手。 总之,经过这几天的努力,我们终于完成了这份课程设计任务。明白了以前学的C++原来是很重要的,还让我也对以往的知识有了个回顾和进一步的加深。也让我对别的知识有了了解。此次课程设计给我们提供了一个既能学习又能锻炼的机会,使我们养成了查找资料的习惯,将理论与实际相结合起来,锻炼了分析问题和实际解决问题的能力。提高了适应能力,为今后的学习和实践打下了基础。 三、算法分析 1.打开图像 建立当文档工程 添加CDIB类 添加CImgcell203View的公共成员函数m_Cdib 添加Serialize() 添加显示代码 2.RgbtoHsi(rgb, Hsi) RGB 向HSI 模型的转换是由一个基于笛卡尔直角坐标系的单位立方体向基于圆柱极坐标的双锥体的转换。基本要求是将RGB 中的亮度因素分离,将色度分解为色调和饱和度,并用角向量表示色调。 如果直接对R、G、B处理,其处理过程中很可能会引起三个量不同程度的变化,这样就会产生色差问题,甚至带来颜色上的失真。HSI模型的出现,使得在保持色彩无失真的情况下实现图像处理成为可能。 HSI可以更好地区分细胞与非细胞。 3. OnMouseMove(UINT nFlags, CPoint point) 当鼠标移动时调用此函数 。 nFlags 指示各种虚拟按键是否按下。 point :鼠标的X,Y坐标:该坐标为 鼠标距离截获该消息的窗口左上角的位置 是一个相对位置而不是在屏幕像素上的绝对位置。 在OnMouseMove函数里调用RgbtoHsi(rgb, Hsi)函数,可以在屏幕上显示鼠标所指点的坐标以及RGB、HSI和灰度值,通过HSI的可以选取合适的阈值来找到细胞以及边界。 4.OnMark() Mark点指的是我们要寻找的细胞内的点。通过计算色调的平均值设置一个门限值,将色调与平均值差距在门限范围内的点设置为Mark点,同理通过计算色调的平均值设置一个MaybeMark的门限,将色调与平均值差距在门限范围内的点设置为MaybeMark点。 if(disMarkDoor){//Mark *lpSrc=0;*(lpSrc+1)=0;*(lpSrc+2)=255;//Red } else if(disMayBeMarkDoor){//may be Mark *lpSrc=255;*(lpSrc+1)=0;*(lpSrc+2)=0;//Blue } else{//not Mark/maybe Mark if(*lpSrc==0) *lpSrc=1;//Mark else if(*lpSrc==255) *lpSrc=254;//maybe mark if(*(lpSrc+1)==255) *(lpSrc+1)=254; //e

文档评论(0)

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

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

1亿VIP精品文档

相关文档