【问题标题】:Intensity in RGB image in MATLABMATLAB中RGB图像的强度
【发布时间】:2013-04-16 15:08:53
【问题描述】:

我有血管的 RGB 图像。为了区分两种血管类型(动脉和静脉),我需要计算圆形 ROI 中 RGB 图像的强度。静脉(V)呈深红色,而动脉呈浅红色。不是计算不同通道(R、G和B)的强度,是否可以计算RGB图像的强度?

我只用以下方式在一个通道(比如绿色通道)中进行了强度计算:

 image=imread('vesselAV.jpg');
 t = 0:pi/20:2*pi;

 xi = R0*cos(t)+x; % where x , y are coordinate of centre of circular roi   
                         % (marked  in image)
yi = R0*sin(t)+y;

g=image(:,:,2);

roimask = poly2mask(double(xi),double(yi), size(g,1),size(g,2));

pr_gc = find(roimask);

Intensity_green_roi_V =(g(pr_gc)); % intensity in roi for vein

类似地,我计算了动脉的 roi 强度....

但是如何计算 RGB 图像中的强度值...?????

谢谢

【问题讨论】:

  • 转换成HSV然后可能只看V通道?

标签: matlab image-processing


【解决方案1】:

本质上,您希望将像素转换为灰度值以获得单一强度。有很多不同的方法,this blog lists three of them 所以我建议你读一下。但是,如果您只是想要一些快速的东西,我会倾向于简单地将整个图像转换为灰度并使用该值:

grayIm = rgb2gray(image);

rgb2gray 函数使用图像的亮度(HSV 中的 V),这是博文中的第三个示例。

【讨论】:

    【解决方案2】:

    我可能误解了这个问题。如果这个答案被关闭,请原谅我。在像素 i,j,image(i,j,:) 是一个三元素向量,具有三个通道 R、G 和 B 的强度值。如果您不想使用三元素向量,那么 I建议使用 R 强度,因为最大的偏差似乎出现在那里。即使用 image(:,:,1)。

    如果您正在寻找 3 维“典型”强度,那么通常会计算感兴趣像素的平均值。

    假设mask 是您的感兴趣区域,表示为 1 和 0 的 2D 矩阵,那么这将计算您感兴趣区域的平均 3D 强度:

    sum(sum(double(image).*repmat(mask,[1 1 3]),2),1) / sum(reshape(mask,[],1)))
    

    现在,您可以使用此平均强度和一些欧几里德距离指标来确定您的“静脉”定义中是否包含所需的像素。

    还有很多其他方法可以解决这个分割问题,但这似乎是您要询问的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-21
      • 1970-01-01
      相关资源
      最近更新 更多