2012-06-16 56 views
1

我需要使用Java检测图像中的所有红色像素。做这件事的最好方法是什么?仅检测Java中的红色像素

只有当红色RGB值大于200时,假设像素是红色的不够好(请参阅this table)。

那么有没有更好的方法来做到这一点?还是有一些红色的颜色rgb算法?

+0

如何定义红色? –

+0

您在这里提出两个问题:一个是*,“如何确定某种颜色(用RGB值表示)看起来红色?”*,另一个是*“您能用Java为我编写此程序吗?” *。第一个问题没有问题,第二个问题没有(因此我的downvote)......除非你证明你已经做了一些你自己的努力。 – stakx

回答

3

看看YCrCb色彩空间。

简单算法:将RGB图像转换为YCrCb,提取红色通道并设置阈值。

+0

您能否提供一些红色提取和应用阈值的代码/伪代码示例? –

3

将RGB转换为HSL,并将色相(H)分量阈值化。

+0

> 345或<15时色相值为红色?所以:'if(hsv [0] * 360> 345 || hsv [0] * 360 <15){'但是这并不能给出可接受的结果... – francisMi

+0

@francisMi:请更具体一些。什么是不可接受的? –

+0

@OliCharlesworth检查不可接受。 – ArtemStorozhuk

1

正如你所建议的,你可能想在HSB空间做一些比较。您可能希望根据您的期望值为所有三个值定义适当的风险。

您可以使用Color.RGBtoHSB来获取给定颜色的值。

http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#RGBtoHSB%28int%2C%20int%2C%20int%2C%20float%5B%5D%29

+1

1.4.2?请随时加入我们*** 3千年!目前正在查看Java 7. –

+0

如果您搜索“Color.RGBtoHSB”,则1.4.2文档是第一个链接。我发现大多数Java搜索都是这种情况 - 旧文档首先出现。我必须在每次搜索后添加'7'来获取它,以便提供最新的文档,这非常可惜。 –

+0

使用一些URL(包括这个),您可以用“7”替换路径中的“1.4.2”。 – finnw