【发布时间】:2014-03-12 14:01:51
【问题描述】:
看看这两个示例图像:
我希望能够在大量照片和类似图像中识别这些类型的图像。 photograph 我指的是人物、风景、动物等的照片。
我不介意某些照片被错误地识别为这些uniform images,但我真的不想通过将它们识别为照片来“错过”其中一些。
我想到的最简单的事情是逐个像素地分析图像以找到最高和最低的 R、G、B 值(每个通道分别)。如果最低值和最高值之间的差异很大,那么颜色变化很大,这样的图像很可能是一张照片。
其他想法是以类似的方式分析每个像素的色调值。问题在于,在 HSL 模型中,橙红色和粉红色在顺时针方向看时相差大约 350 度,在逆时针方向看时相差 10 度。所以我不能只比较每个像素的色调分量,因为我会得到一些奇怪的结果。
此外,还有一个噪音问题——一个白色或黑色像素会破坏这样的测试。因此,如果只有少数像素具有这样的极端值,我将需要以某种方式排除极端值。但在这一点上,它变得越来越复杂,我觉得这不是最好的方法。
我也在考虑将对比度提高到最大值,然后像上面描述的 RGB 那样运行测试。它可能会使事情变得更容易,但仍然有一两个异常像素会破坏测试。遇到这种情况如何处理?
我不介意运行几种涵盖不同图像类型的不同算法。但请注意,我正在处理来自数码相机的图像,因此 6MP、12MP 甚至 16MP 都很常见。因此,不需要运行计算密集型算法。我要处理成百上千张图像,并且只有有限的 CPU 资源用于图像处理。可以说每张大图像一两秒是我能接受的最大值。
我知道,例如蓝天的照片可能会引发误报,但这没关系。误报总比漏报好。
【问题讨论】:
-
你研究过纹理分类吗?您可能会发现,对于您的“统一”图像,一个或多个纹理分类器将在整个图像中产生一致的度量。如果图像的 > N% 由给定纹理组成,那么您可能可以将其归类为“均匀”。这个建议太随意了,但也许会有所帮助。局部二进制模式是最近的纹理分类方法:en.wikipedia.org/wiki/Local_binary_patterns
标签: algorithm image-processing computer-vision