当前位置: 代码迷 >> VB Dotnet >> 求好手给出一种判断某个颜色属于广义红色的方法,内详
  详细解决方案

求好手给出一种判断某个颜色属于广义红色的方法,内详

热度:91   发布时间:2016-04-25 02:03:44.0
求高手给出一种判断某个颜色属于广义红色的方法,内详


红色 是RGB(ff0000),但是 ff1010也基本上都是红色,我如果想判断某个点是广义上的红色,不要求这个红色范围多么精确,但是要能让人肉眼看上去就是红色的, 如何用程序表达呢???

比如我获取坐标 100,100 这个点的颜色(RGB的),我如何判断他是否是属于广义的红色呢???


求高手给出一些算法,能让我对这个颜色进行判断的。  

以前用的是 先孤立出 每个颜色 的16进制值,然后转化成10进制 然后给他一个偏差范围 202020还是什么的,但是这个不准确。
因为红色的就R的偏差范围可能在0-50都可以,G却可以偏差再0-100之内也是红,而B的偏差值其实要根据R和G当前的值来确定范围的,例如,如果R-5,G-5,B就可以-100也是红色,但是 如果R-50,G-100,那边B最多就是-20左右是红色,再多就不是红色了。

所以需要有一定调色基础的人,给个逻辑关系,万分感谢!



------解决思路----------------------
以“红色”为中心,这个问题就是你设计一个“距离”公式,把三维概念变为一个普通的实数,就行了。
------解决思路----------------------
dim Cor as color=bitmap1.getpixel(1,1)
if Col.R>=128 andalso Col.G<50 andalso Col.B<10 Then
MsgBox("在视觉红色红色范围")
End if
------解决思路----------------------
两个比例定义红色,具体红色范围因人而异,可自行确定。了解这些需要知道一些基本的RGB配色概念,什么时候才会产生偏红的颜色,从参数来看,当R远大于其他G,B两色参数值时,颜色偏红,以下是具体判断方法。

1.color中R参数的量:这里例子以128为界限,低于128的已经到了特别暗的红、咖啡色或棕色,因此本例只考虑R参数大于等于128的情况。

2.color中R和其他G,B的比例:概念上的红色定义范围,这里例子仍为个人概念,当R取255时,G不能大于63,B不能大于127(R=255,G=0,B>127的情况已到了紫色系范围,R=255,G>63,B=0已经到了橙色范围,这些理解都是个人色彩理解,学过色彩的应该会更容易把控一些),因此有判断条件,B不能大于R的1/2,G不能大于R的1/4。这个判断条件可以在自己理解的基础上调整,如果有个人认为更为准确的电脑色系分类也可以参照其分类。

因此这里例子的红色的取值范围确定为R>=128 and B/R<.5 and G/R<.25
具体情况请根据自己所需要的东西调整吧。
  相关解决方案