Ограничивающий прямоугольник с использованием MATLAB для изображения
Я пытаюсь нарисовать ограничивающую рамку вокруг белого пятна на изображении ниже:

Мне это понравилось:
bw = imread('box.jpg');
bw=im2bw(bw);
imshow(bw)
L = bwlabel(bw);
s = regionprops(L, 'Area', 'BoundingBox');
s(1);
area_values = [s.Area];
idx = find((100 <= area_values) & (area_values <= 1000)); % list of all the objects   
%whose area is between 100 and 1000
bw2 = ismember(L, idx); %construct a binary image containing all the objects whose 
%area is between 100 and 1000 by passing L and idx to ismember. 
imshow(bw2)
Выход bw2, до сих пор является: 

Может ли кто-нибудь один сказать мне, как нарисовать ограничивающую рамку вокруг этого пятна(белого)?
Обновление Ответ ваджи на самом деле точно решил проблему.
4 ответа:
Пседуо -
- выбрать наибольшее значение, по величине х, наименьшее х, наименьшее y С в BLOB. То есть точки на капле. Это ваши координаты, которые вы можете использовать для построения ограничивающего прямоугольника.
Предполагая, что верхний левый угол изображения равен (0,0)
(smallestX,smallestY)-----------------(largestX,smallestY) | | | | | | | | (smallestX,largestY)------------------(largestX,largestY)И для нахождения минимальных / максимальных значений и индексов.
[r,c]=find(img==min(min(img))) [r,c]=find(img==max(max(img)))R, c представляют строку и столбец в матрице img.
- я отметил точки на вашем изображении, которые вы можете использовать для создания границы коробка.
- увеличенное изображение, чтобы получить лучший обзор.

Как 20 000-й зритель этого вопроса, я отвечу на то,что, как мне кажется, спрашивает спрашивающий.
Чтобы отобразить прямоугольник на странице, вам просто нужно правильно интерпретировать ограничивающую рамку для фигуры. Вы уже вычислили это в
s(idx).BoundingBoxТаким образом, добавьте эти две строки в свой сценарий:
bb = s(idx).BoundingBox; rectangle('Position',[bb(1) bb(2) bb(3) bb(4)],'EdgeColor','green');И вы получите:

