【发布时间】:2012-10-25 20:29:10
【问题描述】:
由于我不知道直方图比较的极限,所以我决定问问精彩的社区。
我有一些图像,我想根据它们的相似性对它们进行分组。每张图像都有一个独特的彩色线条,从图像的顶部到底部,所以我所做的是通过这些彩色线条进行垂直投影并制作一个每个图像的此投影的直方图。它工作得很好,因为两个相似的图像应该有两个相似的直方图(即上下几乎完全相同的轮次)作为一个人我可以根据那个独特的特征来确定两个直方图是相似的如果一个直方图的峰值不高(即,这是一张微弱图像的直方图)
图像及其对应的直方图:
.....................1st http://imageshack.us/a/img571/948/onelg.jpg................................. ..................................2nd http://imageshack.us/a/img255/642/twor.jpg.................................. …………3rd http://imageshack.us/a/img577/3931/threeaw.jpg……
1sth http://imageshack.us/a/img823/4343/onehq.png2ndh http://imageshack.us/a/img687/3738/twoht.png3rdh http://imageshack.us/a/img43/9996/threeh.png
..................................................... .......................2nddarker http://imageshack.us/a/img690/7817/twodark.jpg
..................................................@ 987654328@
我将这两个图像转换为灰度,然后我对图像进行垂直投影,将其转换为直方图,您可能会注意到前两个直方图相似,但第三个有点不同,因为它有一个切换彩色线条。
注意:-
(1) 考虑前两个直方图。虽然最高的喙接近 12,但并非总是如此,有些图像更暗或更暗,但如果我可以这样说,它最终确实给出了相同的直方图形态您会注意到最后一个直方图是第二个的较暗图像。
我的问题是:进行任何类型的直方图比较是否安全?直方图比较是否意味着我可以确定两个直方图是否具有相同的峰值?或者换句话说,直方图比较是否告诉我两个直方图是否具有相同的形态??在python 中进行这种比较的最佳库或方法是什么?
更新:-
(1) 作为@PepperoniPizza 和@FedericoCristina 的回复,在我的情况下,完全不同的图像肯定会有不同的直方图(您可以依赖在那)每张图像都有一个独特的直方图形态(即独特的峰),峰的数量因一个图像而异,但两个相似的图像应该有相同数量的峰(换句话说>如果你看他们的直方图,你可以看出它们看起来有点像(查看第一个、第二个和最后一个直方图,看看我的意思。
(2) 要清楚这一点,我真的不想要一个解决方案关于如何对图像进行分组,但我付出了很多努力来确定两个直方图在一般情况下具有相似的形状或形态!!!!
(3)我知道cv2.CompareHist(),但我不知道这是否是比较直方图的正确方法,因为我不知道cv2.CompareHist() 是如何工作的(即我不知道他们在什么基础上进行比较)实际上@ 987654332@有 4 种直方图比较类型,我不知道什么是最好的,甚至不知道进行这种比较的替代方法是什么。
(4) 作为回复@remi,这里是要点:-我已经有 3 个库在其中支持直方图比较,这有点模棱两可 - 至少对我来说 - 知道他们所说的 直方图比较 是什么意思,因为有些人就像 h1-h2 然后calcuate(MSE)所以它所做的只是比较值而不是这些值在直方图中形成的形状。所以由于我不擅长直方图及其数学工作,我想知道我是否真的可以这样比较直方图。
谢谢
【问题讨论】:
-
能否提供图片样本的链接?
-
您可以进一步研究 compareHist(及相关)中提出的方法,并为您的情况选择最合适的方法。在我看来,简单的 L1/L2 规范就可以完成这项工作
-
@remi updat(4) 是给你的。谢谢
-
您作为示例显示的直方图中的形状差异肯定会通过高 L1/L2 范数以及其他方法反映出来。请记住,直方图的“形状”是由它们的值给出的,因此可以比较它们的值。通过将每个 bin 值除以值的总和来规范化直方图。这不会影响形状,但如果这让您担心的话,它将使值之间的差异正常化
标签: python image-processing opencv computer-vision histogram