2015秋 数字图像处理实验二 综合实验
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//细胞核和核仁的面积统计
//统计结果存入数组 parameter[index-1]=(float)area_nucleolus/(area_cell+area_nucleolus); //把当前测量的细胞,细胞核与核仁置不同的标记输出 //测量结果存文件,以分析测量数据
菜单中的消息响应函数
预处理
为何需要预处理?
直接分割的效果
选择何种预处理方法?
中值、均值、形态学开闭运算的效果对比 分析预处理的目的,有针对性的选择合适的方法
预处理
中值滤波
原图
灰值闭运算
分割
分割方法的选择 全局阈值 大津阈值 水域分割 …
中值滤波后分割
分割后的效果 直接分割 噪声、边缘毛刺 滤波后分割
//统计该连通区域的大小
//连通区域太小,滤除,此处大小可根据实际应用自行设定 *(segment.m_pImgData+k*lineByte+l)=255; //滤除 //其余的连通区域被认定为目标,给定编号 *(segment.m_pImgData+k*lineByte+l)=index;
输出测量结果
细胞图像分割测量的方案步骤
数学形态学
腐蚀:集合 A 被集合 B 腐蚀,表示为 A B ,数学形式为
A B = {x : B x A}
膨胀: A 被 B 膨胀表示为 A B , 其定义为:
A B [AC
(-B )]C
A B
A
A B B
腐蚀类似于收缩
利用圆盘膨胀
实验一:现场演示,检查,提问 实验二:现场演示,检查,提问 实验三:现场演示,检查,提问,提交报告和代码 实验成绩占最终成绩的30%。
相关资料下载地址: 下载专区
//新建视图,显示分割结果分割结果源自测量结果五、思考题
1.若将预处理去噪的步骤省掉,则如何在目标编号的 过程中加入滤波处理; 2.将去噪过程与阈值分割前后调换, 选择哪种滤波方法可以滤除二值图像 上的噪声; 3. 如果正常细胞的核仁与细胞核面积 比范围在0.1-0.3之间,则如何滤掉不 正常的细胞; 4.总结大津阈值在细胞图像分割中存在 的问题,想一想你所学的算法中哪种算 法更适合于细胞图像的分割。
分割
问题:
存在虚假目标
观察:
大小
用区域生长法提取每一个连通区域,大的区域 被确认为目标并依次编号,小的则滤除
程序实现:
//用区域生长法提取每一个连通区域 ImgSegment segment(size, pDib->m_nBitCount, pDib->m_lpColorTable, graytrans.m_pImgDataOut); //定义ImgSegment的类对象,并对其初始化 … … … int count, index=1; CPoint point; 给定一个种子点point和阈 值1,从种子点处开始生长, 将与种子点像素灰度值之 差小于1的像素合并在一起 if(*(segment.m_pImgData+i*lineByte+j)==0){//找到一个待提取的区域 形成一个区域 point.x=j; point.y=i; segment.RegionGrow(point, 1);//区域生长
灰值闭运算后分割
程序实现:
void cellSeg(ImgCenterDib * pDib, ImgCenterDib *pDibOut) { int i, j, k, l; //获取图像的尺寸 (略)
图像数据 //形态学滤波 //定义形态学类的对象morph,并用当前DIB为其初始化 Morphology morph(pDib->GetDimensions(),pDib->m_nBitCount, pDib->m_lpColorTable, pDib->m_pImgData); //模板定义,5*5模板 尺寸 每像素位数 颜色表 int maskBuf[25]; for(i=0;i<25;i++) maskBuf[i]=1;
void CFirst1View::OnCellSeg() { //获取文档类中m_dib的指针,访问当前DIB数据
} //定义ImgCenterDib类的对象dibOut,并用当前DIB为其初始化 ImgCenterDib dibOut(pDib->GetDimensions(),pDib->m_nBitCount,pDib>m_lpColorTable, pDib->m_pImgData); cellSeg(pDib, &dibOut); //调用cellSeg函数,实现细胞的分割测量
区域生长法滤除细小目标
8
1
区域生长对目标编号
细胞测量
核仁与细胞核的面积比 需要再一次对细胞核分割
统计编号为index(1,2,3…)的细胞直方图 大津阈值计算最佳阈值 细胞核和核仁的面积统计
//核仁与细胞核的分割(再次利用大津阈值) int area_cell, area_nucleolus; float *parameter=new float[cellNum]; for(index=1;index<=cellNum;index++){ //统计编号为index的细胞直方图 for(k=0;k<256;k++) histogram[k]=0; for(i=0;i<height;i++){ for(j=0;j<width;j++){ if(*(segment.m_pImgData+i*lineByte+j)==index){ k=*(pDib->m_pImgData+i*lineByte+j);//原图数据 histogram[k]++; … thresh=segment.threshOtus(histogram);
二、实验环境
计算机 VC++ 6.0 部分应用程序框架和代码。
待处理图像
细胞核 核仁
待处理图像
三、实验步骤
预处理去噪 大津阈值分割
滤波:中值、均值、形态学 分割:大津阈值、全局阈值; 编号:剔除虚假目标; 处理:面积比;
区域生长法对目标编号
对每个目标分割为细胞核和核仁, 测量细胞核与核仁的面积比
大津阈值的缺陷
阈值法分割:
利用阈值法分割的前提: 目标和背景内部像素的灰度高度相关 但其交界处灰度值差别大 目标和背景两个单峰直方图混合构成
OK
大津阈值缺陷: 当目标物与背景灰度差不明显 或者对象区域面积占图像的比例特别 小时,分割效果不好。
NO
水域分割
边缘检测+区域生长
数学形态学
开运算:利用图像 B 对图像 A 做开运算,用符号 A B
表示,其定义为: A B ( AB) B 开运算用于去除较小的明亮细节,同时相对的保持整 体的灰度级和较大的明亮区域不变。
闭运算:是开运算的对偶运算,定义为先作膨胀然后再
作腐蚀. 利用 B 对 A 作闭运算表示为 A B ,其定义为: A B [ A (B)] (B) 闭运算可用于去除图像中的暗细节部分,而相对的保 持明亮细节不受影响。
数字图像处理——综合实验
细胞图像的分割与测量
一、实验目的
1.学习图像中心“图像处理典型算法演示 系统”应用程序框架,掌握基于类的图像 编程技术; 2.分析细胞图像特点,在典型算法应用程 序框架上完成细胞图像的分割和测量,并 分析测量结果。 3.将图像预处理、分割、分析等关键技术 结合起来,理论与实践相结合,提高图像 处理关键技术的综合应用能力。
梯度图中灰度低的部分 梯度图中的亮带 背景和目标的内部区域 目标的边缘
极 小 值 区 域
水面从极小值区域(一般分布在目标内部以及背景处)开始上涨,当不同 区域的水面不断升高将要汇合在一起时(目标边界处),得到分水线完成 分割。
实验要求:
实验检查时间:
实验一、二:12月9日(第12周周三)晚 18:30-21:30 实 验 三: 12月23日(第15周周三)晚18:30-21:30
morph.InputMask(maskBuf,5,5);//输入模板 morph.GrayClose();//灰值闭 //m_pImgData为输入图像,m_pImgDataOut为输出图像
程序实现:
//大津阈值分割 //统计直方图 int histogram[256]; for(i=0;i<256;i++) histogram[i]=0; for(i=0;i<height;i++){ for(j=0;j<width;j++){ histogram[*(morph.m_pImgDataOut+i*lineByte+j)]++; //对输出的图像统计直方图 } } ImgSegment segment1; //定义ImgSegment的类对象segment int thresh=segment1.threshOtus(histogram);//调用ImgSegment的类函数threshOtus:大津阈值选 择函数 //将大津阈值thresh作为二值化分割的参数,对图像二值化分割 GrayTrans graytrans(size,morph.m_nBitCount,morph.m_lpColorTable, morph.m_pImgDataOut); //morph.m_pImgDataOut作为graytrans中的输入图像 graytrans.Binary(thresh); //输出图像为graytrans.m_pImgDataOut