Определение формы капсулы на изображении - PullRequest
2 голосов
/ 04 мая 2020

У меня есть двоичное изображение , и я хотел бы обнаружить все области приблизительно в форме капсул, такие как this (отмечены красным).

Размер и ориентация желаемых областей различны для каждого изображения и неизвестны.

Желаемое соотношение высоты и ширины составляет от 3 до 5.

Я не знаю, как определить форму с неизвестной ориентацией и размером, поэтому я попытался использовать соотношение области площадь и диагональ ее ограничивающего прямоугольника в качестве критерия, но результат не очень хороший. Вот код, который я использую.

regions = bwconncomp(img);
sizes = cellfun(@numel, regions.PixelIdxList);
N = regions.NumObjects;
is_capsule = false(N, 1);

for k = 1:N

    idx = regions.PixelIdxList{k};
    [row, col] = ind2sub(sz, idx);
    h = max(row) - min(row) + 1;
    w = max(col) - min(col) + 1;
    l = numel(idx) / (h^2 + w^2);

    if l >= 0.1 && l <= 0.2
        is_capsule(k) = 1;
    end

end
...