2

У меня есть следующий объект и вы хотите извлечь максимальные размеры вертикальной (красной линии) и горизонтальной (синей линии) в MATLAB.Извлечь вертикальные и горизонтальные размеры нерегулярного объекта

enter image description here

Я использовал следующий код, но я не уверен, если я использую право собственности:

L = bwlabel(myImage); 
prop = regionprops(L,'BoundingBox'); 

ответ

3

Если вы хотите другой ответ, который не использует regionprops, если предположить, что черная массой является только объекта на изображении, вы можете найти минимальную остовную ограничивающий параллелепипед, находя верхние левые и нижние правые углы объект, затем найдите ширину и высоту, вычитая самый правый столбец и самый левый столбец и нижний самый ряд строк и самый верхний из всех, что считается пикселем объекта соответственно. Если предположить, что бинарное изображение хранится в L, выполните следующие действия:

[r,c] = find(~L); 
width = max(c) - min(c) + 1; 
height = max(r) - min(r) + 1; 

find находит все места строк и столбцов, которые отличны от нуля. Таким образом, мне пришлось инвертировать ваше изображение, чтобы все нулевые позиции стали ненулевыми. r и c - это векторы столбцов, которые возвращают расположение строк и столбцов того, что отличное от нуля, затем выполняется логика, указанная выше.

2

Если вы в буквальном смысле просто хотите размеров этих линий, они уже содержащийся в результате от regionprops.

prop = regionprops(L, 'BoundingBox'); 

prop = 

    BoundingBox: [x, y, width, height] 

Длины ваших синих и красных линий будет третий и четвертый элементы BoundingBox поля соответственно.

+0

Мое изображение - это левое, и я просто продемонстрировал, что хочу на правильном. Итак, могу ли я найти эти размеры с помощью «BoundingBox» на левом изображении? – Sam

+1

@Sam: * «Длина ваших синих и красных линий будет третьим и четвертым элементами поля« BoundingBox' соответственно ». * Я не думаю, что в этом утверждении есть место для неправильной интерпретации. Это четко прописано. – rayryeng

+0

О да, и BTW Suever, хорошая работа :) +1. – rayryeng

Смежные вопросы