以 Halcon 里支持的 Region 特征为基础,做概念总结
形状特征
1)圆度(Circularity)
衡量一个形状接近圆的程度,取值为 [0, 1]
Circularity=区域面积π外接圆半径2
另一种算法是,统计边界点到中心的距离,根据方差反映圆度
Halcon 对应上面两种思路有相应的算子:circularity、roundness
2)紧密度(Compactness)
参考 wikipedia,衡量一个形状紧致程度,取值为 [0, 1],对于圆,紧密度为 1
Compactness=A22πi21+i22−−−−−√
其中
A
为形状面积,
i1和
i2
为二阶矩:
i1=∑I∑Ji2image(i,j)
;
i2=∑I∑Jj2image(i,j)
关于紧密度的一个比喻:用不同长度的绳子围成一个面积一定的区域,使用的绳子长度越短则紧密度越高。
又由于圆的边缘没有转角,很光滑,因此紧密度又称为粗糙度
Halcon 对应的算子为 compactness
3)矩形度(Rectangularity)
参考《图像处理基本算法 形状特征》,衡量一个形状接近矩形的程度,取值为 [0, 1]
Rectangularity=AEr
其中
A
为形状面积,
Er为最小外接矩阵面积
Halcon 对应算子为 rectangularity
4)凸性(Convexity)
参考文献【1】(顺便推荐作者关于凸性的研究主页),凸性的计算有很多种方法。这里介绍两种,第二种(Halcon用的这种)更为常见
定义1:对于二维形状
S
,在上面随机选择A、B两个点,统计线段
[AB]
上落在
S
内的点的个数
定义2:对于二维形状S,令
CH(S)
为其最小外接凸形
Convexity=Area(S)Area(CH(S))
图1是
CH(S)
的一个示例
图1. 二维形状的外接凸形
Halcon使用算子 convexity 计算凸率;使用 shape_trans 转换区域为凸包/最小外接圆/外接矩形
5)偏心率(Eccentricity)
参考章毓晋的《图像工程》,介绍一种平移、旋转和尺度不变的算法
令三维形状的每个点坐标为
(xi,yi,zi)
,每个点的质量(图像可以理解为灰度值)
mi
,有
Eccentricity=pq=2[(A+B)−(A−B)2+4H2]√−−−−−−−−−−−−−−−−√2[(A+B)+(A−B)2+4H2]√−−−−−−−−−−−−−−−−√
其中
A=∑mi(y2i+z2i)
,
B=∑mi(z2i+x2i)
,
H=∑mixiyi
Halcon 里是用其等效椭圆的长半轴除以短半轴计算的:eccentricity
6)蓬松度(Bulkiness)
参考Halcon13的文档,感觉跟紧密度相反,圆为1,越松散值越大
Bulkiness=π∗Ra∗RbA
其中
⎧⎩⎨⎪⎪⎪⎪⎪⎪Ra=8(M20+M02+(M20−M02)2+4M211√)√2Rb=8(M20+M02−(M20−M02)2+4M211√)√2
其中
Mij
是二阶不变矩
Halcon13文档里有以上特征的描述及图例
区域特征
1)区域面积
就是像素点相加
但区域一般是用形成编码表示,累加每行的行程就可以
2)区域中心
中心点
y=∑yi面积
,
x=∑xi面积
3)区域几何矩
几何矩具有旋转、尺度不变性,应用在形状分类上
mp,q=∑ypxq
面积=m0,0=∑y0x0
重心=(m1,0,m0,1)=(1面积∑y1x0,1面积∑y0x1)
归一化矩=np,q=1面积∑ypxq
中心矩=μp,q=1面积∑(y−n1,0)p,(x−n0,1)q
4)等效椭圆
区域的方向和范围可以用等效椭圆来表示
等效椭圆的中心与区域中心一致,长半轴
r1
、短半轴
r2
和相对于x轴的夹角
θ
由二阶矩算出
r1=2(μ2,0+μ0,2+(μ2,0−μ0,2)2+4μ21,1−−−−−−−−−−−−−−−−√)−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−√
r2=2(μ2,0+μ0,2−(μ2,0−μ0,2)2+4μ21,1−−−−−−−−−−−−−−−−√)−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−√
θ=−12arctan2μ1,1μ0,2−μ2,0
Halcon里对应的算子为 elliptic_axis()
【1】J. Zunic, P.L. Rosin, “A New Convexity Measure for Polygons”, IEEE Transactions Pattern Analysis and Machine Intelligence, vol. 26, no. 7, pp. 923-934, 2004.