Haralick 功能,我正确地接近这个吗?

信息处理 图像处理 局部特征
2022-02-24 20:44:50

我正在尝试通过添加更多功能来个性化自定义 CBIR,这些功能不仅基于颜色,而且基于纹理的特征。

我不知道我是否能很好地使用 Haralick 的功能。

我正在这样做:

我使用了 10 张图片,8 张用于不同的“纹理”,2 张用于测试:

在此处输入图像描述

所有 p x .jpg 都是沙子图像,所有 r x .jpg 都是正方形。测试图像是正方形,test2图像是沙子。(注意,我不想分类,我想要每个图像的值)。

好吧,当我在其余图像(r1、r2、r3、r4、p1、p2、p3、p4)上查询图像测试(正方形)时,我得到了 Haralick 的特征,例如Angular 2nd moment, Contrast, Correlation...但我找不到与方格,或与沙子无关在这种情况下,我正在做一个欧几里德距离:

    double features[15]; // I'm introducing other things as well
    Haralick h;
    h.CalculateCoocurrenceMatrix(features);
    correlation();

    for (int j = 1; j<=11; j++) {
        float result = sqrt(pow(featurestest[j]-features[j],2));
        if (result > f_max[j]) {
            f_max[j] = result; // to normalize later
        }

        jsonFeatures["F"+to_string(j)] = result;
    }

我的问题是:我的这种方法做得好吗?如果没有,我该怎么做?

先感谢您。


编辑:如果不清楚,我不想像我在示例中所做的那样进行分类。我使用“沙子”和“正方形”只是为了在排序时使结果更直观(例如在最终匹配功能上看到 p1 p2 r1 p3 p4 r2 p5 r3 r4 r5)。

1个回答

在特征空间上使用欧几里得距离最终会产生一个最小距离分类器,它会提供有关您似乎所追求的关系是否存在的信息(有关更多信息,请参阅:http://homepages.inf.ed .ac.uk/rbf/HIPR2/classify.htm)。

在您的情况下,如果您使用所有 Haralick 特征,那么您正在查看 13-14 维特征空间和一个不再是线而是平面的决策边界。

通常的方法是首先计算“类质心”,即每组沙子和棋盘图像的每个特征的平均值,然后,给定测试图像的特征,计算它与每个类的质心并选择最小值(即测试图像特征更接近的类质心)。

希望这可以帮助。