2013-02-13 57 views
0

我使用OpenCV计算了一系列图像的直方图,但是即使图像具有不同的外观,它们的直方图也相同,其结果是熵和直方图差异也相同。我们如何区分具有相同直方图的图像?

这里如何区分这些图像?

请帮忙!

+1

显而易见的答案是,你不应该通过直方图比较图像。单纯依靠直方图时,这是一个已知问题。还有很多其他方法可以比较图像,如果您包含一些您正在尝试比较的示例图像,则可能会出现更多相关的建议/答案。 – mmgp 2013-02-13 15:11:07

+0

如何比较图像? – thang 2013-02-13 15:28:21

+1

直方图通常会查看图像,因为它是黑色和白色。您可以尝试各个通道的直方图,以便获得红色直方图,绿色直方图和蓝色直方图并进行比较。 另一种技术是从另一个图像中减去一个图像,然后对结果图像进行直方图分析。该直方图将测量图像的差异。 – 2013-02-13 17:31:40

回答

0

如果输入图像是灰度,那么只有1个通道,现在大多数图像都是彩色的。如果文件是灰度,那么只有1个通道。

这里有一些简单的尝试。对于灰度级,您可以对每行像素进行平均以获得单个灰度值,然后生成行平均值的直方图,同时对每个列值进行平均并生成该直方图。

通过简单的结果。如果你有3个文件,

其中一个左半边黑色和右半边白色。

一个具有顶部黑色和底部白色

一个具有黑色和白色正方形的棋盘。

标准直方图将显示50%的黑色像素和50%的白色。

水平直方图会显示左/右和棋盘称为具有全部50%灰色,而顶部/机器人将具有50%的黑色& 50%白色

甲垂直直方图将显示前/ BOT和棋盘全部为50%灰色,而左/右则显示50%黑色和50%白色。

所以,虽然所有3个文件将具有相同的基本直方图,它们将由水平直方图唯一。

水平直方图是低分辨率,因为它们是平均值,所以您仍然需要完整的历史曲线来进行主要识别。

当然你也可以想出除水平和垂直以外的其他平均值。

+0

对行进行平均只会导致更多的“直方图冲突”,即具有相同直方图的不同图像。 – mmgp 2013-02-13 20:51:47

+0

3个直方图一起使用时不适用。标准直方图仍然是唯一性的主要来源。只有当多幅图像的第一级直方图相似时,第二级图像才能用于区分。这将像第一个直方图是一个名称,如“约翰史密斯”和次要直方图是身高和体重。因此,与多个约翰史密斯约翰史密斯之一是5'10“和180磅,而第二个约翰史密斯是6'1”和380磅。 – 2013-02-13 21:29:44

+0

计算机视觉中的一个标准程序是使用直方图金字塔来保留一些否则会丢失的空间信息。 [Here](http://www.robots.ox.ac.uk/~vgg/research/caltech/phog.html)是一个使用渐变而不是灰度值的例子。但他的想法仍然适用。 – sietschie 2013-02-14 08:55:26

相关问题