2013-03-06 68 views
0

我正在寻找一种方法,可以使用OpenCV获得给定图像中每个像素的所有RGB值的完整列表,现在我称之为“颜色量化”。“颜色量化”是OpenCV中颜色量化的正确名称吗?

的问题是,根据我所网上找到的,至少在这一点上,这个“颜色量化”的东西是关于直方​​图或“色彩还原”或类似离散计算解决方案。

因为我知道我想要什么,“互联网”似乎对这个词的含义有不同的意见,所以我想知道:也许这没有一个真正的解决方案?一个可行的方式或OpenCV库中的工作算法。

+0

不是每个像素只有一个与它相关的R,G和B值吗? – 2013-03-06 10:33:13

+0

@perfanoff是的,是吗? – user2128456 2013-03-06 10:35:05

+0

@perfanoff请记住,我想要一个RGB值的列表及其关联百分比,而不仅仅是1个像素值。 – user2128456 2013-03-06 10:39:10

回答

1

色彩量化是有限数字色彩空间中无限自然色的转换。无论如何,要创建一个全色“直方图”,您可以使用opencv的稀疏矩阵实现并编写自己的函数来计算它。当然,如果没有关于图像的其他结构或连续性信息,您必须逐个访问像素。

+0

做的OpenCV是能够管理并触发基于给定的图像采用的颜色模式不同的动作?例如,检测图像是使用sRGB还是Adobe RGB或CMYK? – user2128456 2013-03-06 11:48:26

+0

默认情况下,没有。但是你应该能够从文件的EXIF中读取它并采取相应的行动。 Btw opencv使用BGR格式。参见[这里](http://stackoverflow.com/questions/2122706/detect-color-space-with-opencv) – sfotiadis 2013-03-06 11:58:31

+0

好的,谢谢,最后一件事,直方图只是图形或者我还可以得到一个数字输出像一个std :: vector或std :: map? – user2128456 2013-03-06 12:02:04

1

一般来说,量化是一种将具有实数(数学)值的输入信号提取为一组离散值的操作。实现这一过程的一种可能的算法是计算数据的直方图,然后保留对应于具有较高群体的直方图的bin的值。

你正在尝试做什么将被称为也许颜色列表。 如果您使用8位量化图像(类型为CV_8UC3),我的猜测是您通过获取输入图像的直方图(bin宽度等于1)然后搜索结果查找非空垃圾箱,从而达到您的要求。