texture_laws 纹理滤波用于缺陷检测

引言:texture_laws算子,其本质原理是利用不同的kernel与图像进行卷积运算,提取出图像的高频部分或低频部分。


纹理分析是图像处理中的一种典型任务,texture_lawsHalcon中纹理分析的重要算子,其本质原理是利用不同的kernel与图像进行卷积运算,提取出图像的高频部分或低频部分。

纹理(texture)由纹理单元(texel)组成,纹理单元是纹理图像中最小的重复单元,texel是纹理的基本单元。

纹理分析的第一种典型应用是利用纹理滤波器对图像进行滤波处理,以增强(enhance)或抑制(suppress)特定的纹理。滤波后的图像通过blob analysis或者分类算法,将具有相同纹理的部分分割为同一区域(region)。

纹理分析的第二种典型应用是计算图像的纹理特征用于图像的分类,纹理滤波器作为预处理滤波器来增强(enhance或抑制(suppress)特定的纹理。Halcon中标准的纹理特征(feature)算子是gen_cooc_matrix(生成共生矩阵),另一个常用的算子是entropy_gray(灰度熵,用于计算图像的平均信息量(entropy)和各向异性(anisotropy))。

texture_laws算子的语法如下:

texture_laws(Image : ImageTexture : FilterTypesShiftFilterSize : )

  1. Image:原始图像

  2. ImageTexture:经过纹理滤波器滤波后的图像

  3. FilterTypes:滤波器的类型;

  4. Shaft:滤波后图像的灰度缩放系数,具体实现公式未知,实际使用过程中降低了滤波后图像的灰度,使得使用不同滤波器类型的滤波后图像具有可比性;

  5. FilterSize:滤波器尺寸,可选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"检测图像中相对高频的部分。


LAWS纹理滤波

texture_laws(Image, 原图像
ImageTexture, 输出值,滤波后图像
FilterType, 过滤器类型
Shift, 灰度值转换,滤波后的灰度值可能会比较大,转换后的灰度值Gray=Gray/(Shift2),要根据滤波器选择合适的灰度值转换
FilterSize) 过滤器大小,3, 7, 5可选
过滤器类型帮助文档中有详细列举,
各种大小的过滤器都是由leswruo这几个向量构成,文档中单个向量都有原型,对于组合出来的滤波器矩阵,就是两个向量的点积,例如5
5大小的le滤波器:
l = [1 4 6 4 1],
e = [-1 -2 0 2 1]
那么le就是:

image.png

5*5的filter,记录一下,稍后研究一下每一种filter的作用。


使用LAWS做缺陷检测的步骤:

  1. 收集几张没有缺陷的图片,使用多种laws滤波作为特征,组合成多通道图片,作为训练样本;

  2. 创建高斯混合分类器,使用样本进行训练;

  3. 将测试图片与样本做相同处理后,使用高斯混合分类器做分类;

  4. 将分类后的区域与原区域做减法,减出来的部分就是不能被分类的部分,也就是有问题的部分;

  5. 筛选出面积较大的区域,可以适当选择开闭运算将区域修整一下。

这里使用到的图像预处理:
使用zoom_image_factor将图像的尺寸减小,可以降低运算时间;
使用smooth_image对混合后的五通道图片做光滑处理

模型的保存与读取:
write_class_gmm
read_class_gmm


附录,常见的Filter:

l l
[[ 1  4  6  4  1]
 [ 4 16 24 16  4]
 [ 6 24 36 24  6]
 [ 4 16 24 16  4]
 [ 1  4  6  4  1]]

l e  
[[ -1  -2   0   2   1]
 [ -4  -8   0   8   4]
 [ -6 -12   0  12   6]
 [ -4  -8   0   8   4]
 [ -1  -2   0   2   1]]

l s  
[[-1  0  2  0 -1]
 [-4  0  8  0 -4]
 [-6  0 12  0 -6]
 [-4  0  8  0 -4]
 [-1  0  2  0 -1]]

l w
[[ -1   2   0  -2   1]
 [ -4   8   0  -8   4]
 [ -6  12   0 -12   6]
 [ -4   8   0  -8   4]
 [ -1   2   0  -2   1]]

l r
[[  1  -4   6  -4   1]
 [  4 -16  24 -16   4]
 [  6 -24  36 -24   6]
 [  4 -16  24 -16   4]
 [  1  -4   6  -4   1]]

e l
[[ -1  -4  -6  -4  -1]
 [ -2  -8 -12  -8  -2]
 [  0   0   0   0   0]
 [  2   8  12   8   2]
 [  1   4   6   4   1]]

e e
[[ 1  2  0 -2 -1]
 [ 2  4  0 -4 -2]
 [ 0  0  0  0  0]
 [-2 -4  0  4  2]
 [-1 -2  0  2  1]]

e s
[[ 1  0 -2  0  1]
 [ 2  0 -4  0  2]
 [ 0  0  0  0  0]
 [-2  0  4  0 -2]
 [-1  0  2  0 -1]]

e w
[[ 1 -2  0  2 -1]
 [ 2 -4  0  4 -2]
 [ 0  0  0  0  0]
 [-2  4  0 -4  2]
 [-1  2  0 -2  1]]

e r
[[ -1   4  -6   4  -1]
 [ -2   8 -12   8  -2]
 [  0   0   0   0   0]
 [  2  -8  12  -8   2]
 [  1  -4   6  -4   1]]

s l
[[-1 -4 -6 -4 -1]
 [ 0  0  0  0  0]
 [ 2  8 12  8  2]
 [ 0  0  0  0  0]
 [-1 -4 -6 -4 -1]]

s e
[[ 1  2  0 -2 -1]
 [ 0  0  0  0  0]
 [-2 -4  0  4  2]
 [ 0  0  0  0  0]
 [ 1  2  0 -2 -1]]

s s
[[ 1  0 -2  0  1]
 [ 0  0  0  0  0]
 [-2  0  4  0 -2]
 [ 0  0  0  0  0]
 [ 1  0 -2  0  1]]

s w
[[ 1 -2  0  2 -1]
 [ 0  0  0  0  0]
 [-2  4  0 -4  2]
 [ 0  0  0  0  0]
 [ 1 -2  0  2 -1]]

s r
[[-1  4 -6  4 -1]
 [ 0  0  0  0  0]
 [ 2 -8 12 -8  2]
 [ 0  0  0  0  0]
 [-1  4 -6  4 -1]]

w l
[[ -1  -4  -6  -4  -1]
 [  2   8  12   8   2]
 [  0   0   0   0   0]
 [ -2  -8 -12  -8  -2]
 [  1   4   6   4   1]]

w e
[[ 1  2  0 -2 -1]
 [-2 -4  0  4  2]
 [ 0  0  0  0  0]
 [ 2  4  0 -4 -2]
 [-1 -2  0  2  1]]

w s
[[ 1  0 -2  0  1]
 [-2  0  4  0 -2]
 [ 0  0  0  0  0]
 [ 2  0 -4  0  2]
 [-1  0  2  0 -1]]

w w
[[ 1 -2  0  2 -1]
 [-2  4  0 -4  2]
 [ 0  0  0  0  0]
 [ 2 -4  0  4 -2]
 [-1  2  0 -2  1]]

w r
[[ -1   4  -6   4  -1]
 [  2  -8  12  -8   2]
 [  0   0   0   0   0]
 [ -2   8 -12   8  -2]
 [  1  -4   6  -4   1]]

r l
[[  1   4   6   4   1]
 [ -4 -16 -24 -16  -4]
 [  6  24  36  24   6]
 [ -4 -16 -24 -16  -4]
 [  1   4   6   4   1]]

r e
[[ -1  -2   0   2   1]
 [  4   8   0  -8  -4]
 [ -6 -12   0  12   6]
 [  4   8   0  -8  -4]
 [ -1  -2   0   2   1]]

r s
[[-1  0  2  0 -1]
 [ 4  0 -8  0  4]
 [-6  0 12  0 -6]
 [ 4  0 -8  0  4]
 [-1  0  2  0 -1]]

r w
[[ -1   2   0  -2   1]
 [  4  -8   0   8  -4]
 [ -6  12   0 -12   6]
 [  4  -8   0   8  -4]
 [ -1   2   0  -2   1]]

r r
[[  1  -4   6  -4   1]
 [ -4  16 -24  16  -4]
 [  6 -24  36 -24   6]
 [ -4  16 -24  16  -4]
 [  1  -4   6  -4   1]]


--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864