【问题标题】:Matlab - How to detect green color on image?Matlab - 如何检测图像上的绿色?
【发布时间】:2016-10-07 16:23:33
【问题描述】:

我正在从事的项目基本上必须检测图像上的三个并删除其他信息。我使用 HSV 作为分割和函数 regionprops 来检测每个元素。它工作正常,但在具有房屋屋顶的相同情况下,它们不会被删除,因为 Hue 的值与三个相似。到目前为止,这是结果:

为了移除屋顶,我认为也许可以检测到每个检测到的区域中的绿色。如果该区域没有 70% 的绿色(例如),则删除该区域。我怎样才能做到这一点?如何仅检测图像的绿色?

【问题讨论】:

  • 将HSV转为RGB,看看绿色层的一般强度?

标签: matlab colors image-segmentation


【解决方案1】:

解决方案说明

评估补丁中的绿色水平是一个有趣的想法。我建议以下方法:

  1. 将您的色块从 RGB 转换为 HSV 颜色系统。在 HSV 颜色系统中,通过检查第一个通道,更容易评估每个像素的色调(或颜色)。

  2. 在色调系统中找到绿色的范围。在我们的例子中,它大约是 [65/360,170/360],可以看到 here:

  1. 对于每个补丁,计算有多少像素的色调值在绿色范围内,然后除以连通分量的大小。

代码示例

以下函数评估补丁中的“绿色程度”:

function [ res ] = evaluateLevelOfGreen( rgbPatch )
%EVALUATELEVELOFGREEN Summary of this function goes here
%   Detailed explanation goes here

%determines the green threshold in the hue channel
GREEN_RANGE = [65,170]/360;
INTENSITY_T = 0.1;

%converts to HSV color space
hsv = rgb2hsv(rgbPatch);

%generate a region of intereset (only areas which aren't black)
relevanceMask = rgb2gray(rgbPatch)>0;

%finds pixels within the specified range in the H and V channels
greenAreasMask = hsv(:,:,1)>GREEN_RANGE(1) & hsv(:,:,1) < GREEN_RANGE(2) & hsv(:,:,3) > INTENSITY_T;

%returns the mean in thie relevance mask
res = sum(greenAreasMask(:)) / sum(relevanceMask(:));



end

结果

在绿色补丁上使用时:

greenPatch1 = imread('g1.PNG');
evaluateLevelOfGreen(greenPatch1)
greenPatch2 = imread('g2.PNG');
evaluateLevelOfGreen(greenPatch2)
greenPatch3 = imread('g3.PNG');
evaluateLevelOfGreen(greenPatch3)

结果:

ans = 0.8230
ans =  0.8340
ans = 0.6030

在非绿色补丁上使用时:

nonGreenPatch1 = imread('ng1.PNG');
evaluateLevelOfGreen(nonGreenPatch1)

结果:

ans = 0.0197

【讨论】:

  • 只有一件事,当您创建 greenAreaMask 时,您使用两次色调 (h) 值和强度值 (v)。这是正确的还是您想在第一个上使用 h,在第二个上使用 saturarion (s),在第三个上使用值 (v)?
  • @PedroMarques 这就是我的意思。前两个比较检查该值是否在正确的色调范围内,第三个比较测试 v 值是否足够高。我这里其实不用饱和度。
  • 这种方法计算每个区域的绿色水平的平均值。但是如果我想知道每个像素的绿度,我该怎么做呢?
  • @PedroMarques 在这种情况下你可以简单地写: sum(greenAreasMask(:))
猜你喜欢
  • 2022-07-12
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
相关资源
最近更新 更多