python - 如何测量图像中的颜色接近度/浓度? (首选Python解决方案)

标签 python image colors

考虑下面的两张图片:
图片1:
a few big black things

图2:
lots of smaller black things

为了便于论证,我们假设这两个图像具有相同数量的黑色像素。

我想计算黑色像素的“浓度”。 IE。图像 1 比图像 2 具有更高的“索引”,因为黑色像素比图像 2 中的更加“分组”或集中。

直觉上我希望指标或函数已经存在。我做了一些搜索,但找不到我要找的东西。

应用到实际示例中,我将使用 kmeans 将颜色数减少到 15 左右,并将该计算应用于每种颜色。我不认为直方图会有帮助,因为我假设相同数量的黑色像素(如果我错了,请纠正我)。

我能想到的一种方法是:
1. 过滤颜色
2.使用轮廓来定义 Blob
3. 计算每种颜色 Blob 的大小和数量
4. 量化每种颜色的可比指标
我不是图像库方面的专家,所以如果您能提供一些关于如何实现它的指导,那就太好了。

有什么建议吗?

非常感谢!

最佳答案

我认为您正在走向 Granulometry 领域由巴黎一家矿业公司开发,用于确定岩石中矿物颗粒的大小,从而确定采矿是否可行。

无论如何,历史已经足够了。如果您使用磁盘作为结构元素对每个图像执行“形态学闭合”,并逐渐增加半径,您将获得图像中存在的 Blob 大小分布的度量.

现在没有时间编写 Python,但下图并排显示了您的图像,并用红色竖条将它们分开。在视频的每个连续帧中,我将圆盘形结构元素的半径增加 1 个像素。第一帧的半径为1,最后一帧的半径为39:

enter image description here

希望您能看到较大、较集中的形状比较小的形状停留的时间更长。

关于python - 如何测量图像中的颜色接近度/浓度? (首选Python解决方案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52170588/

相关文章:

python - 如何在OpenCV中改变照片的曝光度

java - 如何从缓冲图像中获取子图像

wordpress - add_image_size 具有精确宽度 + 自动高度,但调整后的宽度限制为最大值

html - 我可以更改 Font Awesome 齿轮图标的颜色吗?

html - 如何根据值为表格条目着色

python - 如何在EMR核心节点上启用python库以启动EMR Spark应用程序步骤

python - 需要 numpy argmin 优雅的解决方案。

python - 如何在Python for循环中创建和删除类实例

python - 切换 kivy 小部件

MATLAB:给定三种颜色生成颜色图