2013-04-16 3 views
1

enter image description hereIntensité dans l'image RVB dans MATLAB

J'ai l'image RVB des vaisseaux. Pour distinguer deux types de vaisseaux (artère et veine), j'ai besoin de calculer l'intensité de l'image RVB dans le ROI circulaire. La veine (V) est de couleur rouge foncé tandis que l'artère est de couleur rouge clair. Au lieu de calculer l'intensité dans différents canaux (R, G et B), est-il possible de calculer l'intensité dans l'image RGB?

Je l'ai fait le calcul d'intensité dans un seul canal (canal vert dire) de manière suivante:

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 

De même, je l'ai calculé en intensité pour l'artère .... roi

Mais Comment puis-je calculer la valeur d'intensité dans l'image RVB ... ?????

Merci

+1

Convertir en HSV, puis seulement regarder le canal V peut-être? – Dan

Répondre

3

Essentiellement, vous voulez convertir les pixels en niveaux de gris aux valeurs pour obtenir une intensité unique. Il y a un certain nombre de façons différentes, et this blog lists three of them alors je vous suggère de lire cela. Toutefois, si vous voulez juste quelque chose de rapide, je serais enclin à convertir simplement toute l'image en niveaux de gris et utiliser cette valeur:

grayIm = rgb2gray(image); 

La fonction rgb2gray utilise la luminosité de l'image (la V HSV), qui est le troisième exemple dans le blog.

1

Je peux mal comprendre la question. Alors pardonne-moi si cette réponse est éteinte. Au pixel i, j, l'image (i, j, :) est un vecteur à trois éléments, avec des valeurs d'intensité pour les trois canaux R, G et B. Si vous ne voulez pas travailler avec un vecteur à 3 éléments, alors je Je recommanderais d'utiliser l'intensité R, car la plus grande déviation semble se produire là. c'est-à-dire travailler avec l'image (:,:, 1).

Si vous recherchez l'intensité «typique» en 3 dimensions, vous calculez généralement une moyenne sur les pixels d'intérêt.

Say, mask est votre région d'intérêt représentée comme une matrice 2D de 1 et de 0, cela va calculer l'intensité moyenne 3D dans votre région d'intérêt:

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

Maintenant, vous pouvez utiliser cette moyenne l'intensité et certaines métriques de distance euclidienne pour déterminer si les pixels désirés sont contenus dans vos définitions de «veines».

Il existe de nombreux autres moyens d'attaquer ce problème de segmentation, mais il semble que ce soit celui que vous posez.

Questions connexes