ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:1.97MB ,
资源ID:984524      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/984524.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字图像处理课设报告.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字图像处理课设报告.docx

1、数字图像处理课设报告数字图像处理课程设计报告细胞识别 第一部分1、实验课题名称-32、实验目的-33、实验内容概要-3第二部分1、建立工程文件-32、图像信息获取-43、如何建立下拉菜单-64、标记Mark点-65、二值化-96、填洞-97、收缩-108、获取中心点-119、细胞计数-1310、All-steps-1311、扩展功能-14第三部分12、各步骤结果和错误举例-16第四部分13、心得体会-22第一部分1、实验课题:细胞识别2、实验目的:对血液细胞切片图片进行各种处理,最终得出细胞的数目、面积等信息。3、实验内容概要:基于VC+6.0软件下的细胞识别,通过细胞的标记、二值化、填洞、收

2、缩、获取中心点、计数等过程完成实验目的。第二部分实验具体步骤1、建立工程文件1新建MFC工程项目:-MFC AppWizard、工程名2拷贝cdib.h,cdib.cpp到工程文件夹,再向工程里添加3doc.h添加变量:m_lpDib 和头文件#include”cdib.h”4doc.cpp:变量(m_lpDib)的new、delete 5doc.cpp: Serialize()2、图像信息获取1读取图像参数View.cpp: OnDraw() m_pDib-Draw()如果图像不为空的话,那么就执行如下主要代码:2点击键,建立类向导,在messages中添加OnInitialUpdate()

3、函数,添加代码实现对自动打开固定图片。3通过鼠标右击,点击建立类向导,在messages中添加OnMouseMove()函数,添加代码实现获取所要信息,即实现鼠标在图像任一位置移动时可以直观的读取相对应位置的信息。可以在屏幕上显示鼠标所指点的坐标以及RGB、HSI和灰度值,通过HSI的可以选取合适的阈值来找到细胞以及边界。4为了RGB图像转化为人眼更容易识别的HSI模型,我们可以通过添加成员函数RgbtoHsi来实现这一功能。HSI模型与RGB模型的转化关系(添加函数时,可以右击类窗口中的view.h,选中add member function,之后选择函数的返回值类型和函数描述,其它默认不变

4、) 确定后在里面添加实现函数功能的代码。3、添加下拉菜单在resourceview那栏的找到菜单按键设置双击,后在里面添加所需按键每个按键的ID号为注意在填写为IDR_加菜单大写。之后右击按键,建立类向导添加按键所需函数4、标记mark分为四步1.找出mark(red)点和maybemark(blue)点2.将maybemark(blue)点变成mark(black red)点3.将mark(black red)点变成edge(yellow(fullred&fullgreen)点4.edge点滤波基本思想:Mark点指的是我们要寻找的细胞内的点。我们先获取每一个像素点的RGB分量,然后我们将其

5、转化成HSI分量,将H分量进行归一化,因为S的范围是0到1,所以我们要进行尺度的一致,这样才具有可计算性。然后我们通过每个像素点的H分量和S分量的值与细胞内部的H分量和S分量计算欧几里得距离,设定一个Mark门限值(我们这里将MarkDoor设置为0.09,大家可以行设置合适的参数),小于这个门限值我们就当做是细胞的内部,然后对细胞进行标记(Red)。还需要设定一个Maybe Mark门限值(我们这里将Maybe MarkDoor设置为0.15,大家可以行设置合适的参数),我们大于Mark门限值小于Maybe Mark门限值时,我们暂时看成是细胞,我们进行Maybe Mark的标记(Blue)

6、。否则的话,我们需要考虑,一些不是Mark和Maybe Mark点的*lpSrc=0我们区别一下赋值为1,*lpSrc=255我们区别一下赋值为254,*(lpSrc+1)=255我们区别一下赋值为254.这样的话,我们在后面判断是否为Mark点的时候,我们只需要判断*lpSrc是否为0就可以了,判断Maybe Mark点时只需要判断*(lpSrc)是否为255就可以了。对于边缘的判断只需要判断*(lpSrc+1)是否为255就可以了。 将细胞标记为Mark用红色(255,0,0)标记出来 ,将可能是的细胞标记为MayBe Mark用蓝色(0,0,255)标记出来 。将MayBeMark To

7、 Mark的区域用亮红(128,0,0)表示,将不可能是细胞的区域、细胞边界分别用绿色标记出来。操作过程:(1)根据H、S的欧几里得距离sqrt(s2+h2)来大致的确定哪些是细胞(Mark)和可能是细胞(Maybe Mark)的点。(2)根据Maybe Mark点周围的情况,如果它的上下左右四个方向有Mark点,则将Maybe Mark点变成Mark点。(3)用Sobel算子来做边缘的提取边界(0,255,255)(255,255,0),使用3*3的模板,使用欧几里得距离来判断是否为边缘。 两种Sobel算子如下: 主要代码如下:doubletmp1=pixel0+2*pixel1+pixe

8、l2-pixel6-2*pixel7-pixel8;doubletmp2=pixel0+2*pixel3+pixel6-pixel2-2*pixel5-pixel8;double edge=sqrt(tmp1*tmp1+tmp2*tmp2); if(edgeedgeDoor) *(lpDst+1)=255;/Sobel判断该点是否edge/edgeDoor=40(4)edge滤波就是去除全边缘点(四周都是背景或边缘)(强度为5) 5、二值化 基本思想:将原有彩色图像变换为二值图像,其中细胞0X80(128) 用Gray(灰色) 标记出来,边缘0xF0(240)用Bright(亮色)标记出来,其

9、他表示为0。主要代码:6、填洞 将细胞中或者细胞相邻的地方的较小的背景填成细胞的背景,填完的细胞背景的灰度值是129,因为都被访问过了,然后将边缘去掉。 填洞的基本思想:首先将细胞或边缘内的黑点置为vistied = 0x01 ,以该黑点为中心,在其上下左右侧进行访问是否有未访问的黑点,若有则将上方黑点压栈,且上下左右侧的黑点置已访问。将堆栈顶端的数据弹出,作为新的种子进行扩散,即以该元素为基点,判断其周围是否存在未访问黑点,若有则继续压栈,重复操作。直到找到最后一点,此点四周均不存在未访问黑点,结束访问。若洞像素数小于100大于50,洞内像素数及其初进栈的点(56,(409,222)时,则进

10、行填洞。填洞的过程就是将非mark点转化为mark点。主要标记访问代码:填洞函数主要代码分析:填完洞后,进行下面操作:如果图像中只有已访问黑点0x01则将其恢复成0;如果图像中只有Edge点0xf0则将 Edge置为黑点。这样图像中只有黑色的背景以及灰色的细胞mark(0x80)点。主要代码:7、收缩 收缩的目的是为了方便计数。通过扫描图像,对图像进行预先的3次腐蚀,判断所生成边界点,然后根据原理判定是否标注该点,存放所标志的中心点,便于统计细胞个数及计算细胞半径。由Mark生成边界,我们有四邻域生成边界和八邻域生成边界。判断该点是否为Mark点,如果是Mark点的话,我们判断i、j是否是我们

11、选取图片的边界,如果是的话,我们将该点变成边缘点,否则我们判断它的上下左右(周围八个点)是否有非Mark点,如有有,则将这边变成边缘点,反之,不变。8邻域收缩操作代码(4邻域与8邻域思想相同):8、获取中心点 根据前面所作工作统计获得的中心点个数,去掉一系列不符合要求的点得出最终的细胞个数、细胞的平均半径和平均面积,用对话框输出统计结果。 操作过程如下:1首先我们要去除访问标志,是我们先前一次在判断是否需要保存点的时候(MarkIt(int i, int j)),我们将边缘点都标记成访问过了,这时在处理下一次遍历图片发现中心点的时候,我们要进行判断点是否要保存就没有办法做了,所以在没进行一次图片的遍历之前我们都需要去除访问标志。 主要代码:*lpSrc&=NO_VISITED;/0xfe/ 清

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1