Значение MaxFeretDiameter с использованием regionprop - Matlab - PullRequest
2 голосов
/ 10 апреля 2020

Как получить значение MaxFeretDiameter в регионе MaxFeretPropertiespropprop?

Код:

url='http://www.myiconfinder.com/uploads/iconsets/256-256-a0e17c0238c8bd1f805435f7cf132fc1-message.png';

Image = imread(url);
Image = rgb2gray(Image);
Image = imcomplement(Image);

BW = imbinarize(Image);
imshow(BW);
[B,L] = bwboundaries(BW,'noholes');

stat = regionprops(Image,'Centroid', 'MaxFeretProperties' );
disp(stat.MaxFeretProperties);

Ошибка:

Reference to non-existent field 'MaxFeretProperties'.

Error in Untitled1 (line 17)
disp(stat.MaxFeretProperties);

1 Ответ

1 голос
/ 10 апреля 2020

Свойства Feret были добавлены к regionprops в MATLAB R2019a . Если ваша версия MATLAB старше этой, она не будет знать параметр 'MaxFeretProperties'.

Добавление параметра 'MaxFeretProperties' к regionprops добавит три функции в структуру вывода. Вы можете убедиться в этом, изучив его:

>> BW = ~imbinarize(Image);                                % NOTE! invert result so the object pixels are 1 and background pixels are 0.
>> stat = regionprops(BW,'Centroid','MaxFeretProperties'); % NOTE! input binary image here!
>> stat

stat = 

  struct with fields:

               Centroid: [139.3095 124.9653]
       MaxFeretDiameter: 274.7217
          MaxFeretAngle: 132.0492
    MaxFeretCoordinates: [2×2 double]

Таким образом, stat(ii).MaxFeretDiameter даст максимальный диаметр Ферета для номера объекта ii.

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

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