c# - 在 C# 中比较 RGB 颜色

标签 c# colors compare rgb

我正在尝试找到一种方法来比较两种颜色以了解它们的相似程度。我似乎找不到有关该主题的任何资源,因此我希望能在这里得到一些指示。

理想情况下,我希望得到一个分数来说明它们有多相似。例如,0 到 100,其中 100 相等,0 则完全不同。

谢谢!

编辑:

从答案中了解更多关于颜色的知识我知道我的问题有点含糊。我将尝试解释我需要这个的目的。

我有一个 800x600 大小的应用程序窗口的像素数据(位置和颜色),因此我可以通过检查每个 x 间隔来确定某个窗口是否打开。

但是,一旦调整应用程序的大小(内容被缩放,而不是移动),此方法就会失败。我可以计算像素移动的位置,但由于四舍五入和抗锯齿,颜色可能会略有不同。

在这种情况下,Pieter 的解决方案对我来说已经足够好了,尽管所有其他回复也非常有帮助,所以我只是给大家投了赞成票。从专业的角度来看,我认为ColorEye的答案是最准确的,所以我将其标记为答案。

最佳答案

你要找的是 Delta-E

http://www.colorwiki.com/wiki/Delta_E:_The_Color_Difference

它是 LAB 颜色空间中两种颜色之间的距离。据说人眼无法分辨1 DeltaE以下的颜色(我发现我的眼睛能分辨1 DeltaE以下的颜色差异,每个人不一样。)

“色差”有4个公式。

  • 三角洲 E(CIE 1976)
  • 三角洲 E(CIE 1994)
  • Delta E(CIE 2000)
  • 三角洲 E(CMC)

检查此站点上的数学链接:

因此正确的答案是使用给定的公式将 RGB 转换为 LAB,然后使用 DeltaE 1976 确定颜色的“差异”。结果为 0 表示颜色相同。任何大于 0 的值都可以根据“大多数人无法区分 1 或更小的 delta e”这一规则来判断。

关于c# - 在 C# 中比较 RGB 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3968179/

相关文章:

Java,比较 if 语句中的分钟 - 没有得到期望的结果

c - Linux登录和strcmp

c# - MonoTouch,MonoTouch 的 future 以及我是否应该将它用于 iPhone 应用程序(而不是 objective-C)

c# - 线程不安全对象中的这种锁定模式有什么问题吗?

macos - Mac OS-X 上的颜色选择器选择了错误的颜色

CSS3 - 在焦点上更改父元素的伪元素颜色?

javascript - 对象/数组比较算法以确定共性/相似性

c# - 使用 .net 多次异步播放 wav 文件

c# - C#中的Bz2解压

r - 一个图中的不同数据是否有良好的预定义颜色序列?