版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、细胞识别实验课题:细胞识别实验目的:对血液细胞切片图片进行各种处理,最终得出细胞的数目、面积等信息一、实验内容基于VC+6.0软件下的细胞识别,通过细胞的标记、二值化、填洞、收缩、找中心点、计数等过程完成实验目的。1、图像信息获取 (1)在onDraw函数中添加代码实现打开一幅图像的功能。 (2)通过:查看建立类向导添加OnInitialUpdate()函数,实现对自动打开固定图片。获取RGB、HSI信息 (1)通过:查看建立类向导添加OnMouseMove()函数,添加代码实现获取所要信息。 (2)通过函数RgbtoHsi实现RGB向HSI的转化。2、标记Mark点 实现是Mark点,,边界
2、(edge)的标记,MayBeMark To Mark,将细胞、可能是细胞的区域、不可能是细胞的区域、细胞边界分别用红色、蓝色、深红色和黄色标记出来。3、二值化 将原有彩色图像变换为二值图像,背景灰度值为128,细胞灰度值为240,边缘为255。4、填洞 将细胞中灰度值为128的部分的灰度值设置为240。5、收缩 扫描图像,对图像进行预先的3次腐蚀,判断所生成边界点,然后根据原理判定是否标注该点,存放所标志的中心点,便于统计细胞个数及计算细胞半径。6、获取中心点 根据前面所作工作统计获得的中心点个数,去掉一系列不符合要求的点得出最终的细胞个数、细胞的平均半径和平均面积,用对话框输出统计结果。二
3、、学习心得本次设计对VC6.0的认识又进了一步。我学到了:第一,把学过的软件语言进行比较;本项目是基于面向对象的C+语言,与以往我们学习的面向过程C有很大的不同,而比之同样是面向对象的Java而言,比如:指针,java中没有指针;多重继承,C+支持多重继承;数据类型和类,java是完全面向对象的,所有函数和变量都必须是类的一部分;自动内存管理,C+中资源内存释放必须由程序员手动完成;操作符重载,Java不支持操作符重载;预处理功能,这个是我这次做项目发现的,C+中我们熟悉的#include而JAVA就是使用import导入相关包;总之,善于比较各个语言的不同点,我们的收获会很大;第二,在写代码
4、的一些习惯上,之前开发过几个小应用,看过几个老师的视频,把自己的不良习惯改了;第三:编程之前对项目的总体框架要清楚,否则会事倍功半。第四,很惭愧,没有好好的去做这个项目,很多代码都是拷的,后面的几天时间花了好大代价去弥补;第五:这毕竟不是用于生产的实用项目,枯燥是肯定的,需要按捺住心态;注:本项目代码均在notepad+下处理;三、算法分析1.打开图像建立当文档工程;添加Cdib类;添加公共成员函数m_Cdib;添加Serialize()方法;添加显示代码;2RgbtoHsi(&rgb, &Hsi)RGB 向HSI 模型的转换是由一个基于笛卡尔直角坐标系的单位立方体向基于圆柱极坐标的双锥体的转
5、换。基本要求是将RGB 中的亮度因素分离,将色度分解为色调和饱和度,并用角向量表示色调。如果直接对R、G、B处理,其处理过程中很可能会引起三个量不同程度的变化,这样就会产生色差问题,甚至带来颜色上的失真。HSI模型的出现,使得在保持色彩无失真的情况下实现图像处理成为可能。HSI可以更好地区分细胞与非细胞。3. OnMouseMove(UINT nFlags, CPoint point)当鼠标移动时调用此函数 。nFlags 指示各种虚拟按键是否按下。point :鼠标的X,Y坐标:该坐标为 鼠标距离截获该消息的窗口左上角的位置 是一个相对位置而不是在屏幕像素上的绝对位置。在OnMouseMov
6、e函数里调用RgbtoHsi(&rgb, &Hsi)函数,可以在屏幕上显示鼠标所指点的坐标以及RGB、HSI和灰度值,通过HSI的可以选取合适的阈值来找到细胞以及边界。4.OnMark()Mark点指的是我们要寻找的细胞内的点。通过计算色调的平均值设置一个门限值,将色调与平均值差距在门限范围内的点设置为Mark点,同理通过计算色调的平均值设置一个MaybeMark的门限,将色调与平均值差距在门限范围内的点设置为MaybeMark点。5. OnmayMarktoMark()这一步是把可能的Mark点变成Mark点,因为在拍摄图片时由于光线等原因是本来的Mark点变暗,在进行Mark处理时被标记为
7、Maybe Mark,所以需要把可能的Mark点还原Mark点。6、OnEdge()OnEdge()是把边缘标记出来,方便后面的图像处理。提取边缘的过程是先开辟一块内存用于存放数据,通过设置的门限值来找到边缘点,在提取边缘时用到重要的sobel算子,sobel算子主要用作边缘检测。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。7. OnTwoVaule()一幅图像包括目标物体、背景还有噪声,要想从多值的
8、数字图像中直接提取出目标物体,最常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。这是研究灰度变换的最特殊的方法,称为图像的二值化。二值化后更加有利于做图像处理判别。二值化时还要进行均值滤波,因为获得的图像有很多噪音。这主要由于平时的工作和环境引起的,图像增强是减弱噪音,增强对比度。想得到比较干净清晰的图像并不是容易的事情。为这个目标而为处理图像所涉及的操作是设计一个适合、匹配的滤波器和恰当的阈值。均值滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把
9、该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度个g(x,y),即个g(x,y)=1/m f(x,y) m为该模板中包含当前像素在内的像素总个数。8. OnFillHoles()幅细胞灰度图象经过中值滤波,边缘检测和二值化后,得到了细胞的大概轮廓图,但是这幅图的轮廓不是很好,而且中间有孔洞。孔洞的存在会对算法有很大的影响,填充过后的图像更有利于系统识别,这样的图像对于系统的算法进行是非常不利的,因为在以后利用算法腐蚀的时候空洞就会越来越大。这样的情况很难得到正确的结果。这就需要使用孔洞填充的方法进行修正。孔洞填充的原理如下:在阈值处理时,如果像素在阈值范围内,则像素将被标志。孔洞填充将先统计所有连通的非标志区域面积,总会有一个或者几个面积特别大的区域,其它的都是面积相对较小的区域。较小或者很小的往往就是系统所要填充的孔洞了。9. shrink()将填洞过后的细胞图像进行收缩(建立Shrink类,删除细胞边缘层,将内部MARK点变为细胞边缘,完成收缩效果),四错误第一:忘了添加预处理语句;第二:文件路径那块代码拷贝别人的,路径设置和我的不一样,导致错误
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 促销推广活动执行确认函(4篇)范文
- 人力资源服务企业人才招聘及培训计划
- 应急预案演练计划
- 2026上海市黄浦区司法局招聘8名见习人员备考题库带答案详解(能力提升)
- 2026黑龙江哈尔滨音乐学院高层次人才引进15人模拟试卷汇编附答案详解
- 2026重庆市铜梁区选聘区外教育事业单位人员20人参考题库含完整答案详解【历年真题】
- 2026黑龙江大庆市红岗区属学校急需紧缺人才引进10人模拟试卷含答案详解【夺分金卷】
- 2026内蒙古赤峰市敖汉旗教育系统第二次绿色通道引进高校毕业生5人备考题库含完整答案详解(名校卷)
- 2026年合肥经济学院专职辅导员招聘5名笔试题库含完整答案详解【名师系列】
- 2026云南文山州文山市人力资源和社会保障局第四期城镇公益性岗位人员招聘4人笔试题库附答案详解(综合题)
- 工地防洪防汛安全教育
- 中国广电笔试试题及答案
- 周围血管与淋巴管疾病第九版课件
- 机器人操作系统(ROS)课件 1.ROS简介
- 试剂性能验证报告范文
- 子宫内节育器嵌顿查房
- 部门年度工作目标分解与工作计划模板
- 个体餐饮员工的规章制度
- 万象天地详情
- GB/T 7704-2017无损检测X射线应力测定方法
- 采油气井口及阀门知识
评论
0/150
提交评论