2015-05-04 3 views
0

Я не могу понять, как подсчитать количество больших ячеек со следующего изображения. enter image description hereКоличество клеток с данного изображения

+0

Что вы пробовали? Чем больше информации и данных вы дадите, тем больше вероятность, что вы получите правильный ответ. –

+3

Я считаю семь :) – Ratbert

+0

Его код, который дает общее количество изображений, а не то, что мне нужно: – ddesai

ответ

5

Поскольку клетка интереса выглядит вполне круговой вы можете использовать imfindcircles в цветовом Lab, которая больше подходит для работы с здесь, чем RGB пространство, учитывая ~ фиолетового цвета от E окрашивания клеток H &.

Так что в основном преобразуйте цветовое пространство, затем примените порог на 3-м канале, в котором большие ячейки являются наиболее яркими, а затем примените imfindcircles. Обратите внимание, что здесь свойство Edge должно быть довольно низким, чтобы отличать ячейки близко друг к другу (как в левом нижнем углу вашего изображения). Более того, моя версия Matlab не поддерживает rgb2lab, поэтому я использовал makecform для преобразования между цветовыми пространствами.

Вот что 3 канала изображения в лаборатории взгляда цветового пространства, как:

enter image description here

Как вы видите, большие клетки с большим ядром, которое, казалось самым ярким выделяется довольно много в 3-й канал. Таким образом, мы оставим только этот канал для остальных.

Чтобы получить # обнаруженных ячеек, просто запросите номер radii, заданный функцией imfindcircles (numel(radii)).

clear 
clc 

close all 

Im = imread('Cells.jpg'); 

%// Transform to Lab color space 
cform = makecform('srgb2lab'); 
Im_lab = applycform(Im,cform); 

%// Apply threshold 
Im_lab = im2bw(Im_lab(:,:,3),.35); 

%// Detect ~circles 
[centers, radii] = imfindcircles(Im_lab,[12 35],'Sensitivity',0.7,'Edge',0.1,'ObjectPolarity','dark'); 

imshow(Im); 
hold on 
viscircles(centers, radii,'EdgeColor','k','LineWidth',4); 

NumCircles = numel(radii); 

%// Display message box 
Msg = sprintf('You have just found %i circles!!!\n',NumCircles); 

msgbox(Msg) 

Выход:

enter image description here

+0

Я ищу количество выходных ячеек вместе с выше. Например, он должен сказать количество ячеек = 7 и отобразить изображение , Благодарю. – ddesai

+1

@ddesai этот метод покажет вам количество ячеек. Используйте эту строку 'num_of_cells = size (центры, 1);' вы увидите, что она распечатывает счет. Отличный код Benoit_11 – andrew

+0

спасибо @andrew Я думал, что написал это :) Я отредактирую ответ, чтобы сделать все более ясным –