алгоритм водораздела в Matlab - PullRequest
8 голосов
/ 14 июля 2011

Кто-нибудь знает, как написать функцию в Matlab для сегментирования ячеек и вычисления среднего площадь ячейки с использованием алгоритма водораздела ? Любая помощь приветствуется. Спасибо!

Вот изображение дрожжевых клеток

yeast cells

Ответы [ 2 ]

13 голосов
/ 14 июля 2011

Вот один из способов сегментировать изображение с помощью водораздела.Вы можете сделать гораздо больше (например, слить клетки с двумя ядрами, если они еще не завершили цитокинез), но приведенные ниже шаги должны дать вам первое представление.

(1) Определить порог клеточного фона, порог клеточного ядра

%# read image
img = imread('http://i.stack.imgur.com/nFDkX.png');
%# normalize to 0...1
imgN = double(img-min(img(:)))/(max(img(:)-min(img(:))));
th1=graythresh(imgN);
th2 = graythresh(imgN(imgN>th1));

cellMsk = imgN>th1;
nucMsk = imgN>th2;

figure,imshow(cellMsk+nucMsk,[])

enter image description here

(2) Сгладить необработанное изображение (чтобы избежать чрезмерной сегментации) иналожить ядра как минимумы

[xx,yy]=ndgrid(-5:5,-5:5);
gf = exp((-xx.^2-yy.^2)/20);
filtImg = conv2(imgN,gf,'same');

figure,imshow(filtImg,[])

filtImgM = imimposemin(-filtImg,nucMsk);

enter image description here

(3) Водораздел, замаскировать ячейки и отобразить

ws = watershed(filtImgM);
ws(~cellMsk) = 0;

lblImg = bwlabel(ws);

figure,imshow(label2rgb(lblImg,'jet','k','shuffle'));

enter image description here

(4) Теперь вы можете использовать REGIONPROPS на помеченном изображении, чтобы извлечь необходимую статистику.

0 голосов
/ 14 июля 2011

См. watershed в наборе инструментов Обработка изображений и это сообщение о сегментации ячеек в блоге «Steve on Image Processing».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...