WedX - журнал о программировании и компьютерных науках

Как я могу применить ограничивающую рамку для несмежной области в Matlab

Я пытаюсь применить ограничивающую рамку для несмежной области в примере ниже. Я нашел кое-что в справочных документах Matlab на regionprops, но ничего не объяснил о том, как это сделать. Мне нужна самая маленькая коробка, которая может содержать все капли на изображении.


Ответы:


1

По умолчанию при вводе с маской ввода типа logical regionprops автоматически применить bwlabel к маске и вычислить свойства для каждого связанного компонента маска ввода.
В вашем случае это нежелательное поведение, поскольку вы хотите, чтобы все белые пиксели рассматривались как часть одного и того же компонента. Чтобы преодолеть это поведение по умолчанию, вам просто нужно преобразовать маску ввода из logical в другой тип данных.

st = regionprops( uint8( BW ), 'BoundingBox' ); %// cast to uint8
rect = st.BoundingBox; %// the bounding box of all white pixels

%// display the results
figure;
imshow( BW, 'border', 'tight' ); 
hold on;
rectangle('Position', rect, 'EdgeColor', 'r', 'LineWidth', 1.5 );

В результате
введите здесь описание изображения

07.12.2014
  • Спасибо за ответ, но Ваш код по-прежнему Box только для сегмента региона. 07.12.2014
  • @ASpac, пожалуйста, посмотрите мое редактирование - результат на вашем входном изображении. Также обратите внимание, что на изображении, которое вы предоставили, первый столбец и последняя строка НЕ ​​черные, я удалил их как выбросы. 07.12.2014
  • Я сделал следующее: >> I5(:,1)=0; >> I5(256,:)=0; >> st = regionprops( uint8( I5 ), 'BoundingBox' ); %// cast to uint8 rect = st.BoundingBox; %// the bounding box of all white pixels %// display the results figure; imshow( I5, 'border', 'tight' ); hold on; rectangle('Position', rect, 'EdgeColor', 'r', 'LineWidth', 1.5 ); и получил эту ошибку: Ошибка при использовании прямоугольника Ширина и высота должны быть › 0 08.12.2014
  • Это сработало!, это была проблема с uint8, я использовал im2uint8, и это сработало. Спасибо 08.12.2014
  • С какой стати, почему regionprops ведет себя так... Это сэкономило мне время. 10.03.2017
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]