Определение центра объекта

Обсуждение вопросов, связанных с обработкой аудио и видео информации
AN-G
user
user
Сообщения: 80
Зарегистрирован: 22 мар 2014, 23:22
Версия LabVIEW: 2015
Благодарил (а): 10 раз
Поблагодарили: 1 раз
Контактная информация:

Определение центра объекта

Сообщение AN-G »

Всем доброго времени суток! Уважаемые форумчане сам я новичек в освоении LabView, поэтому вставшая передо мной задача загнала меня в тупик.Обратился к Вам по той причине , что еще не изучил LabView должным образом.Суть задачи: Берем изображение с произвольной геометрической фигурой (необязательно правильной формы)формата JPG и т.п.Нужно вычислить центр этой фигуры, соответственно установить на него маркер. Затем нужно повернуть данное изображение на произвольный угол и чтобы центр этой фигуры остался там же где и был обозначен вначале.Т.е как мне видится нужно вычислить центр масс данного геометрического тела.Может кто-то делал, что-то подобное или подскажет в каком направлении "копать". Сам вижу следующее решение данной задачи:1)нужно выделить контур объекта(есть такая функция и проблем не вызывает),2)Взять точки контура и применить к нему "Правило моментов"(а вот здесь у меня тупик с алгоритмом решения ),3) Установить маркер-это и будет центром масс.Может у кого-то будет другой алгоритм решения данной задачи?!Заранее благодарен за помощь.
Аватара пользователя
Jakob Brontfeyn

Activity Gold Silver Black
expert
expert
Сообщения: 1729
Зарегистрирован: 28 фев 2008, 11:01
Награды: 6
Благодарил (а): 1 раз
Контактная информация:

Re: Определение центра объекта

Сообщение Jakob Brontfeyn »

Primer
Вложения
kontur.vi
(447.24 КБ) 391 скачивание
AN-G
user
user
Сообщения: 80
Зарегистрирован: 22 мар 2014, 23:22
Версия LabVIEW: 2015
Благодарил (а): 10 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Определение центра объекта

Сообщение AN-G »

Спасибо за хороший образец...буду разбираться со своей задачей дальше применяя Ваш пример. У меня вся загвоздка в том , что фигурой может быть и треугольник и квадрат и тетрайдер. Видится мне, что нужно изображение пройти по строкам и столбцам для начала.Затем записать данные в массив и каким-то образом отделить область внутри контура фигуры, а затем применяя "правило моментов"(я так понимаю какая-то мат.функция должна присутствовать в наборе функций) определить цент масс.
AN-G
user
user
Сообщения: 80
Зарегистрирован: 22 мар 2014, 23:22
Версия LabVIEW: 2015
Благодарил (а): 10 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Определение центра объекта

Сообщение AN-G »

Сейчас стал разбираться более подробно с Вашим примером и оказалось, что для треугольника, квадрата и т.п центр определяется неправильно
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Определение центра объекта

Сообщение AndreyDmitriev »

AN-G писал(а):Сейчас стал разбираться более подробно с Вашим примером и оказалось, что для треугольника, квадрата и т.п центр определяется неправильно
На будущее - вы когда пишете что что-то "работает неправильно", то вообще говоря должны описать три части:
- что вы сделали
- какой результат получили
- какой результат ожидаете получить

В общем случае по двумерной картинке я б как-то так считал:
23-03-2014 11-09-00.png
23-03-2014 11-09-00.png (4.64 КБ) 13098 просмотров
Здесь будет учитываться не только контур, но и яркость объекта.
В частном случае бинарных объектов эта конструкция сводится к вышеприведённому примеру Якова Иосифовича со средними значениями.

Пример прилагаецца.
Вложения
Centroid.vi
(23.86 КБ) 345 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Определение центра объекта

Сообщение dadreamer »

AN-G писал(а):нужно вычислить центр масс данного геометрического тела.
В пакете NI Vision есть замечательный :vi: IMAQ Particle Analysis VI, выдающий разные геометрические параметры объектов в бинарном изображении. Так вот, там есть и центр масс, и разные моменты инерции, и ещё много чего другого. Можно также использовать более простой IMAQ Particle Analysis Report VI, на выходе тоже будет центр масс. Пример к этому :vi: лежит в LabVIEW\examples\Vision\2. Functions\Binary Analysis\Particle Analysis Report Example.vi (при установке пакета).
AN-G
user
user
Сообщения: 80
Зарегистрирован: 22 мар 2014, 23:22
Версия LabVIEW: 2015
Благодарил (а): 10 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Определение центра объекта

Сообщение AN-G »

Пока получилось только это и то с ошибкой (см.вложение) и я не пойму как найти описание по коду ошибки, если таковое есть вообще...dadreamer спасибо за совет эти функции я посмотрел, но они именно для бинарного кода...получается, что после определения центра масс объекта нужно кодировать изображение обратно и на указанной точке центра масс установить маркер(это был бы не плохой вариант кстати и более простой)???
AN-G
user
user
Сообщения: 80
Зарегистрирован: 22 мар 2014, 23:22
Версия LabVIEW: 2015
Благодарил (а): 10 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Определение центра объекта

Сообщение AN-G »

AndreyDmitriev благодарю за науку...впредь постараюсь исправиться :wink: . По сути у меня ничего не получилось, а хотелось бы получить программу вычисления центра объекта. Кстати во вложенном файле не выводится во всплывающих окнах маркер функции Centroid. Может кто=то объяснит, что я не так делаю.
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Определение центра объекта

Сообщение AndreyDmitriev »

AN-G писал(а):AndreyDmitriev благодарю за науку...впредь постараюсь исправиться :wink: . По сути у меня ничего не получилось, а хотелось бы получить программу вычисления центра объекта. Кстати во вложенном файле не выводится во всплывающих окнах маркер функции Centroid. Может кто=то объяснит, что я не так делаю.
Для того, чтобы что-то вывести во всплывающих окнал - используйте функции из палитры Overlay (IMAQ Overlay Point / Line и т.д.). Кроме того, у вас у обоих окон одинаковый номер 1 - если надо два окна, номера должны быть различные (можно до 15 окон открыть)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Определение центра объекта

Сообщение dadreamer »

AN-G писал(а):dadreamer спасибо за совет эти функции я посмотрел, но они именно для бинарного кода...получается, что после определения центра масс объекта нужно кодировать изображение обратно и на указанной точке центра масс установить маркер(это был бы не плохой вариант кстати и более простой)???
У вас картинки в архиве имеют яркость двух уровней: 0 и 255. Можно считать такую картинку бинарной, так как отрезок 0...1 растянут на 8-битную палитру 0...255. И инструменты IMAQ Particle Analysis VI и IMAQ Particle Analysis Report VI нормально работают с такими картинками, как впрочем и все остальные :vi: из пакета Vision (если картинка задана как Grayscale (U8)).

Если решать вашу задачу сходу, то можно сделать как-нибудь так:
Без имени-2.jpg
Без имени-2.jpg (66.12 КБ) 13016 просмотров
Без имени-3.jpg
Без имени-3.jpg (128.88 КБ) 13016 просмотров
Но я бы фильтранул изображение и/или выкинул мелкие точки, чтобы они не мешали при работе (IMAQ GrayMorphology и IMAQ RemoveParticle). А можно взять только объект с максимальной площадью и для него вывести маркёр в центре масс:
Без имени-4.jpg
Без имени-4.jpg (83.26 КБ) 13016 просмотров
Без имени-5.jpg
Без имени-5.jpg (111.12 КБ) 13016 просмотров
я не пойму как найти описание по коду ошибки, если таковое есть вообще
ПКМ на коде ошибки в кластере error in/out -> Explain Error. Конкретно у вас пишет:
Error -1074396154 occurred at IMAQ Inspection
Possible reason(s):
IMAQ Vision: The image is not large enough for the operation.
Неверно выполняете копирование картинки, надо создать ещё одну область в памяти с новым именем, и её использовать в качестве Dst в IMAQ Copy, а источником будет первая картинка, которая из файла грузится.
AN-G
user
user
Сообщения: 80
Зарегистрирован: 22 мар 2014, 23:22
Версия LabVIEW: 2015
Благодарил (а): 10 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Определение центра объекта

Сообщение AN-G »

Всем спасибо за ответы...С бинарной картинкой разобрались, а вот если у нас будет изображение разноцветное(ну например Российский триколор)???В конечном итоге хочется сделать программу слежения за объектом(естественно видеослежение), поэтому и решил начать с малого.
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Определение центра объекта

Сообщение AndreyDmitriev »

Возьмите для начала просто яркостную компоненту.
Для программы слежения одним центром масс не обойдётесь, ну разве что у вас синтетический учебный пример, где объект по белому листу бумаги перемещается.
AN-G
user
user
Сообщения: 80
Зарегистрирован: 22 мар 2014, 23:22
Версия LabVIEW: 2015
Благодарил (а): 10 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Определение центра объекта

Сообщение AN-G »

Ребята, может кто подскажет как возможно повернуть изображение(функция , либо алгоритм).Нужно, чтобы во вложенном примере было повернуто изображение"Finish".
Вложения
PointsContour(Mass Centr).rar
(59.13 КБ) 269 скачиваний
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Определение центра объекта

Сообщение AndreyDmitriev »

AN-G писал(а):Ребята, может кто подскажет как возможно повернуть изображение(функция , либо алгоритм).Нужно, чтобы во вложенном примере было повернуто изображение"Finish".
IMAQ Rotate?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Определение центра объекта

Сообщение dadreamer »

А если нужно заполнить картинку прямоугольным изображением, то можно использовать IMAQ Extract Tetragon. Бывает удобно, когда исходное изображение наклонено, и требуется получить восстановленный фрагмент.
Ответить

Вернуться в «Работа с графикой и звуком»