1.纹理分析
纹理分析指通过一定的图像处理技术提取出纹理特征参数,从而获得纹理的定量或定性描述的处理过程。纹理标出了表面的结构化特征,其在一张图像中展示了灰度值的变化。
纹理(texture)由纹理单元(texel)组成,纹理单元是纹理图像中最小的重复单元,texel是纹理的基本单元。
对于那些灰度值结构太复杂而不能简单解决的任务,可以用纹理分析来解决,如下所述。
纹理分析的应用:
1)特定的纹理位于哪里
利用纹理滤波器对图像进行滤波处理,以增强(enhance)或抑制(suppress)特定的纹理 滤波后的图像通过blob analysis或者分类算法,将具有相同纹理的部分分割为同一区域(region)。
2)可以计算图像的纹理特征用于图像的分类
通过计算整幅图像或者单个区域的纹理特征。基于这些特征,区域被分类,纹理滤波器作为预处理滤波器可以增强或抑制特定的纹理。
纹理分析的大致步骤组成:
1)获取图像
2)使用纹理滤波器:用一个纹理滤波器,可以强化或者抑制特定的纹理结构,HALCON中的标准纹理滤波器是texture_laws
算子。
3):计算特征:计算纹理特征的标准HALCON算子是gen_cooc_matrix
,其生成一个图像的灰度共生矩阵。另一个常用算子是entropy_gray
,在原始图像上来计算图像的熵或者非均向性。在滤波完成后,用一个阈值,来决定特征的数量,灰度强度。
2.texture_laws
texture_laws——使用Laws纹理过滤器过滤图像。
功能:texture_laws是Halcon中纹理分析的重要算子,其本质原理是利用不同的kernel与图像进行卷积运算,提取出图像的高频部分或低频部分。
函数原型:texture_laws(Image : ImageTexture : FilterTypes, Shift, FilterSize : )
参数:
Image (input_object) ——原始图像
ImageTexture (output_object) ——经过纹理滤波器滤波后的图像
FilterTypes (input_control)——滤波器的类型
Shift (input_control) ——滤波后图像的灰度缩放系数,实际使用过程中降低了滤波后图像的灰度,使得使用不同滤波器类型的滤波后图像具有可比性。
默认值:2
建议值:0、1、2、3、4、5、6、7、8、9
FilterSize——滤波器尺寸大小,
默认值:5
可选值:3,5,7。
滤波器类型由滤波向量(vector)的两个字母组成,第一个字母表示在列方向的滤波器向量,第二个字母表示在行方向的滤波器向量。处理过程中,先对图像的一个方向进行滤波(具体从列方向还是行方向开始未知),再对图像的另一个方向进行滤波。
以3x3的滤波器矩阵为例:
l = [ 1 2 1 ],
e = [ -1 0 1 ],
s = [ -1 2 -1 ]
滤波向量l增强滤波方向的图像的亮度。滤波向量e检测了滤波方向上的突变(即边缘,高频区域)。滤波向量s同样检测了滤波方向上的突变(与滤波向量e检测方法不一样)。滤波后图像很容易溢出(这不是个准确说法,实际意义是对于byte类型的图像,灰度值超过了255),因此需设置合适的shaft值缩放灰度值。
一般来说,可以选择滤波向量中的 “l”, “e”, “s”, “r”, “w”, “o"与滤波向量"l"组合来增强图像的低频部分,或者与滤波向量"o"组合来增强图像的高频部分。
滤波器类型的第二个字母"l”, “e”, “s”, “r”, “w”, "o"依次检测图像低频部分到高频部分。例如,滤波器"le"检测图像 中相对低频的部分,而滤波器"ls"检测图像中相对高频的部分。