【发布时间】:2011-09-02 04:51:17
【问题描述】:
我正在寻找一种方法来对图像进行排序,如下图所示:
http://www.pixolution.de/sites/LargeImages_en.html
我在 stackoverflow 上查看了有关此主题的所有主题,但没有一个建议的解决方案能接近给我上面的图片。
我尝试过的方法:
- 为每个图像,按出现的降序构建 rgb 颜色的直方图
-
对于每个直方图,计算与黑色 (r:0,g:0,b:0) 的距离,如下所示:
for color in image_histogram: total_distance += color.percentage_of_image * distance(BLACK_RGB, color.rgb)
然后按距离对图像进行排序
我希望颜色分布相似的图像最终会具有相似的距离,并导致按颜色进行视觉排序。情况并非如此,它似乎有点工作,但不像上图那样。
对于距离函数,我尝试过欧几里得距离、hsv 排序(h->s->v)甚至 Lab 距离排序。这些都没有帮助
如果有人有更好的方法,我很想知道!
【问题讨论】:
-
这没有被标记为python,但中间的for循环确实看起来像python。
-
在 PHP 和带有 HTML5 和 javascript 的画布中,您可以获得图像的平均 rgb 颜色。从那里您可以将所有值相加并除以 3 以获得图像的亮度。您将沿 y 轴从亮到暗排列所有值,并沿 x 轴进行从 r 到 g 到 b 的色调偏移。只是一个想法,在我完成当前项目后,我可能会继续努力,谢谢你的想法!
-
感谢 Vap0r,这是我正在寻找的更清晰的示例:pixolution.de/sites/LargeImages_en.html
-
问题中的链接已损坏