Как классифицировать объекты с разным количеством отверстий? - PullRequest
0 голосов
/ 02 мая 2019

Мой объект классифицирует ячейки в данном изображении.Классификация основана на форме и количестве ядер (отверстий).Некоторые клетки имеют круговой тип, а другие нет.У некоторых из них есть одно отверстие (ядро), а у других - больше.

После некоторой очистки и предварительной обработки я до сих пор классифицировал круглые и перекрывающиеся клетки.Но есть клетка с двумя отверстиями (ядром), которая должна принадлежать другому классу.Но я не мог этого сделать.Если я смогу подсчитать количество дырок, я думаю, что смогу также классифицировать эту клетку.

im =imread('blood.jpg'); % Reading target image
figure(1),imshow(im), title('Original Image');
imGray = rgb2gray(im); % Converting image RGB to gray-level (2-Dimensional).
gray_thresh = graythresh(imGray);
bw = im2bw(imGray, gray_thresh);  figure(2), imshow(bw), title('Binary Image'); % Converting image to binary.
bw = imcomplement(bw); % Taking image's complement.
figure(3), imshow(bw), title('Complement of Image');
%bw=imfill(bw,'holes');
bw = imclearborder(bw);
figure(4), imshow(bw), title('Objects touching image borders removed');
bw = bwareaopen(bw,500); % Remove objects smaller than 500px.
figure(5),imshow(bw); title('Small objects removed');

label = bwlabel(bw);

[B,L] = bwboundaries(bw,'noholes');
stats = regionprops(L,'Area','Centroid');
threshold = 0.70;

figure(6), imshow(bw)
hold on
for k = 1:length(B)  
  % obtain (X,Y) boundary coordinates corresponding to label 'k'
  boundary = B{k};
  % compute a simple estimate of the object's perimeter
  delta_sq = diff(boundary).^2;    
  perimeter = sum(sqrt(sum(delta_sq,2)));
  % obtain the area calculation corresponding to label 'k'
  area = stats(k).Area;
  % compute the roundness metric
  metric = 4*pi*area/perimeter^2;

  if metric > threshold
    plot(boundary(:,2),boundary(:,1),'r','LineWidth',2)
    %Circular
  else
    plot(boundary(:,2),boundary(:,1),'g','LineWidth',2)
    %Overlapped
  end
end

Sample image Ячейка с двумя ядрами (дырками)

...