1

在此处输入图像描述

我有血管的 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 图像中的强度值...??????

谢谢

4

2 回答 2

3

本质上,您希望将像素转换为灰度值以获得单一强度。有很多不同的方法,这个博客列出了其中的三种,所以我建议你阅读一下。但是,如果您只是想要一些快速的东西,我会倾向于简单地将整个图像转换为灰度并使用该值:

grayIm = rgb2gray(image);

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

于 2013-04-16T15:14:11.030 回答
1

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

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

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

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

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

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

于 2013-04-16T16:25:05.510 回答