Получение ROI пересечений двух областей

Простейшие вопросы в области инженерной разработки
Ответить
Аватара пользователя
Мишая
interested
interested
Сообщения: 6
Зарегистрирован: 27 апр 2018, 12:29
Репутация: 0
Версия LabVIEW: 17
Контактная информация:

Получение ROI пересечений двух областей

Сообщение Мишая »

Необходимо получить ROI пересечений двух областей.
Есть ли в LabVIEW готовый инструмент, выполняющий данную операцию?

На прикрепленном изображении выделены 4 области. Первая пересекается со всеми остальными. На выходе необходимо получить ROI их пересечений (ROI вокруг желтых областей).
Вложения
ROItest.png

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3483
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Получение ROI пересечений двух областей

Сообщение dadreamer »

Думаю, это должно помочь.

Convex Polygon Intersection VI
http://zone.ni.com/reference/en-XX/help ... oly_inter/

Computes the intersection of two convex polygons.

If two polygons do not intersect, the VI returns empty arrays to Intersection X and Intersection Y with no error.

Аватара пользователя
Мишая
interested
interested
Сообщения: 6
Зарегистрирован: 27 апр 2018, 12:29
Репутация: 0
Версия LabVIEW: 17
Контактная информация:

Re: Получение ROI пересечений двух областей

Сообщение Мишая »

Спасибо.

Данная функция работает только для выпуклых многоугольников. На прикрепленном рисунке третья смежная область не будет найдена.

Я надеялся, что в палитрах IMAQ есть что-то подобное, что принимает на вход формат ROI, а не массивы.

zxc_pavel
assistant
assistant
Сообщения: 140
Зарегистрирован: 02 июн 2016, 12:07
Репутация: 0
Версия LabVIEW: 15
Контактная информация:

Re: Получение ROI пересечений двух областей

Сообщение zxc_pavel »

В палитре нету.
Пример с NI должен Вам помочь, попробуйте. Можно массив вершин взять с roi.

Я его не нашел, начал пробовать сам сделать. Если интересно, продолжайте. Суть: пускаем лучи из точки к вершинам, потом вычитаем углы между соседними лучами и складываем их. Если точка снаружи - сумма будет равна нулю, внутри - не равна нулю. Долго работает, переборов много, поэтому не все точки, я прореживаю там. В примере работает только для roi - многоугольника, в прямоугольнике надо начало чуть переделать.
Вложения
1304.rar
(325.23 КБ) 25 скачиваний
1304.png

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3483
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Получение ROI пересечений двух областей

Сообщение dadreamer »

>> Данная функция работает только для выпуклых многоугольников. На прикрепленном рисунке третья смежная область не будет найдена.
К сожалению, готовых функций для произвольных многоугольников нет. Здесь есть два варианта: либо писать собственный код, либо подключать сторонний пакет/библиотеку. Например, в Матлабе это так делается: https://www.mathworks.com/help/matlab/r ... 120e954386 Или в HALCON есть ряд операторов для регионов и xld: https://www.mvtec.com/doc/halcon/12/en/ ... s_xld.html

Я когда-то сталкивался с похожей задачей, только для произвольных эллипсов. Частные случаи меня не устраивали. В итоге начал писать свой код, но позднее нашёл dll, на ней и остановился.

>> Я надеялся, что в палитрах IMAQ есть что-то подобное, что принимает на вход формат ROI, а не массивы.
Конвертировать из/в ROI не проблема, есть палитра Region of Interest -> Region of Interest Conversion.

Хотя, можно попробовать ещё такой вариант: создать из многоугольников бинарные маски через IMAQ ROIToMask 2 VI, а потом найти пересечение масок через And. Должна получиться бинарная картинка, на которой область пересечения будет иметь логическую единицу, а фон - ноль. Далее эту картинку можно пропустить через IMAQ MaskToROI VI или IMAQ Particle Analysis VI и получить координаты области.

Quick-and-Dirty пример. Не забудьте добавить IMAQ Dispose для тех картинок, что не нужны по окончании работы.
Вложения
2020-04-13_17-58-53.jpg
Untitled 1.vi
lv2018
(70.88 КБ) 14 скачиваний

Ответить

Вернуться в «Для чайников»