- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
区域提取与分析
——图像分析实验
SHanxin Feng
实验目的
有一幅显微镜下获得的颗粒图,计算出每个粒子的面积、长轴、短轴。用列表的形式给出计算结果。
实验目标很明确:
对图像中的连通片进行提取
统计出每个连通元的面积
计算长轴和短轴
语言C。
实验方法
图像二值化
阈值与结果有很大的关系,图像中一些细小的点很多,而且明暗变化于0~255之间,所以阈值过大时会排除掉很多点,程序中使用的折中的125。
区域标记
简单起见,考虑4-连通的情况。本图中,4-连通与8-连通有一点差别,如下一块,着色不同表示不连通。
8连通时,左上角的小块跟大块是连通的。
实际标记时利用了两个模板,前者用于正向扫描,后者用于逆向扫描。
0 A 0 0 1 A
B 1 0 0 B 0
实验中,正向扫描先考察A,A有标记(无标记,默认是-1),则当前位置表为A_mark,否则,如果B有标记,则标为B_mark,否则,用新的计数;逆向扫描类似。
存储标记的节点如下:
typedef struct PNode{
char pixel; //像素
int mark; //标记
}PNode;
第一次正向扫描结果如下:(用不同的颜色表示不同的计数)
部分放大:
逆向扫描结果如下:
还有六处没有正确标记的,其中一处如下:
这是可以理解的,比如如下的情况:
-1 2 2 2 2 2 2 -1
-1 -1 1 1 1 -1 -1 -1
由于逆向扫描时,先考虑右边像素再考虑下方像素,则蓝色下划线的“2”处仍然不变。
第二次正向扫描,得到正确的标定:(即,每个连通片只有一种颜色)
整理标记,统计面积
由于标记本身并没有完全按照计数的顺序排列(只是同一连通片当中的标记相等而已),因此进行一次整理,同时维护一个存储面积和整理过后的计数(依次排列)的链表,如下:
typedef struct NUMNode{
int mark; //标记
int num; //像素个数(面积)
NUMNode* next;
}NUMNode;
将2)结构中的pix数组中的计数处理后存入链表,由于同一连通片拥有一样的标记,根据标记进行查找,统计出各连通片的面积(包含的像素个数)。
长轴计算
重新定义一个结构体数组,每个结构体记录了一个连通片的边缘信息,结构如下:
typedef struct EDGEENode{
int en; //边缘点个数(周长),
int x[300]; //边缘点的x坐标,数组长度只要比max{en}大就可以了
int y[300]; //边缘点的y坐标
float lo; //连通片长轴
float sh; //连通片短轴
}EDGEENode;
维护这一数组是为了方便理解和处理。
数组的有效长度即连通片的个数(本图为30),首先根据计数值提取各个连通片的边缘像素的值以及个数(对于4-连通,边缘像素就是上下左右存在黑色像素),从而,可以将长轴与短轴的计算都局限在一个小范围中。
长轴的获取就是计算边缘点中相距最远的两点的距离,考虑到有很多连通片只有很少的几个像素组成,为了相互区别,因此使用的欧拉距离。
短轴计算
短轴的计算其实是一个很复杂的过程,按照定义,我的理解就是,在长轴的垂直方向上,距离最远的两个点的距离。
垂直用斜率k1*k2=-1表示,对于k1或者k2不存在或者为0的情况,单独考虑。
但是,关键问题在于,当长轴确定时,k1的值是精确的,但是计算得到的-1/k1与实际两点间的k2不可以能完全符合,或者说,连通片中甚至都不存在跟长轴完全垂直的两点,因此,短轴的选择是一个取舍问题。
如果连通片很大,则这一问题不明显,我们还可以按照取min{k1*k2+1}得到“最为”垂直的点,然后在这些点中寻找相距最远的两点。
但是如果连通片很小,则会出现很多细节问题,比如短轴甚至不存在,或者说即使是min{k1*k2+1}对应的k2也显然不是垂直的关系。因此第二种方法是限定阈值,即fabs(k2+1/k1)=Threshold,理想情况自然是Threshold=0,但是问题是,差值选多少比较合适;|k1|大时,|k2|很小,反之亦然,所以按照百分比取阈值,实验中使用的(1/fabs(k1))*0.5;即50%。
由于最终结果的好坏与否很难评定,因此实际上我也不知道这么选择是否合适,但是调整阈值大小可以看出变化,当阈值变小(比如用10%),则很多包含像素较少的连通片的短轴都会变为0。
结果分析及结论
程序运行前,请将图像放在D:\目录下,并且命名为1.png。
运行后在D:\目录下形成2.png,3.png,4.png,
您可能关注的文档
最近下载
- 《气瓶安全技术规程》.pdf VIP
- 敦煌文学艺术_浙江师范大学中国大学mooc章节课后测试答案期末考试题库2024年.docx VIP
- 调整公办高校本科学费标准政策解读-河北物价局.PDF
- 2025中国船级社人才招聘50人笔试历年参考题库附带答案详解.docx
- 学堂在线 数据结构(上) 章节测试答案.docx VIP
- 绿色工厂管理组织结构成立及职责(制作公司正式红头文件,主要修改标颜色部分,其它部分可据实调整).doc VIP
- 人教版高中数学A版 必修第1册《第三章 函数的概念与性质》大单元整体教学设计.docx
- 焊接及热切割作业初训.ppt
- 匡文波版《手机媒体概论》(2025年版)期末模拟试题(四).pdf VIP
- 学堂在线 唐宋词鉴赏 期末考试答案.docx VIP
原创力文档


文档评论(0)