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

Aru*_*iRC 13 opencv textures image-processing

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

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

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

维基百科没有提供有关实际实施任何纹理分析的详细信息.

Dan*_*HsH 27

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

这是如何测量区域相似性的基本方案.

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

您需要关注第2步和第4步.

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

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

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

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


And*_*oev 6

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

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

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