我的项目是叶子的形状识别。我使用不变矩来进行特征提取和城市块距离来计算测试图像与数据库中图像之间的距离。我得到的结果非常糟糕。我可以说识别只有不到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值。为什么?是因为双数据类型?
答案 0 :(得分:0)
最后我知道我的应用程序的问题,我保存到双数据类型的数据库的双值有变化,所以我使用文本数据类型来存储双值,然后我解析它加倍,然后我得到相同图像的零值。 但我认为不变的时刻不适合二进制图像匹配,它更好地用于精确图像。那是因为对于二进制图像上的一些匹配,我仍然会遇到像我的问题一样的问题。