0

我的项目是叶子的形状识别。我使用不变矩进行特征提取和城市街区距离来计算测试图像与数据库中图像之间的距离。胸围我得到的结果非常糟糕。我可以说识别率只有不到 50% 的匹配。例如:

这是测试图像

在此处输入图像描述

但这与这张图片相匹配:

在此处输入图像描述

我使用 otsu 阈值将该图像转换为二进制图像,因此图像的形状看起来不错。我的问题,这是正常的吗?还是我的编码有错误?这是我使用城市街区距离的编码:

CityBlock[j] = Math.abs(bMom1 - DB.GetBentukMoment1(j)) + Math.abs(bMom2 - DB.GetBentukMoment2(j)) +
                                Math.abs(bMom3 - DB.GetBentukMoment3(j)) + Math.abs(bMom4 - DB.GetBentukMoment4(j)) +
                                Math.abs(bMom5 - DB.GetBentukMoment5(j)) + Math.abs(bMom6 - DB.GetBentukMoment6(j)) +
                                Math.abs(bMom7 - DB.GetBentukMoment7(j));

如果我在该编码上使用相同的图像,则结果不会给出 0 值。为什么?是因为双数据类型吗?

4

1 回答 1

0

最后我知道了我的应用程序的问题,我用双精度数据类型保存到数据库的双精度值发生了变化,所以我使用文本数据类型来存储双精度值,然后我将其解析为双精度,然后我得到零值对于相同的图像。但我认为不变矩不适合在二值图像上匹配,它更好地用于精明图像。那是因为对于二进制图像上的一些匹配,我仍然会遇到像我的问题一样的问题。

于 2014-04-23T18:27:22.717 回答