【问题标题】:How to detect texture disruption如何检测纹理破坏
【发布时间】:2017-10-23 15:53:42
【问题描述】:

假设我们有许多彩色图像,它们是一些纹理图案的示例。这种纹理被一些异物“破坏”的情况很少见。检测这些罕见异常的最佳方法是什么?

我考虑过训练一个 CNN,但好的例子的数量远远超过坏的例子,所以我有疑问。我开始研究灰度共现矩阵 (GLCM) 和局部二进制模式 (LBP),但我认为颜色信息可能在确定中断的发生方面发挥重要作用。我可以从这些提取的特征(GLCM 或 LBP)中找到分布并计算新图像属于该分布的概率吗?

感谢您的帮助!

【问题讨论】:

  • 你能分享一些示例图片吗?
  • @tonechas 不幸的是我不能,这是我能解决的问题的具体情况
  • 如果没有更多信息,很难回答这个问题,但是您看过 Law 的纹理测量吗?老歌但可能有用。无论哪种技术可能有效,都取决于您的应用程序。自然或人造物体/场景?来自相机的实时图像,或不同分辨率/质量的图像文件?如果你不能透露细节,那么可以考虑花一天时间在当地的工程图书馆翻阅教科书、论文和会议论文(这些文件通常在网上付费墙后面)。有好几次,我发现很少有人提及的书籍可以帮助我解决奇怪的问题。

标签: opencv image-processing feature-extraction pattern-recognition scikit-image


【解决方案1】:

如果没有看到一些示例图像,很难找出您的问题。原则上,您可以使用多种方法来检测纹理中断,即 GLCM 特征、LBP、Law 掩码、矢量量化等。测量局部熵是一种可能的方法。考虑下图,我们可以清楚地区分两种纹理:

以下 sn-p 读取图像,计算圆形邻域或给定半径 25 上每个像素的局部熵并显示结果:

from skimage import io
from skimage.filters.rank import entropy
from skimage.morphology import disk

img = io.imread('https://i.stack.imgur.com/Wv74a.png')
R = 25
filtered = entropy(img, disk(R))
io.imshow(filtered)

从生成的熵图中可以清楚地看出,局部熵值可用于检测纹理破坏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 2023-03-25
    • 2011-06-21
    • 2023-03-17
    • 2019-12-06
    • 2014-08-24
    • 1970-01-01
    相关资源
    最近更新 更多