【问题标题】:How to match texture similarity in images?如何匹配图像中的纹理相似度?
【发布时间】:2015-10-22 23:42:47
【问题描述】:

量化图像部分纹理的方法有哪些?我正在尝试检测图像中纹理相似的区域,以衡量“它们的相似程度如何?”

所以问题是关于图像的哪些信息(边缘、像素值、渐变等)可以被视为包含其纹理信息。

请注意,这不是基于模板匹配。

Wikipedia 没有提供关于实际实现任何纹理分析的详细信息。

【问题讨论】:

    标签: image-processing opencv textures


    【解决方案1】:

    您想在图像中找到两个看起来相同(相同纹理)的不同区域,还是将一张图像中的纹理与另一张图像匹配? 第二个更难,因为辐射测量不同。

    这里是如何测量区域相似度的基本方案。

    1. 您编写了一个函数,该函数作为输入获取图像中的一个区域并计算标量值。就像平均亮度一样。这个标量称为特征
    2. 您编写更多这样的函数以获得大约 8 - 30 个特征。它们一起形成一个向量,该向量对图像中的区域信息进行编码
    3. 计算此类向量到您要比较的两个区域
    4. 定义相似度函数,它接受两个向量并输出它们的相似程度。

    您需要专注于第 2 步和第 4 步。

    第 2 步:使用以下特征:亮度 std()、某种角检测器、熵滤波器、边缘方向直方图、FFT 频率直方图(x 和 y 方向)。如果可用,请使用颜色信息。

    第 4 步。您可以使用余弦相似度、最小值-最大值或加权余弦。

    在你实现了大约 4-6 个这样的特性和一个相似函数后,开始运行测试。查看结果并尝试了解它为什么或在哪里不起作用。然后添加一个特定的功能来涵盖该主题。 例如,如果您看到带有大斑点的纹理被认为与带有小斑点的纹理相似,那么添加形态过滤器计算的对象密度 > 20sq 像素。

    将识别问题设计特定特征的过程重复大约 5 次,您将开始获得非常好的结果。

    【讨论】:

    • 谢谢,这似乎比在 OpenCV 中实现所有 GLCM 纹理测量更轻量。您能否提供有关 FFT 直方图的更多信息,链接可能吗?其他都很棒。
    • 什么是“FFT 直方图”?在傅里叶变换之上构建直方图是否有意义?可以简单地从 FT 中选择一些与纹理概念相关的频率范围,并将该范围用作纹理特征
    • FFT 直方图是指首先应用 FFT,然后使用一些信息作为特征。使用每个频率作为特征会产生太多不需要的信息。所以你可以选择以下特征:X方向的高频总和除以y方向的比,高频除以低频的比(原因:不要使用直流频率)等
    • 附言。如果您使用库(如 openCV),您可以提取更高级的功能,如 surf、spark、sift、lbp 等。我举了一个您可以自己编写的简单功能的示例。
    【解决方案2】:

    我建议使用小波分析。小波在时间和频率上都进行了局部化,并且使用多分辨率分析可以比 FT 提供更好的信号表示。

    paper 解释了用于纹理描述的小波方法。还有一种比较方法。

    您可能需要稍微修改算法来处理任意形状的图像。

    【讨论】:

    • 在 Haar 小波部分中,“三个细节图像(LH、HL 和 HH)”是什么意思?小波级别没问题,我已经编码了,但是我不明白在 Haar 小波变换的上下文中 LH、HL 和 HH 图像是什么意思。如果你愿意请解释一下。
    • 它们是特定级别L图像的水平、垂直和对角线特征。您可以在互联网上轻松找到解释。例如链接ceremade.dauphine.fr/~peyre/numerical-tour/tours/…
    【解决方案3】:

    一个有趣的方法是使用本地二进制模式。 这是一个基本的例子和一些解释:http://hanzratech.in/2015/05/30/local-binary-patterns.html

    将该方法视为从图片中获取特征的多种不同方法之一。对应 DanielHsH 方法的第 2 步。

    【讨论】:

      猜你喜欢
      • 2017-08-30
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多