Android 利用不变矩进行形状识别的不良结果

Android 利用不变矩进行形状识别的不良结果,android,invariants,shape-recognition,Android,Invariants,Shape Recognition,我的项目是叶子的形状识别。利用不变矩进行特征提取,利用城市块距离计算测试图像与数据库中图像的距离。我得到的结果很糟糕。我可以说,认可度只得到不到50%的匹配。 例如: 这是测试图像 但与此图像相匹配的是: 我使用大津阈值将该图像转换为二值图像,因此图像的形状看起来很好。 我的问题是,这正常吗?还是我的编码有错误? 这是我使用城市街区距离进行的编码: CityBlock[j] = Math.abs(bMom1 - DB.GetBentukMoment1(j)) + Math.abs(bMom2 -

我的项目是叶子的形状识别。利用不变矩进行特征提取,利用城市块距离计算测试图像与数据库中图像的距离。我得到的结果很糟糕。我可以说,认可度只得到不到50%的匹配。 例如:

这是测试图像

但与此图像相匹配的是:

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

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值。为什么?是因为双数据类型吗?

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