众所周知,Region和XLD是数字图像处理中的两大图元对象,两者的数据结构不同,各自的地基也不同,但在使用上却有很多相似的地方。下面具体说说Region与XLD两大对象的地基。
Region简介:
Region是图像处理里面的一大对象,该对象描述图像中的区域。图像可通过threshold(阈值分割)算子转换成区域,也可以手动画ROI (感兴趣区域)来定义区域。手动ROI跟阈值分割转换区域是不同的,前者基于窗口,后者基于像素灰度值,也就是说,ROI是直接在窗口上划定一个区域,无论你是否读取不同的图片,而阈值分割会根据你定义的灰度值区间来提取图像中满足这一区间的像素点来归纳成一个区域。手动ROI区域里面包括了不受限制的像素点的灰度值,阈值分割只有特定区间值的灰度值像素点,手动ROI区域对于connection(区域连通量计算)是没有意义的,阈值分割的区域可通过区域连通量计算将区域的不相链接的区域区分成一个个独立的区域。
Region的简单理解:
Region在图像中表示区域,图像咱们就拿地图来说,地图上一个个的分界线所包含的内容代表一个区域,不过这种区域被归纳为ROI区域(人类文明决定的)。若我们要区分地图上水,水通过蓝天映射成蓝色,具有蓝色特性,我们将蓝色所在的灰度值区间归纳成一个区域,这种“自然因素”决定的可区分的区域可由“阈值分割”分割成水区,再通过“区域连通量计算”区分成海、湖、水库等。当然无论ROI或者阈值分割的区域都具有区域特性,大致想象就能推论出一些,比如区域大小、中心位置、形状特征等。
XLD简介:
图像中Image和Region数组结构都是基于像素精度的,在实际工业中需要比图像像素分辨率更高的精度,这种精度我们称之为亚像素精度。我们知道相机的CCD芯片是由M*N个感光小元件构成的,每个感光小元件之间具有一定的间隙,这样成的像实际是网格状的,网格代表感光元件之间的间隙,像这样若精度基于像素具有一定误差。而亚像素就是细化这些间隙的,因此精度是高于基于像素点的精度。在halcon中XLD表示的就是亚像素级别的轮廓。
轮廓是用浮点数表示XLD各点的行、列坐标。提取XLD并不是沿着像素与像素交界的地方,而是经过差值之后的位置。
XLD的简单理解:
前面说到,拿地图来理解Region。其中区分的区域在一定程度上是不精确的,假设世界都变得斤斤计较起来,相邻两国之间为追求利益最大化,将各自领土精确到尘土上那要如何划分界线?具体事情具体分析,既然精确到尘土,那我们拿比尘土更小的单位来穿插。这里我们把像素比喻成尘土,那亚像素就是这个比尘土还小的单位。在图像上像素是最小单位,在地表上尘土是最小单位,可想Region是基于像素点的,对于一些精度要求非常高的系统中就需要利用到亚像素精度,通过插值算法确定亚像素点坐标通过链接形成XLD轮廓。
XLD轮廓的数组结构:
typedef struct con_type{
HITEMCNT num;//XLD轮廓点的个数
HSUBCOOK * row;//XLD轮廓点行坐标
HSUBCOOK * column;//XLD轮廓点列坐标
Hcont_class;//XLD轮廓是否交叉及交叉的位置
INT4 num_attrib;//附加属性个数
Hcont_attrib*attribs;//XLD轮廓附加点属性
INT4 num_blobal;//XLD轮廓附加的全局属性个数
Hcont_global_attrib*attrib;//XLD轮廓附加的每个轮廓的属性
INT4 h;//辅助属性
}
XLD常用的数据结构有:
1、XLD_cont(array):由轮廓的亚像素点组成,包括一些附加属性(比如方向)。
2、XLD_poly(array):用于表示多边形轮廓,可以由多边形的顶点构成多边形轮廓,也可以由一组控制点组成,多由其它轮廓XLD、区域Region或者点生成。
XLD轮廓附加属性的获取:
算子:
query_contour_attribs_xld(Contour::Attribs) *查询XLD包含了哪些属性名称
get_contour_attrib_xld(Contour::Name:Attrib) *计算XLD包含的属性的属性值
XLD轮廓的自相交与不自相交:
XLD的状态有两种,自相交与不自相交。这两种状态下XLD数据结构中的附加的其它特性截然不同。可使用test_self_intersection_xld算子来判断XLD是否自相交。
Region和XLD的特征:
Region的特征主要有以下三个部分:
1、基础特征:面积、中心、宽高、左上角与右下角坐标、长半轴、短半轴、椭圆方向、粗糙度、连通数、最大半径、方向等。
2、形状特征:外接圆半径、内接圆半径、圆度、紧密度、矩形度、凸性、偏心率、外接矩形的方向等。
3、几何特征:二阶矩形、三阶矩形、主惯性轴等。
特征筛选的算子:select_shape
XLD的特征主要分为以下四个部分:
1、基础特征:面积、中心、宽高、左上角及右下角坐标。
2、形状特征:圆度、紧密度、长度、矩形度、凸性、偏心率、外接矩形的方向及两边的长度等。
3、云点特征:云点面积、中心、等效椭圆半轴及角度、云点方向等。
4、几何特征:二阶矩等。
特征筛选的算子:select_shape_xld