首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在RGB图像上实现k均值算法?

如何在RGB图像上实现k均值算法?
EN

Software Engineering用户
提问于 2016-03-30 06:06:01
回答 1查看 6.2K关注 0票数 1

我想在RGB图像数据集上应用k均值算法.我不知道该怎么做。您可以一步一步地提到基本流程。我确实了解图像处理和OpenCV的基础知识。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2016-03-30 07:37:45

您可以很容易地将k均值算法应用于RGB图像数据集。图像数据集不是特殊的,只是每个数据向量是三维的(R、G和B),并且值是0,255范围内的有界整数。

标准的k均值算法只需计算两个点之间的距离以及几个数据点的平均值。

有关k均值算法的更多信息,请参见例如这里

朴素RGB颜色距离:如果有两个元素i和j分别具有RGB值(ri、gi、bi)和(rj、gj、bj),那么图像点i和j之间的距离d等于:

D= sqrt((ri-rj)^2+(gi-gj)^2+(bi-bj)^2)

几个颜色点的平均值分别是RGB值的平均值。

有关在OpenCV中实现这一点的信息,请参见OpenCV教程上的颜色量化示例。

更真实的颜色距离:遗憾的是,RGB颜色空间不是一个很好的颜色距离模型(参见约翰·福科什的优秀评论)。然而,CIE*ab颜色空间和一些相关的颜色距离模型似乎更适合.

步骤1:将RGB转换为CIE*ab (RGB依赖于设备,因此可能需要将其转换为某些绝对颜色空间RGB值)。

很可能您正在使用的平台已经有一个RGB到CIE*ab转换(MatlabJava、Python或C++使用OpenCV)。否则,您将不得不编写自己的(帮助)。

第二步:在k均值算法中计算距离.

来自那里的Delta *似乎很容易计算:

(l1,a1,b1)是数据点1的L_ab值,(l2,a2,b2)是数据点2的L_ab值。

D= sqrt((l1 - l2)^2 + (a1 - a2)^2 + (b1 - b2)^2)

在CIE_ab空间中,几种颜色的平均值将再次分别为每个L_ab分量的平均值。

但你也可能想尝试其他距离,看看什么是最有效的。

摘要:除了距离和平均计算外,不需要修改k-均值算法.对于更合适的距离,建议将其转换为另一个颜色空间(CIE*ab),并计算该颜色空间中的距离。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/314222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档