我正在编写一个可以处理图像的程序,在某些时候我需要对图像进行分色。这意味着我需要填充颜色,但是我无法确定如何判断一种颜色与另一种颜色的接近程度。
鉴于RGB的颜色,我至少可以想到两种方法来看看它们有多么不同:
如果我进入HSV,我可以想到其他方法。
所以我问,忽略速度,告诉两种颜色有多相似的最佳方法是什么?对人眼来说最准确的最佳意义。
答案 0 :(得分:1)
好吧,如果速度不是问题,最准确的方法是拍摄一些样本图像并使用距离的各种截止值将滤镜应用到它们(距离由Color_difference页面上的一个等式确定) astander链接到,意味着你必须使用那里列出的那些颜色空间中的一个与计算,然后转换为sRGB或其他东西[这也意味着你需要先将图像转换为另一个颜色空间,如果它不是在它开始]),然后有很多人检查图像,看看什么看起来最好,然后使用大多数人认为最好的图像的截止值。
基本上,这主要是主观性的问题;事实上,它还取决于你想要的图像风格,你甚至可能想要添加某种控制,以便你可以动态改变截止距离。
如果速度 成为一个问题和/或您想要更简单,那么只需使用您的第二个选择进行距离计算(这只是CIE76等式;只需确保使用L a b *颜色空间),截止值约为2或2.3。
答案 1 :(得分:0)
“将图像分类”是什么意思?
如果你想把颜色聚集成垃圾箱,你应该看一下 cluster analysis
答案 2 :(得分:0)
如果您要转移到HSV(或类似空间),请发表评论:
H上的差异:0°和359°之间的差异在数值上很大,但在感知上可以忽略不计。
如果V或S很小,H差异很小。
对于计算机视觉应用程序,更重要的不是感知差异(主要由涂料制造商使用),但这些颜色是否属于同一对象/部分。这意味着我们可能会部分忽略V,这可能会因照明条件而改变。