GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (2)След. > >>   Поиск:  
 Автор Тема: сравнение геометрических фигур.
daner
Сообщений: 4602
сравнение геометрических фигур.
Добавлено: 24 апр 11 16:24
Кто-нибудь знаком с каким-нибудь алгоритмом который можно применить для сравнения двух геометрических фигур. Фигуры заданы множествами точек.
Point := x and y
Countur := Set of Points
Object := Set of Points and Countur
На выходе надо получить 2 вещи:
1. расстояние (степень подобности) фигур
2. пары точек, которые можно считать одной и той же точкой

Грубый алгоритм у меня есть, но он очень медленный получается (т.е. если длинна первого контура N1, а второго N2 и размер S1 и S2 (соответственно), то мой алгоритм делает К*N1*N2*Log(S1)*Log(S2) действий (К здесь коэффициент отражающий размер окна при сравнении двух точек). Ну вероятно я могу увеличить скорость до N1*N2+К*N1*Log(S1)+К*N2*Log(S2) если кешировать кое какие данные ну или даже убрать Log'и заменив их на +S1+S2. Но этого все равно мало.

Я не спрашиваю про конкретный алгоритм, но может кто-то сталкивался с подобным и есть идеи в какую сторону капать.

P.S.
О фигурах известно, что они в общем похожи (ну типа резиновая трансформация) и ориентированны более или менее одинаково (в пределах 10 градусов)
[Ответ][Цитата]
victorst
Сообщений: 821
На: сравнение геометрических фигур.
Добавлено: 24 апр 11 17:05
Я некоторое время назад написал алгоритм многомерного синтаксического анализа для контекстно-зависимых и контекстно-свободных грамматик в виде плагина для моей программы AIAssistant.
Кое-что почерпнул из:
Fu K.S. Syntactic methods in pattern recognition (AP, 1974)(ISBN 0122695607
Fu K.S. Syntactic pattern recognition and applications (PH, 1982)(ISBN 0138801207)
Мой алгоритм основан на самообучении онтологического синтаксического анализатора. В основе лежит не метод переборов, а продукционные правила. Это позволяет срабатывать им при появлении в рабочей памяти нового факта, в данном случае факта нового паттерна. А т.к. сами синтаксические правила созданы в виде фактов, то эти самые новые правила можно получать из анализируемых данных.
К сожалению, я проверил и отладил эту технологию на небольших ЕЯ текстах и то без самообучения. А они одномерны. И лишь сейчас перехожу к многомерному анализу, в частности 2 и 3 мерным изображениям. Надеюсь, что что нибудь из описанного мною будет вам полезным.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: сравнение геометрических фигур.
Добавлено: 24 апр 11 17:17
Наверно быстрее и не получится. Либо от общего сравнения нужно переходить к распознаванию в небольшом классе фигур, а там возможно будет какое-то их представление сразу ложащееся на метрику.
Я делал грубое сравнение, находим центр массы и потом в полярных координатах по 8 секторам тоже просто массу точек. Повороты и отражения так тоже быстро сопоставляются. Перекодировать тоже занимает N^2, а само сравнение работает мгновенно. Я двигал мышь по экрану с буквами и они все сразу перекрашивась по уровню подобия букве на которую показываю.

тут что получалось
нужно щелкнуть по 00b.bmp и двигать по картинке внизу
[Ответ][Цитата]
victorst
Сообщений: 821
На: сравнение геометрических фигур.
Добавлено: 24 апр 11 17:35
Суть моего метода такова:
1. Если в памяти нет СП (синтаксических правил), то подавая на вход изображение первой фигуры можно добиться создания относительно простых СП основываясь лишь на поступившей информации. Если же какие-то СП уже имелись, то СА (синтаксический анализатор) может использовать эти СП для более глубокого анализа.
2. Подавая на вход СА изображение второй фигуры, программа может использовать имеющиеся в ней знания о первой фигуре в виде СП.
3. По полученному одному или нескольким деревьям анализа можно судить о степени схожести фигур. Если при этом добавить новую информацию в СП, полученные от второго изображения, то можно его сразу после этого использовать для сравнения с любым последующим изображением фигуры.
[Ответ][Цитата]
dr2chek
Сообщений: 871
На: сравнение геометрических фигур.
Добавлено: 24 апр 11 21:20
Цитата:
Автор: NO.
находим центр массы и потом в полярных координатах по 8 секторам тоже просто массу точек. Повороты и отражения так тоже быстро сопоставляются.


Забавно, я именно это хотел предложить... Только кривую из точек обрабатывать сплайн-функцией. А смещение от центра компенсируется довеском-циклоидой.
[Ответ][Цитата]
гость
188.123.241.*
На: сравнение геометрических фигур.
Добавлено: 24 апр 11 22:42
daner 24 апр 11 16:24
[...Кто-нибудь знаком с каким-нибудь алгоритмом который можно применить для сравнения двух геометрических фигур. Фигуры заданы множествами точек...]

У Вайнцвайга была очень красивая и эффективная процедура для такого, если фигуры выделены из фона. Если нет, то возникали разумные переборные потребности

[Ответ][Цитата]
NO.
Сообщений: 10700
На: сравнение геометрических фигур.
Добавлено: 24 апр 11 22:48
Вроде хорошо работает. Где-то тут была тема, там Андрей предложил преобразование Просолвера, а такое намного проще. Только там задача была ещё и находить эти фирурки на изображении, а не просто сравнивать. Я тут много лишнего наделал, слишком дискретно получилось, строгие контуры и заливка. Лишняя работа. Нужно как-то помягче всю картинку сводить к структуре особенностей. Но потом опять трудно искать кучу возможных фигур в такой же мешанине разных элементов и признаков.
[Ответ][Цитата]
daner
Сообщений: 4602
На: сравнение геометрических фигур.
Добавлено: 24 апр 11 23:02
Цитата:
Автор: гость

daner 24 апр 11 16:24
[...Кто-нибудь знаком с каким-нибудь алгоритмом который можно применить для сравнения двух геометрических фигур. Фигуры заданы множествами точек...]

У Вайнцвайга была очень красивая и эффективная процедура для такого, если фигуры выделены из фона. Если нет, то возникали разумные переборные потребности


О! Спасибо. Вот только как этот Вайнцвайг на английском пишется, а то ничего не могу найти в Интернете.
[Ответ][Цитата]
daner
Сообщений: 4602
На: сравнение геометрических фигур.
Добавлено: 24 апр 11 23:04
Цитата:
Автор: NO.
Вроде хорошо работает. Где-то тут была тема, там Андрей предложил преобразование Просолвера, а такое намного проще. Только там задача была ещё и находить эти фирурки на изображении, а не просто сравнивать. Я тут много лишнего наделал, слишком дискретно получилось, строгие контуры и заливка. Лишняя работа. Нужно как-то помягче всю картинку сводить к структуре особенностей. Но потом опять трудно искать кучу возможных фигур в такой же мешанине разных элементов и признаков.

Что именно работает?
[Ответ][Цитата]
гость
188.123.241.*
На: сравнение геометрических фигур.
Добавлено: 24 апр 11 23:47
daner 24 апр 11 23:02
[...О! Спасибо. Вот только как этот Вайнцвайг на английском пишется, а то ничего не могу найти в Интернете...]

А хрен его знает - он по-русски пишет. Думаю, что это было опубликовано в журнале Ю.Журавлева - PRIA. Лет десять назад плюс-минус сколько-то

[Ответ][Цитата]
NO.
Сообщений: 10700
На: сравнение геометрических фигур.
Добавлено: 25 апр 11 0:09
Цитата:
Автор: daner
Что именно работает?

сравнение геометрических фигур
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: сравнение геометрических фигур.
Добавлено: 25 апр 11 0:58
Цитата:
Автор: daner


О! Спасибо. Вот только как этот Вайнцвайг на английском пишется, а то ничего не могу найти в Интернете.

Это не на английском. смотрите М.Н.Вайнцвайг
например нашлось вот: http://www.keldysh.ru/pages/BioCyber/RT/Vaintsvaig.htm
[Ответ][Цитата]
daner
Сообщений: 4602
На: сравнение геометрических фигур.
Добавлено: 25 апр 11 1:31
Цитата:
Автор: NO.
сравнение геометрических фигур

По какому алгоритму работает? точки тоже определяете или только подобие?
[Ответ][Цитата]
NO.
Сообщений: 10700
На: сравнение геометрических фигур.
Добавлено: 25 апр 11 1:39
Только подобие. Алгоритм описал выше.
[Ответ][Цитата]
гость
188.123.241.*
На: сравнение геометрических фигур.
Добавлено: 25 апр 11 1:57
shuklin 25 апр 11 0:58
[...Это не на английском. смотрите М.Н.Вайнцвайг
например нашлось вот: http://www.keldysh.ru/pages/BioCyber/RT/Vaintsvaig.htm...]

Это - он, но про другое. Там - про пирамидальную архитектуру зрения.
[Ответ][Цитата]
 Стр.1 (2): [1]  2След. > >>