算子
texture_laws — Filter an image using a Laws texture filter.
格式
texture_laws(Image : ImageTexture : FilterTypes, Shift, FilterSize : )
纹理是图像表面的一种灰度变化。有的纹理很规则,会以局部小区域为单元重复出现,而现有的纹理则呈现出随机性。对于格则的纹理,可以很容易地从中分辨出重复的区域,这些局部的、重复的部分被称为纹理单元。
Halcon中的纹理滤波器的原理是,使用一个特殊的滤波器作为纹理算子,在图像上进行滤波操作,以增强或者抑制特定的纹理图像。经过纹理滤波器处理后的图像会被分割成若干个有相同图像的纹理单元。
texture_laws 算子用于对纹理进行滤波,它根据参数设定的规则,对图像进行纹理变换。其参数如下: Image :输入图像Image 。 ImageTexture:输出纹理。 FilterTypes:为滤波的类型。这里的参数由两个字母组成,两个字母都取自7种滤波器类型的首字母。滤波器的类型有7中:level、edge、spot、wave、ripple、undulation、oscillation。第一个字母表示行方向上的滤波类型,第2个字母表示列方向上的滤波类型。即: 'll', 'le', 'ls', 'lw', 'lr', 'lu', 'lo', 'el', 'ee', 'es', 'ew', 'er', 'eu', 'eo', 'sl', 'se', 'ss', 'sw', 'sr', 'su', 'so', 'wl', 'we', 'ws', 'ww', 'wr', 'wu', 'wo', 'rl', 're', 'rs', 'rw', 'rr', 'ru', 'ro', 'ul', 'ue', 'us', 'uw', 'ur', 'uu', 'uo', 'ol', 'oe', 'os', 'ow', 'or', 'ou', 'oo'。 一般来说,可以选择滤波向量中的 "l", "e", "s", "r", "w", "o"与滤波向量"l"组合来增强图像的低频部分,或者与滤波向量"o"组合来增强图像的高频部分。 滤波器类型的第二个字母"l", "e", "s", "r", "w", "o"依次检测图像低频部分到高频部分。例如,滤波器"le"检测图像 中相对低频的部分,而滤波器"ls"检测图像中相对高频的部分。 Shift:偏移量。当灰度值大于255时,可以降低灰度值。该参数用于调整结果图像的灰度,默认为2。范围: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9。计算方式:Gray=Gray/(Shift),要根据滤波器选择合适的灰度值转换。 FilterSize:为滤波器的卷积核尺寸,默认为5,可选范围:3、5、7。 |
FilterSize:滤波器尺寸
所以卷积核尺寸为3×3的时候,只有'll','le','ls','el','ee','es','sl','se','ss'这9种组合。
卷积核尺寸为5×5的时候,只有'll', 'le', 'ls', 'lw', 'lr', 'el', 'ee', 'es', 'ew', 'er', 'sl', 'se', 'ss', 'sw', 'sr', 'wl', 'we', 'ws', 'ww', 'wr', 'rl', 're', 'rs', 'rw', 'rr'这25种组合。
卷积核尺寸为7×7的时候,有'll', 'le', 'ls', 'lw', 'lr', 'lu', 'lo', 'el', 'ee', 'es', 'ew', 'er', 'eu', 'eo', 'sl', 'se', 'ss', 'sw', 'sr', 'su', 'so', 'wl', 'we', 'ws', 'ww', 'wr', 'wu', 'wo', 'rl', 're', 'rs', 'rw', 'rr', 'ru', 'ro', 'ul', 'ue', 'us', 'uw', 'ur', 'uu', 'uo', 'ol', 'oe', 'os', 'ow', 'or', 'ou', 'oo'这49种组合。
卷积核的矩阵如何计算:例如5×5的'ls'
FilterTypes滤波器
用于滤波的是一个滤波器小矩阵(也叫卷积核
),滤波器小矩阵一般是个方阵,也就是 行数
和 列数
相同。进行滤波就是对于大矩阵中的每个像素,计算它周围像素和滤波器矩阵对应位置元素的乘积,然后把结果相加到一起,最终得到的值就作为该像素的新值,这样就完成了一次滤波。
对图像大矩阵和滤波小矩阵对应位置元素相乘再求和的操作就叫卷积
(Convolution
)或协相关
(Correlation
).
ImageTexture输出纹理图像中的值是如何得到的?
以Halcon中texture_laws.hdev例子为例:
*只取原例子中的两段
read_image (Image, 'forest_road')
texture_laws (Image, Snowcity, 'ss', 0, 5)
第一幅为forest_road最上角5×5的像素点,第二幅为输出的纹理图像Snowcity的左上角5×5的像素点,其两幅图的灰度值如下:
173 | 166 | 173 | 179 | 178 |
173 | 172 | 177 | 170 | 174 |
168 | 170 | 176 | 174 | 178 |
167 | 161 | 160 | 171 | 176 |
169 | 160 | 149 | 159 | 171 |
32 | 18 | 22 | 48 | 24 |
22 | 12 | 30 | 9 | 1 |
72 | 4 | 59 | 12 | 24 |
28 | 27 | 39 | 28 | 1 |
124 | 10 | 110 | 28 | 41 |
其中第二个表格中黄色位置的值的计算方式为:
173*1 | 166*0 | 173*-2 | 179*0 | 178*1 |
173*0 | 172*0 | 177*0 | 170*0 | 174*0 |
168*-2 | 170*0 | 176*4 | 174*0 | 178*-2 |
167*0 | 161*0 | 160*0 | 171*0 | 176*0 |
169*1 | 160*0 | 149*-2 | 159*0 | 171*1 |
其结果如下:
173 | 0 | -346 | 0 | 178 |
0 | 0 | 0 | 0 | 0 |
-336 | 0 | 704 | 0 | -356 |
0 | 0 | 0 | 0 | 0 |
169 | 0 | -298 | 0 | 171 |
最后将上面方框中的所有值求和:=59
参考文献:《Halcon机器视觉算法原理与编程实战》杨青Halcon算子实现——Texture_Lawshttps://blog.csdn.net/laboirousbee/article/details/106802233halcon的纹理分析texture_laws
http://www.skcircle.com/?id=1453
彻底理解数字图像处理中的卷积-以SOBEL算子为例https://www.freesion.com/article/2116155481/