image thumbnail

Introdução à Análise de Dados com MATLAB aplicada a Life Science

by

 

Slides and demo files from the recorded webinar.

TissueMetsFcn.m
%% TissueMetsFcn
function metsFraction = TissueMetsFcn(imgDir,imgName)
%% Leitura do arquivo de imagem
rgbImg = imread([imgDir imgName]);

%% Passo 1: Isolar o tecido (usar o ndice 2: plano de cor verde)
gLayer = rgbImg(:,:,2);

%% Criao de uma mscara para o tecido
tissueMask = ~im2bw(gLayer,graythresh(gLayer));

%% Limpeza da mscara
% Remover as manchas maiores em torno da objeto principal
tissueMask = imclearborder(tissueMask);
% Remover as manchas menores (que 200 pixels) em torno do objeto princial
tissueMask = bwareaopen(tissueMask,200);

%% Preencher a mscara
tissueMask = imfill(tissueMask,'holes');

%% Passo 2: Isolar as leses metaststicas.
% Selecionar o ndice 1, plano de cor vermelha no qual  mais 
% seja mais fcil distinguir as clulas saudveis das clulas doentes.
rLayer = rgbImg(:,:,1);

%% Aplicar a mscara ao plano
% Para eliminar as manchas em torno do objeto princial 
rLayer(~tissueMask) = 255;

%% Separar as manchas escuras na imagem
% Definir o valor limiar de separao
threshval = round(mean(mean(mean(rgbImg)))*0.845);
% Selecionar os pontos mais 'escuros' 
metsMask = ~im2bw(rLayer,threshval/255);

%% Passo 3: Quantificar a metastasis.
% Calcular a proporo de pontos 'escuros' na imagem
metsFraction = nnz(metsMask)/nnz(tissueMask);

%% Passo 4: Exibir as imagens (original e final) em cores 
% Produzir imagem final colorida
L = double(tissueMask);
L(metsMask) = 2;
finalImage = label2rgb(L,[0 0 1;1 0 0;1 1 1]);
% Exibir imagem original
subplot(1,2,1)
imshow(rgbImg)
title('Imagem Original')
% Exibir imagem final
subplot(1,2,2)
imshow(finalImage)
fprintf('Imagem [%s]: %.3g%% Metastasis (Limiar: %0.3g)\n',...
    imgName,100*metsFraction,threshval);
title(sprintf('%.3g%% Metastasis (Limiar: %0.3g)',...
    100*metsFraction,threshval));
shg;

Contact us