Определение центра объекта
-
- user
- Сообщения: 80
- Зарегистрирован: 22 мар 2014, 23:22
- Версия LabVIEW: 2015
- Благодарил (а): 10 раз
- Поблагодарили: 1 раз
- Контактная информация:
Определение центра объекта
Всем доброго времени суток! Уважаемые форумчане сам я новичек в освоении LabView, поэтому вставшая передо мной задача загнала меня в тупик.Обратился к Вам по той причине , что еще не изучил LabView должным образом.Суть задачи: Берем изображение с произвольной геометрической фигурой (необязательно правильной формы)формата JPG и т.п.Нужно вычислить центр этой фигуры, соответственно установить на него маркер. Затем нужно повернуть данное изображение на произвольный угол и чтобы центр этой фигуры остался там же где и был обозначен вначале.Т.е как мне видится нужно вычислить центр масс данного геометрического тела.Может кто-то делал, что-то подобное или подскажет в каком направлении "копать". Сам вижу следующее решение данной задачи:1)нужно выделить контур объекта(есть такая функция и проблем не вызывает),2)Взять точки контура и применить к нему "Правило моментов"(а вот здесь у меня тупик с алгоритмом решения ),3) Установить маркер-это и будет центром масс.Может у кого-то будет другой алгоритм решения данной задачи?!Заранее благодарен за помощь.
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
-
- user
- Сообщения: 80
- Зарегистрирован: 22 мар 2014, 23:22
- Версия LabVIEW: 2015
- Благодарил (а): 10 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Определение центра объекта
Спасибо за хороший образец...буду разбираться со своей задачей дальше применяя Ваш пример. У меня вся загвоздка в том , что фигурой может быть и треугольник и квадрат и тетрайдер. Видится мне, что нужно изображение пройти по строкам и столбцам для начала.Затем записать данные в массив и каким-то образом отделить область внутри контура фигуры, а затем применяя "правило моментов"(я так понимаю какая-то мат.функция должна присутствовать в наборе функций) определить цент масс.
-
- user
- Сообщения: 80
- Зарегистрирован: 22 мар 2014, 23:22
- Версия LabVIEW: 2015
- Благодарил (а): 10 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Определение центра объекта
Сейчас стал разбираться более подробно с Вашим примером и оказалось, что для треугольника, квадрата и т.п центр определяется неправильно
-
- VIP
- Сообщения: 1327
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Определение центра объекта
На будущее - вы когда пишете что что-то "работает неправильно", то вообще говоря должны описать три части:AN-G писал(а):Сейчас стал разбираться более подробно с Вашим примером и оказалось, что для треугольника, квадрата и т.п центр определяется неправильно
- что вы сделали
- какой результат получили
- какой результат ожидаете получить
В общем случае по двумерной картинке я б как-то так считал: Здесь будет учитываться не только контур, но и яркость объекта.
В частном случае бинарных объектов эта конструкция сводится к вышеприведённому примеру Якова Иосифовича со средними значениями.
Пример прилагаецца.
- Вложения
-
- Centroid.vi
- (23.86 КБ) 345 скачиваний
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Определение центра объекта
В пакете NI Vision есть замечательный IMAQ Particle Analysis VI, выдающий разные геометрические параметры объектов в бинарном изображении. Так вот, там есть и центр масс, и разные моменты инерции, и ещё много чего другого. Можно также использовать более простой IMAQ Particle Analysis Report VI, на выходе тоже будет центр масс. Пример к этому лежит в LabVIEW\examples\Vision\2. Functions\Binary Analysis\Particle Analysis Report Example.vi (при установке пакета).AN-G писал(а):нужно вычислить центр масс данного геометрического тела.
-
- user
- Сообщения: 80
- Зарегистрирован: 22 мар 2014, 23:22
- Версия LabVIEW: 2015
- Благодарил (а): 10 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Определение центра объекта
Пока получилось только это и то с ошибкой (см.вложение) и я не пойму как найти описание по коду ошибки, если таковое есть вообще...dadreamer спасибо за совет эти функции я посмотрел, но они именно для бинарного кода...получается, что после определения центра масс объекта нужно кодировать изображение обратно и на указанной точке центра масс установить маркер(это был бы не плохой вариант кстати и более простой)???
-
- user
- Сообщения: 80
- Зарегистрирован: 22 мар 2014, 23:22
- Версия LabVIEW: 2015
- Благодарил (а): 10 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Определение центра объекта
AndreyDmitriev благодарю за науку...впредь постараюсь исправиться . По сути у меня ничего не получилось, а хотелось бы получить программу вычисления центра объекта. Кстати во вложенном файле не выводится во всплывающих окнах маркер функции Centroid. Может кто=то объяснит, что я не так делаю.
-
- VIP
- Сообщения: 1327
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Определение центра объекта
Для того, чтобы что-то вывести во всплывающих окнал - используйте функции из палитры Overlay (IMAQ Overlay Point / Line и т.д.). Кроме того, у вас у обоих окон одинаковый номер 1 - если надо два окна, номера должны быть различные (можно до 15 окон открыть)AN-G писал(а):AndreyDmitriev благодарю за науку...впредь постараюсь исправиться . По сути у меня ничего не получилось, а хотелось бы получить программу вычисления центра объекта. Кстати во вложенном файле не выводится во всплывающих окнах маркер функции Centroid. Может кто=то объяснит, что я не так делаю.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Определение центра объекта
У вас картинки в архиве имеют яркость двух уровней: 0 и 255. Можно считать такую картинку бинарной, так как отрезок 0...1 растянут на 8-битную палитру 0...255. И инструменты IMAQ Particle Analysis VI и IMAQ Particle Analysis Report VI нормально работают с такими картинками, как впрочем и все остальные из пакета Vision (если картинка задана как Grayscale (U8)).AN-G писал(а):dadreamer спасибо за совет эти функции я посмотрел, но они именно для бинарного кода...получается, что после определения центра масс объекта нужно кодировать изображение обратно и на указанной точке центра масс установить маркер(это был бы не плохой вариант кстати и более простой)???
Если решать вашу задачу сходу, то можно сделать как-нибудь так: Но я бы фильтранул изображение и/или выкинул мелкие точки, чтобы они не мешали при работе (IMAQ GrayMorphology и IMAQ RemoveParticle). А можно взять только объект с максимальной площадью и для него вывести маркёр в центре масс:
ПКМ на коде ошибки в кластере error in/out -> Explain Error. Конкретно у вас пишет:я не пойму как найти описание по коду ошибки, если таковое есть вообще
Неверно выполняете копирование картинки, надо создать ещё одну область в памяти с новым именем, и её использовать в качестве Dst в IMAQ Copy, а источником будет первая картинка, которая из файла грузится.Error -1074396154 occurred at IMAQ Inspection
Possible reason(s):
IMAQ Vision: The image is not large enough for the operation.
-
- user
- Сообщения: 80
- Зарегистрирован: 22 мар 2014, 23:22
- Версия LabVIEW: 2015
- Благодарил (а): 10 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Определение центра объекта
Всем спасибо за ответы...С бинарной картинкой разобрались, а вот если у нас будет изображение разноцветное(ну например Российский триколор)???В конечном итоге хочется сделать программу слежения за объектом(естественно видеослежение), поэтому и решил начать с малого.
-
- VIP
- Сообщения: 1327
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Определение центра объекта
Возьмите для начала просто яркостную компоненту.
Для программы слежения одним центром масс не обойдётесь, ну разве что у вас синтетический учебный пример, где объект по белому листу бумаги перемещается.
Для программы слежения одним центром масс не обойдётесь, ну разве что у вас синтетический учебный пример, где объект по белому листу бумаги перемещается.
-
- user
- Сообщения: 80
- Зарегистрирован: 22 мар 2014, 23:22
- Версия LabVIEW: 2015
- Благодарил (а): 10 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Определение центра объекта
Ребята, может кто подскажет как возможно повернуть изображение(функция , либо алгоритм).Нужно, чтобы во вложенном примере было повернуто изображение"Finish".
- Вложения
-
- PointsContour(Mass Centr).rar
- (59.13 КБ) 269 скачиваний
-
- VIP
- Сообщения: 1327
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Определение центра объекта
IMAQ Rotate?AN-G писал(а):Ребята, может кто подскажет как возможно повернуть изображение(функция , либо алгоритм).Нужно, чтобы во вложенном примере было повернуто изображение"Finish".
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Определение центра объекта
А если нужно заполнить картинку прямоугольным изображением, то можно использовать IMAQ Extract Tetragon. Бывает удобно, когда исходное изображение наклонено, и требуется получить восстановленный фрагмент.