MATLAB中RGB图像的强度

时间:2013-04-16 15:08:53

标签: matlab image-processing

enter image description here

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

由于

2 个答案:

答案 0 :(得分:3)

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

grayIm = rgb2gray(image);

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

答案 1 :(得分:1)

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

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

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

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

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

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