如何匹配图像中的纹理相似度?

时间:2011-05-22 13:58:43

标签: image-processing opencv textures

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

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

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

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

3 个答案:

答案 0 :(得分:27)

你想在图像中找到两个看起来相同(相同纹理)的区域,或者将一个图像中的纹理与另一个图像匹配? 由于不同的辐射测量,第二个更难。

以下是如何衡量区域相似性的基本方案。

  1. 您编写的函数作为输入获取图像中的区域并计算标量值。像平均亮度一样。该标量称为特征
  2. 你写了更多这样的函数来获得大约8到30个特征。它们一起形成一个矢量,该矢量编码有关图像中区域的信息
  3. 计算要比较的两个区域的此类向量
  4. 定义相似度函数,它取两个向量并输出它们的相似程度。
  5. 您需要关注第2步和第4步。

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

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

    实施约4-6个此类功能后,相似功能开始运行测试。查看结果并尝试了解它不起作用的原因或位置。然后添加特定功能以涵盖该主题。 例如,如果您看到具有大斑点的纹理被视为与具有微小斑点的纹理相似,则添加形态过滤器计算的具有大小>的对象的密度。 20平方像素。

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

答案 1 :(得分:4)

我建议使用小波分析。小波在时间和频率上均被定位,并且使用多分辨率分析比FT具有更好的信号表示。

Thre是paper,用于解释纹理描述的wavelete方法。还有一种比较方法。

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

答案 2 :(得分:2)

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

将该方法视为从图片中获取要素的众多不同方法之一。它对应于DanielHsH方法的第二步。