Отображение одного набора точек в другой
От: tinytjan  
Дата: 01.03.05 15:03
Оценка:
Народ! Помогите!!!
Задача такая:
Дан набор точек(координаты х и у).Этот набор является эталонным. Назовем его (Е)
Есть еще один набор точек(координаты х и у, назовем его (Х)), повернутый, смещенный и смасштабированный (Е). Причем незначительная часть точек и набора (Е) может отсутствовать и могут присутствовать 'левые' точки, которых не было в исходном наборе.
Необходимо найти такое преобразование(Е) (смещение, масштабирование и поворот) при котором точки (Е) будут преобразовываться в точки (Х) оптимальным образом.
набор (Е)

набор(Х)
Re: Отображение одного набора точек в другой
От: Gaperton http://gaperton.livejournal.com
Дата: 01.03.05 15:09
Оценка: 1 (1) +1 :)
Здравствуйте, tinytjan, Вы писали:

T>Народ! Помогите!!!

T>Задача такая:
T>Дан набор точек(координаты х и у).Этот набор является эталонным. Назовем его (Е)
T>Есть еще один набор точек(координаты х и у, назовем его (Х)), повернутый, смещенный и смасштабированный (Е). Причем незначительная часть точек и набора (Е) может отсутствовать и могут присутствовать 'левые' точки, которых не было в исходном наборе.
T>Необходимо найти такое преобразование(Е) (смещение, масштабирование и поворот) при котором точки (Е) будут преобразовываться в точки (Х) оптимальным образом.
T>набор (Е)
T>
T>набор(Х)
T>

Гы! Уж не номерок-ли автомобильный ты выравнивать собрался? Что-то не пойму, ты же только что писал, что с этим твоя нейросеть справляется на раз-два . А тут вдруг — "помогите"?
Re[2]: Отображение одного набора точек в другой
От: tinytjan  
Дата: 01.03.05 15:37
Оценка:
Здравствуйте, Gaperton,
Издеваться всякий может.Не до приколов мне сейчас . Мне помощь нужна ,и срочно. Если интересно, то не номера автомобильные мне ворочать не надо. А надо найти контур компонента для печатных плат и положение его ножек на зашумленной картинке.Это надо для того, чтобы скорректировать головку, которая компонент на плату ставит.
А набор (Е) это набор центров пятен, которые 'типа' являются ножками компонента.(т.е. 'типа' ножка на самом деле может быть шумом).
Нейронка здесь не поможет -- просто всунуть некуда.
Re: Отображение одного набора точек в другой
От: minorlogic Украина  
Дата: 01.03.05 15:44
Оценка:
Лучшим методом на сег. день является RANSAC. или очень хорошая реализация метода ветвей и границ.


RANSAC делать быстрее , а МВГ дает лучшею robustness.

А чем именно не подходит SIFT и RANSAC которы еможно чуть подизменить ? Демка для WIN находится тут
http://www.autostitch.net/
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Отображение одного набора точек в другой
От: Gaperton http://gaperton.livejournal.com
Дата: 01.03.05 15:45
Оценка:
Здравствуйте, tinytjan, Вы писали:

T>Здравствуйте, Gaperton,

T>Издеваться всякий может.Не до приколов мне сейчас . Мне помощь нужна ,и срочно.
Раз не до приколов, то сформулируй наконец математически, что означает "оптимальным образом".
Re[4]: Отображение одного набора точек в другой
От: tinytjan  
Дата: 01.03.05 16:03
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Здравствуйте, tinytjan, Вы писали:

G>Раз не до приколов, то сформулируй наконец математически, что означает "оптимальным образом".
На словах оптимальным образом --> набор точек (Е) должен отображаться в (Х) так, чтобы расстояние от полученной до реальной точки набора (Х) было минимальным (для всех — сумма расстояний).
Пробовал построить решетку (прикол в том что реальные точки лежат на параллельных прямых) методом МНК — нормальных результатов не получилось.
Re[2]: Отображение одного набора точек в другой
От: tinytjan  
Дата: 01.03.05 16:28
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Лучшим методом на сег. день является RANSAC. или очень хорошая реализация метода ветвей и границ.



M>RANSAC делать быстрее , а МВГ дает лучшею robustness.


M>А чем именно не подходит SIFT и RANSAC которы еможно чуть подизменить ? Демка для WIN находится тут

M>http://www.autostitch.net/
Я не знаю подходит или нет. Если можешь, поподробнее пожалуйста.
Заранее спасибо.
Re[5]: Отображение одного набора точек в другой
От: Gaperton http://gaperton.livejournal.com
Дата: 01.03.05 17:07
Оценка:
Здравствуйте, tinytjan, Вы писали:

T>Здравствуйте, Gaperton, Вы писали:


G>>Здравствуйте, tinytjan, Вы писали:

G>>Раз не до приколов, то сформулируй наконец математически, что означает "оптимальным образом".
T>На словах оптимальным образом --> набор точек (Е) должен отображаться в (Х) так, чтобы расстояние от полученной до реальной точки набора (Х) было минимальным (для всех — сумма расстояний).
А может, так? "Количество полностью совпавших точек образца с паттерном должно быть максимальным".

T>Пробовал построить решетку (прикол в том что реальные точки лежат на параллельных прямых) методом МНК — нормальных результатов не получилось.

Тот критерий, что ты задал — и есть требование наименьшего отклонения. Точки паттерна по такому критерию могут (и будут) лежать между точек образца. Ты уверен, что это то, что тебе надо?
Re[5]: Отображение одного набора точек в другой
От: SunSonnet  
Дата: 01.03.05 17:08
Оценка:
Здравствуйте, tinytjan, Вы писали:

T>Здравствуйте, Gaperton, Вы писали:


G>>Здравствуйте, tinytjan, Вы писали:

G>>Раз не до приколов, то сформулируй наконец математически, что означает "оптимальным образом".
T>На словах оптимальным образом --> набор точек (Е) должен отображаться в (Х) так, чтобы расстояние от полученной до реальной точки набора (Х) было минимальным (для всех — сумма расстояний).
T>Пробовал построить решетку (прикол в том что реальные точки лежат на параллельных прямых) методом МНК — нормальных результатов не получилось.

Оптимальным образом, значит что E как бы должен накладываться на X причем "левые" точки должны не учитываться. Задача достаточно интеллектуальная.
... << RSDN@Home 1.1.3 stable >>
Re[6]: Отображение одного набора точек в другой
От: tinytjan  
Дата: 01.03.05 17:11
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>А может, так? "Количество полностью совпавших точек образца с паттерном должно быть максимальным".

Похоже, то что нужно

T>>Пробовал построить решетку (прикол в том что реальные точки лежат на параллельных прямых) методом МНК — нормальных результатов не получилось.

G>Тот критерий, что ты задал — и есть требование наименьшего отклонения. Точки паттерна по такому критерию могут (и будут) лежать между точек образца. Ты уверен, что это то, что тебе надо?
Я уже уверен, что мне это не надо. Результаты никакие
Re[5]: Отображение одного набора точек в другой
От: Gaperton http://gaperton.livejournal.com
Дата: 01.03.05 17:11
Оценка:
Здравствуйте, tinytjan, Вы писали:

T>Пробовал построить решетку (прикол в том что реальные точки лежат на параллельных прямых) методом МНК — нормальных результатов не получилось.

Далее — всегда-ли точки лежат в узлах квадратной сетки с равномерным известным шагом?
Re[5]: Отображение одного набора точек в другой
От: Trean Беларусь http://axamit.com/
Дата: 01.03.05 17:19
Оценка:
Здравствуйте, tinytjan, Вы писали:

T>Здравствуйте, Gaperton, Вы писали:


G>>Здравствуйте, tinytjan, Вы писали:

G>>Раз не до приколов, то сформулируй наконец математически, что означает "оптимальным образом".
T>На словах оптимальным образом --> набор точек (Е) должен отображаться в (Х) так, чтобы расстояние от полученной до реальной точки набора (Х) было минимальным (для всех — сумма расстояний).
T>Пробовал построить решетку (прикол в том что реальные точки лежат на параллельных прямых) методом МНК — нормальных результатов не получилось.


Обычный МНК не пойдет, нужно outliers отбрасывать обязательно. Есть вроде метод взвешенных наименьших квадратов. А вообще если все "правильные" точки должны лежать на прямых, то может преобразование Хафа сюда прикрутить, а потом прямые между собой сопоставлять? Вроде как гораздо устойчивее к шуму получается (т.к. преобразование куммулятивное).
Re[3]: Отображение одного набора точек в другой
От: minorlogic Украина  
Дата: 01.03.05 18:45
Оценка:
Здравствуйте, tinytjan, Вы писали:

T>Здравствуйте, minorlogic, Вы писали:


M>>Лучшим методом на сег. день является RANSAC. или очень хорошая реализация метода ветвей и границ.



M>>RANSAC делать быстрее , а МВГ дает лучшею robustness.


M>>А чем именно не подходит SIFT и RANSAC которы еможно чуть подизменить ? Демка для WIN находится тут

M>>http://www.autostitch.net/
T>Я не знаю подходит или нет. Если можешь, поподробнее пожалуйста.
T>Заранее спасибо.

А может скачать демку ? Куда еще более подробно чем работающая демка и описания алгоритмов ? ткнуть в исходники ?
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[6]: Отображение одного набора точек в другой
От: tinytjan  
Дата: 02.03.05 07:24
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Далее — всегда-ли точки лежат в узлах квадратной сетки с равномерным известным шагом?


Нет не всегда. Какая то погрешность по любому присутствует.Точки находятся как центр масс фигуры и могут быть найдены неточно. Разбежка будет несколько пикселов. Левые точки могут располагаться произвольно.
Re[7]: Отображение одного набора точек в другой
От: Gaperton http://gaperton.livejournal.com
Дата: 02.03.05 13:02
Оценка:
Здравствуйте, tinytjan, Вы писали:

T>Здравствуйте, Gaperton, Вы писали:


G>>Далее — всегда-ли точки лежат в узлах квадратной сетки с равномерным известным шагом?


T>Нет не всегда. Какая то погрешность по любому присутствует.Точки находятся как центр масс фигуры и могут быть найдены неточно. Разбежка будет несколько пикселов. Левые точки могут располагаться произвольно.


Ну, если так, то нечто близкое к решению мы получим так:
1) Найди центр масс наблюдаемой системы точек, и совмести его с центром масс образца.
2) Посчитай дисперсию наблюдаемой системы точек, и смасштабируй (увеличение/уменьшение) ее так, чтобы дисперсия совпала с дисперсией образца.
3) Теперь определяем оптимальный поворот. Тебе нужет угол поворота такой, при котором метрика между образцом и системой точек минимальна. Метрику можно вводить по разному, можно попробовать так:
Сумма по всем точкам образца расстояний от точки образца до ближайшей точки системы.
Re[8]: Отображение одного набора точек в другой
От: tinytjan  
Дата: 02.03.05 13:19
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Здравствуйте, tinytjan, Вы писали:


T>>Здравствуйте, Gaperton, Вы писали:


G>>>Далее — всегда-ли точки лежат в узлах квадратной сетки с равномерным известным шагом?


T>>Нет не всегда. Какая то погрешность по любому присутствует.Точки находятся как центр масс фигуры и могут быть найдены неточно. Разбежка будет несколько пикселов. Левые точки могут располагаться произвольно.


G>Ну, если так, то нечто близкое к решению мы получим так:

G>1) Найди центр масс наблюдаемой системы точек, и совмести его с центром масс образца.
G>2) Посчитай дисперсию наблюдаемой системы точек, и смасштабируй (увеличение/уменьшение) ее так, чтобы дисперсия совпала с дисперсией образца.
Я думаю 'левые' точки будут влиять на центр масс и на дисперсию. То есть мы получим не реальный масштаб и центр масс а с погрешностью. Если центр может искаться и нормально, то масштаб скорее всего будет неточным.
G>3) Теперь определяем оптимальный поворот. Тебе нужет угол поворота такой, при котором метрика между образцом и системой точек минимальна. Метрику можно вводить по разному, можно попробовать так:
G>Сумма по всем точкам образца расстояний от точки образца до ближайшей точки системы.
Попробую, конечно. Но количество операций для количества точек в образце и зашумленном наборе ~N получится
примерно 90*N*N(если мы хотим найти угол с точностью до градуса, чем больше точность тем пропорционально больше вычислений).
Если можешь(и есть желание), предложи че-нить поэффективнее. А пока за это спасибо.
Re[9]: Отображение одного набора точек в другой
От: Gaperton http://gaperton.livejournal.com
Дата: 02.03.05 16:31
Оценка:
Здравствуйте, tinytjan, Вы писали:

T>Здравствуйте, Gaperton, Вы писали:


G>>Здравствуйте, tinytjan, Вы писали:


T>>>Здравствуйте, Gaperton, Вы писали:


G>>>>Далее — всегда-ли точки лежат в узлах квадратной сетки с равномерным известным шагом?


T>>>Нет не всегда. Какая то погрешность по любому присутствует.Точки находятся как центр масс фигуры и могут быть найдены неточно. Разбежка будет несколько пикселов. Левые точки могут располагаться произвольно.


G>>Ну, если так, то нечто близкое к решению мы получим так:

G>>1) Найди центр масс наблюдаемой системы точек, и совмести его с центром масс образца.
G>>2) Посчитай дисперсию наблюдаемой системы точек, и смасштабируй (увеличение/уменьшение) ее так, чтобы дисперсия совпала с дисперсией образца.
T>Я думаю 'левые' точки будут влиять на центр масс и на дисперсию. То есть мы получим не реальный масштаб и центр масс а с погрешностью. Если центр может искаться и нормально, то масштаб скорее всего будет неточным.

Хе-хе!

!!!!!!

А мы ее уберем до нуля. После совершения всех описанных мной преобразований ты легко выделишь "левые" точки как наиболее удаленные от точек образца, выкинешь их, и повторишь всю процедуру. После чего получишь 100% совпадение.

G>>3) Теперь определяем оптимальный поворот. Тебе нужет угол поворота такой, при котором метрика между образцом и системой точек минимальна. Метрику можно вводить по разному, можно попробовать так:

G>>Сумма по всем точкам образца расстояний от точки образца до ближайшей точки системы.
T>Попробую, конечно. Но количество операций для количества точек в образце и зашумленном наборе ~N получится
T>примерно 90*N*N(если мы хотим найти угол с точностью до градуса, чем больше точность тем пропорционально больше вычислений).
T>Если можешь(и есть желание), предложи че-нить поэффективнее. А пока за это спасибо.

Есть такой метод. Надо попытаться определить направляющие оси на тестовом наборе точек (пользуясь тем, что точки выравнены по сетке), после чего тебе понадобится всего 4 сравнения для определения угла.
Re[10]: Отображение одного набора точек в другой
От: tinytjan  
Дата: 03.03.05 08:06
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Хе-хе!


G>!!!!!!


G>А мы ее уберем до нуля. После совершения всех описанных мной преобразований ты легко выделишь "левые" точки как наиболее удаленные от точек образца, выкинешь их, и повторишь всю процедуру. После чего получишь 100% совпадение.

Чтобы все было так легко Левые точки необязательно будут самые удаленные.
Если бы от них можно было избавиться все было бы тип-топ.Построил внешний прямоугольник и твори че хошь.

G>>>3) Теперь определяем оптимальный поворот. Тебе нужет угол поворота такой, при котором метрика между образцом и системой точек минимальна. Метрику можно вводить по разному, можно попробовать так:

G>>>Сумма по всем точкам образца расстояний от точки образца до ближайшей точки системы.
T>>Попробую, конечно. Но количество операций для количества точек в образце и зашумленном наборе ~N получится
T>>примерно 90*N*N(если мы хотим найти угол с точностью до градуса, чем больше точность тем пропорционально больше вычислений).
T>>Если можешь(и есть желание), предложи че-нить поэффективнее. А пока за это спасибо.

G>Есть такой метод. Надо попытаться определить направляющие оси на тестовом наборе точек (пользуясь тем, что точки выравнены по сетке), после чего тебе понадобится всего 4 сравнения для определения угла.

Проблема остается. Мы можем взять левые точки.
Re[11]: Отображение одного набора точек в другой
От: Gaperton http://gaperton.livejournal.com
Дата: 03.03.05 09:46
Оценка: 2 (1)
Здравствуйте, tinytjan, Вы писали:

T>Здравствуйте, Gaperton, Вы писали:


G>>Хе-хе!


G>>!!!!!!


G>>А мы ее уберем до нуля. После совершения всех описанных мной преобразований ты легко выделишь "левые" точки как наиболее удаленные от точек образца, выкинешь их, и повторишь всю процедуру. После чего получишь 100% совпадение.

T>Чтобы все было так легко Левые точки необязательно будут самые удаленные.
Ты не понял. Все на самом деле так легко.
T>Если бы от них можно было избавиться все было бы тип-топ.Построил внешний прямоугольник и твори че хошь.
Какой внешний прямоугольник, боже упаси?! Метрику я ввел, помнишь? Чтобы ее посчитать, ты каждой точке образца ставишь в соответствие ближайшую к ней точку тестового набора, и считаешь сумму расстояний, так?

Так вот, "левыми" будут те точки тестового набора, которые не сопоставлены ни одной точке образца. Так как соответствие точек получается 1 в 1, то все наиболее удаленные точки уйдут. Понятно?

G>>Есть такой метод. Надо попытаться определить направляющие оси на тестовом наборе точек (пользуясь тем, что точки выравнены по сетке), после чего тебе понадобится всего 4 сравнения для определения угла.

T>Проблема остается. Мы можем взять левые точки.
Левые точки выравнены по сетке, или нет? И в конце концов, сколько процентов левых точек от общего числа?
Re[12]: Отображение одного набора точек в другой
От: tinytjan  
Дата: 03.03.05 10:26
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Ты не понял. Все на самом деле так легко.

T>>Если бы от них можно было избавиться все было бы тип-топ.Построил внешний прямоугольник и твори че хошь.
G>Какой внешний прямоугольник, боже упаси?! Метрику я ввел, помнишь? Чтобы ее посчитать, ты каждой точке образца ставишь в соответствие ближайшую к ней точку тестового набора, и считаешь сумму расстояний, так?

G>Так вот, "левыми" будут те точки тестового набора, которые не сопоставлены ни одной точке образца. Так как соответствие точек получается 1 в 1, то все наиболее удаленные точки уйдут. Понятно?


Да в приципе это вариант.
Некоторые Левые точки может и останутся, но в конце концов процедуру можно повторить еще раз или два.
Спасибо

G>>>Есть такой метод. Надо попытаться определить направляющие оси на тестовом наборе точек (пользуясь тем, что точки выравнены по сетке), после чего тебе понадобится всего 4 сравнения для определения угла.

T>>Проблема остается. Мы можем взять левые точки.
G>Левые точки выравнены по сетке, или нет? И в конце концов, сколько процентов левых точек от общего числа?
Левые точки расположены КАК УГОДНО и соответственно могут попасть в сетку.
А процент может варьироваться в зависимости от количества эталонных точек.
Если точек больше хотя бы 50 то процент можно брать не больше 10-15%
Если больше 200-300 , то 3-5%. И так далее.
Так что на нормальном количестве точек покатит думаю без проблем
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.