Halcon算子实现——Texture_Laws

Halcon算子实现——Texture_Laws

  • 什么是texture_laws()
  • 实现步骤
    • 第一步,认识Laws基础向量
    • 第二步,Laws核
    • 第三步,Laws核与图像做卷积
  • 运行结果与时间
  • 参考资料

什么是texture_laws()

  Laws方法在论文中主要用于检测纹理信息,尤其是对比度比较低的纹理,具有很好的效果,即一张原始图像通过laws变换后得到一系列的图片,把这一系列的图片塞入分类器,分类精度还是比较高的 。在Halcon中使用texture_laws()特殊的滤波核与地对比度低的图像做卷积,得到效果很好的灰度图。
  小编的碎碎念念:这个原理具体怎么实现的,各位读者可以看参考资料中的论文,尤其那篇博士论文,写的很细的,小编飘走~~。

实现步骤

  网上有许多文章讲的和Halcon中的texture_laws()算子步骤是不一样的,这一点我也是走过了网上套路后才发现的。网上说的是 Laws的整个过程,但是在Halcon中的算子不是完整的Laws,只是运用Laws核对图像做卷积。

第一步,认识Laws基础向量

  在构建kernel之前需要了解Laws的基础向量。论文中给出了三种尺寸的基础向量。

1. 尺寸为3的基础向量:

Halcon算子实现——Texture_Laws_第1张图片
2. 尺寸为5的基础向量:

Halcon算子实现——Texture_Laws_第2张图片
3. 尺寸为7的基础向量:
Halcon算子实现——Texture_Laws_第3张图片
每一行前面的字母分别代表:”level“, “edge” ,“spot”, “wave”, “ripple”, “undulation”, “oscillation”(中文意思就不翻译过来了,感觉翻译完了,就变味了~~),这些单词就代表对应向量检测的类型。可以选择滤波向量中的 “l”, “e”, “s”, “r”, “w”, "o"与滤波向量"l"组合来增强图像的低频部分,或者与滤波向量"o"组合来增强图像的高频部分,例如,”le“检测低频部分。Laws的论文介绍最基础的是尺寸3的向量,尺寸5和尺寸7都是由尺寸3得来的。

第二步,Laws核

  每一组基础向量都可任意两两组合(即两个向量相乘),所以第一组有9种,第二组有25中,第三组有49种,可以前面的字母来表示,例如尺寸3的第一个和第二个组合,即”le“。”le“由两个两个向量组成,第一个向量代表垂直向量,第二个代表水平向量,所以第一个向量要转置后再与第二个向量相乘,变成一个3X3的矩阵。这个过程如图所示:
Halcon算子实现——Texture_Laws_第4张图片
其他尺寸的卷积核和上面的过程是一样的。在Laws的论文中说5X5的效果是最好的。

第三步,Laws核与图像做卷积

  Laws与图像正常做卷积,重点在处理卷积之后的结果,卷积后的图片的每个像素要做绝对值处理,取完绝对值后,对大于255的像素做截断。这个部分就是Halcon中与Laws论文中记载不同的地方。

运行结果与时间

  模拟的算法是基于opencv3.4.1版本的,除了Halcon中shift还没有实现,图片显示效果与Halcon几乎无异,时间与Halcon时间也很接近,1.5~2ms。所以基于Opencv模拟Halcon中texture_laws()算子可行。

参考资料

[1] K. Laws. Textured Image Segmentation , Ph.D. Dissertation, University of Southern California, January 1980.
[2] K. Laws. Rapid texture identification. In SPIE Vol. 238 Image Processing for Missile Guidance , pages 376-380, 1980.
[3] 《Laws’ Texture Measures》这篇文章没有署名,不知是哪位大神写的,但是百度一下就能看到这篇文章。
[4] Halcon 帮助文档

  • 这几篇文章对小编有用的部分,简单的翻译了一下(翻译小白级别),如果有需要的可以看一下。

百度云盘分享
提取码:0kg8

学习使我进步,分享使我快乐,您的点赞是对小编最大的鼓励!


作者声明:本文属于原创,转载请注明出处。

你可能感兴趣的:(Halcon,计算机视觉)