Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм распознания прямого участка замкнутой кри, распознать прямые участки на кривой 
:(
    Опции темы
Excalibur921
Дата 12.10.2013, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.10.2013

Репутация: нет
Всего: нет



подскажите плз алгоритм или в каком направлении искать
вот такая задача:

источник данных 
есть механизм 4-x звенник на плоскости
(см рисунок ScreenShot00082.gif)  
user posted image


точка  описывает всегда замкнутую кривую
меняяя кординаты точек меняются кривые описываемые точкой 
( можно менять количество шагов которые рисуют графики и саму траэкторию  т.е  может быть более угловатая см  (РИСУНОК ScreenShot00084.gif      ScreenShot00085.gif   ) 
user posted image

user posted image



если это нужно, можно уменьшить шаг если гдето надо или увеличить если поможет анализу)

задача: 
написать алгоритм или найти метод какойто  чтобы найти на этой траэктории близкий к прямой участок (РИСУНОК где ровная и  кривая траэтория   участки AB   на  фотоках ScreenShot00086.gif     ScreenShot00087.gif      ScreenShot00088.gif ) 
user posted image


user posted image


user posted image

и указать как далек он от идеальной прямой ( ввести наверно переменную от 0 - до 100? или другой вариант? от 0 до 10?)


и как близка  ( ввести пеерменную от 0 до 100? т.е   к примеру 5  очень далека, 47 почти прямая , 97 почти идеальная прямая  )к постоянной скорости скорость точки  E  на этом  близким к ровному участке

Итого  задачи :  -найти участок с близкой к равномерной скоростью      
                            и как далека эта скорость от равномерной
                     
                        -найти участок траэктории близкий к прямой     
                            и  как далек этот участок от прямой 

даже незнаю как подступится траэкторий возможно сотни тысяч или больше
нужен простой и быстрый алгоритм
подкажите в каком направлении искать
PM MAIL   Вверх
Pavia
Дата 12.10.2013, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Пусть кривая задана точками. точки добавляем в массив.  Проводим от первой до последней точки прямую смотрим отклонение промежуточных точек от прямой если хотя бы одна точка превышает порог то прямой участок будет состоять из N-1 точку массива.  
Понятно что порог соответствует масштабу.
Оценку качества можно сделать по СКВ.
PM MAIL   Вверх
Excalibur921
Дата 12.10.2013, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.10.2013

Репутация: нет
Всего: нет



Цитата(Pavia @ 12.10.2013,  12:02)
Пусть кривая задана точками. точки добавляем в массив.  Проводим от первой до последней точки прямую смотрим отклонение промежуточных точек от прямой если хотя бы одна точка превышает порог то прямой участок будет состоять из N-1 точку массива.  
Понятно что порог соответствует масштабу.
Оценку качества можно сделать по СКВ.

Цитата

Проводим от первой до последней точки прямую 

но здесь первая и  онаже  последняя..


Цитата

если хотя бы одна точка превышает порог

сам алгоритм должен указывать как далеко искомое отличается


Цитата

Понятно что порог соответствует масштабу.

както нужно не зависить от масштаба

Цитата

Оценку качества можно сделать по СКВ.


эм... что такое СКВ?  узкоспециализированное сокращение какогото метода?
напишите плз полностью...

PM MAIL   Вверх
_Y_
Дата 12.10.2013, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Я бы попытался использовать обычный метод наименьших квадратов. Скажем, примерно так:
  • Выбрал бы условие соответствия точек прямой: гриничное значение коэффициента линейности или максимальное отклонение любой точки от прямой - по вкусу.
  • Прошел бы по всему кругу проверяя каждые три точки на соответствии условию. Таким образом у меня оказалось бы множество триад - кандидатов на участие в искомой прямой.
  • Каждую триаду по отдельности растил бы в стороны до несоответствия условию.
  • Из полученых прямых выбрал бы самую длинную.
Такой метод не даст стопроцентной гарантии нахождения наилучшего решения, так как растить прямые приходится в две стороны, а не в одну. Но, думаю, на практике получение неоптимального решения очень маловероятно.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Pavia
Дата 12.10.2013, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Цитата(Excalibur921 @  12.10.2013,  17:15 Найти цитируемый пост)
но здесь первая и  онаже  последняя..

Имелось в виду на текущем шаге алгоритма. 
Цитата(Excalibur921 @  12.10.2013,  17:15 Найти цитируемый пост)
както нужно не зависить от масштаба

Не получится.  Это физика, а она зависит от масштаба. 
СКВ- опечатался имел в веду средне квадратичное значение
PM MAIL   Вверх
Excalibur921
Дата 12.10.2013, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.10.2013

Репутация: нет
Всего: нет



Цитата(_Y_ @ 12.10.2013,  17:43)
Я бы попытался использовать обычный метод наименьших квадратов. Скажем, примерно так:

  • Выбрал бы условие соответствия точек прямой: гриничное значение коэффициента линейности или максимальное отклонение любой точки от прямой - по вкусу.
  • Прошел бы по всему кругу проверяя каждые три точки на соответствии условию. Таким образом у меня оказалось бы множество триад - кандидатов на участие в искомой прямой.
  • Каждую триаду по отдельности растил бы в стороны до несоответствия условию.
  • Из полученых прямых выбрал бы самую длинную.
Такой метод не даст стопроцентной гарантии нахождения наилучшего решения, так как растить прямые приходится в две стороны, а не в одну. Но, думаю, на практике получение неоптимального решения очень маловероятно.

насколько я понял  smile 
очень тежелый метод.. много вычеслений
а проще?
траэкторий возможно сотни тысяч или больше!
может есть какаято простая формула построить какойто график на основании координат точек 
какойто график чтобы был ровный если скорость  постоянная и начинал исвревлятся если она не постоянна?

а по  поиску прямого участка траектории вродебы есть такая штука 
она так и называется  Кривизна  smile 
http://ru.wikipedia.org/wiki/Кривизна
но сильно заумно написано не практично((
PM MAIL   Вверх
Pavia
Дата 12.10.2013, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Цитата(Excalibur921 @  12.10.2013,  18:11 Найти цитируемый пост)
насколько я понял   очень тежелый метод.. много вычесленийа проще?

Так у него тоже самое только в 2 стороны я предложил в одну. Сложность алгоритма линейна. Вычислений тут минимум расстояния от точки до прямой. 
Цитата(Excalibur921 @  12.10.2013,  18:11 Найти цитируемый пост)
траэкторий возможно сотни тысяч или больше!

Менее чем за секунду компьютер справиться.

Цитата(Excalibur921 @  12.10.2013,  18:11 Найти цитируемый пост)
а по  поиску прямого участка траектории вродебы есть такая штука она так и называется  Кривизна   http://ru.wikipedia.org/wiki/Кривизнано сильно заумно написано не практично((

Это вы просто математике боитесь. А это всего лишь язык. Не чуть не сложнее любого другого языка. 
А между прочим формула там простая. 
Производную можно взять численно. К примеру 
f_1(t)=f(t+eps)-f(t).
А вторая производная есть производная от первой. 
f_2(t)=f_1(t+eps)-f_1(t).

Цитата

может есть какаято простая формула построить какойто график на основании координат точек 
 
С графиком будет труднее. Можно график 2 производной построить. 

PM MAIL   Вверх
Excalibur921
Дата 12.10.2013, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.10.2013

Репутация: нет
Всего: нет



Цитата(Pavia @  12.10.2013,  18:59 Найти цитируемый пост)
Это вы просто математике боитесь.

не боюсь .. я ее незнаю вообще)))


офтоп : 
а очень хотелось бы.. но потребуются годы на изучение
а литература написана математиками для математиков... качал книги по мат анализу... диф геометрию))
искал в гугле один сленг  математиков понять чтото... мрак....
боюсь моя математика заканичвается 3 классом школы)) но в программе  требывалась
применять тригометрические сложные формулы..
я скачал 5 книг по механике... читал в инете... кучи книг...
нашол расчеты формулы..поставил  формулы по Артоболевскому .. по Левитскому .. современные авторы...
и у всех разные формулы!! это ужас...
5 разных методик ничего не работало... видимо они их упращали очевидными только для математиков методами...  и они не работали(((

отказался от них.. сел подумал 2 дня)))
взял элементарные тригометрические формулы с выкипедии....
немгого своих идей и..
программа стала считать точно и быстро  smile  ( сравнивал с проф программой траэктории)

думал может тут кто подскажет чтото простое...
задал эту тему на 5 форумах... 
предлагают какойто 
Метод Наименьших Квадратов (МНК)
гуглил..читал... скачал книгу.. ну ненмогу нислова понять((( опять литература написана математиками для математиков  smile 


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

кстати если вы дочитали этот крик души до этого места...  smile 
то есть вообще какойто метод полиномов Чебышева.. он бы позволл вообще расчтать что я хочу сразу
без милиона  левых вычеселний, оптимизаций, и т.д....

но понять его.... сверх меня!! даже прям в книге (!!!) написано было что изза мат аппарата  простые люди немогут использовать выдающиеся крутые матиматические хитрости...настолько крутые что именами создателей этих  штук называли институты... 

нужно взять дурака и гения и пусть они напишут учебник по мат анализу)))) мат анализ на яблоках...  там былобы 10 000 страниц... но открыв любую главу прочитав можно былобы применить на практике
надеюсь модератор не сотрет это быстро))
аминь  smile 




PM MAIL   Вверх
Pavia
Дата 12.10.2013, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Excalibur921
Чтобы говорить на языке надо знать его грамматику и лексику. Чтобы понимать надо знать не мало слов порядка 3000 для сносного общения. А для хорошего 6000, а на отлично 9000 слов.
Также и с математикой чем больше знаешь тем лучше понимаешь.
И не только с математикой, но и с физикой. 

Самый простой способ это нанять специалиста в физике и математике.  Кстати вся теоретическая физика основана на математике. 

А теперь к задаче. Постановка задачи у вас странная. Для чего вам знать прямые участки?
Скорее всего ваша задача решается гораздо проще. 

Более того определения метрики для анализа качества кривой должны были вы сами определить из сходя из требований. Мы вам можем посоветовать но не более того.


Цитата

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

Это видимо вы не те учебнике скачали. 

Метод наименьших квадратов очень прост.  Но проблема в том что видимо ваши знания и правда остались на уровне 3 класса. А рассказывать всё на таком уровне будет очень долго поэтому так никто не делает.  


PM MAIL   Вверх
Excalibur921
Дата 12.10.2013, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.10.2013

Репутация: нет
Всего: нет



Цитата(Pavia @  12.10.2013,  21:47 Найти цитируемый пост)
Самый простой способ это нанять специалиста в физике и математике.

 думал им стать  за 1 вечер)))


Цитата(Pavia @  12.10.2013,  21:47 Найти цитируемый пост)
Скорее всего ваша задача решается гораздо проще. 


именно))
уже вчера накатал алгоритм решения) прост как двери натурально искуственный интелект в какойто мере))
и без нейросетей кохо.. какогото там) и без преобразование Хафа и без дифференциальной геометрии и т.п ненужных тут вещей)

вот жду вдруг появятся интересные решения  или нет на 5  то форумах  smile 


Цитата(Pavia @  12.10.2013,  21:47 Найти цитируемый пост)
Для чего вам знать прямые участки?

чтобы в них искать равномерную скорость  smile 
алгоритм должен будет менять кординаты точек механизма и самооптимизироватся для моих сверхсекретных нужд))) чтото типа генетического алгоритма с пред анализом во как.. незнаю изобрели ли его уже))
+ анализ много разных вариантов ( сбор статистики) и анализ по этим данным лудшего варианта для начала оптимизации.. хотя этим занимаются целые НИИ   smile  



Цитата(Pavia @  12.10.2013,  21:47 Найти цитируемый пост)
Это видимо вы не те учебнике скачали. 

те... 3 тома мат анализа... и другая макулатура))

заучив однотипные подходы к проблемам люди перестали думать творчески =)

PM MAIL   Вверх
_Y_
Дата 13.10.2013, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Excalibur921, сочувствую, без математики трудно. Но, действительно, не стОит пытаться все освоить "за одну ночь". Да и способности у разных людей к разным предметам ну о-чень разные. Я, вот, блещу абсолютной тупизной в отношении иностранных языков. При том, что без них мне ну просто никуда.

Ладно, ближе к делу. Без математики все равно не обойтись как ни крути. Но предложу способ, принцип которого будет, видимо, понятен и со знаниями третьеклассника smile 

Берем график и вращаем его вокруг любой точки, можно даже и не лежащей на самом графике. Выбираем участки, на которых точки отклоняются от среднего значения не более, чем на определенную величину. Наглядно это будет выглядеть примерно так
user posted image
Красные линии на обоих графиках задают один и тот же интервал значений. Видно, что на втором рисунке число точек попавших в интервал и, соответвтвенно, признанных "линейным участком" больше, хотя сам график просто повернут не некоторый угол.

Думаю,  такое верчение нагрузит компьютер больше, чем подходы высказанные в предидущих постах. Зато серьезно съэкономите на изучении математики smile 

Это сообщение отредактировал(а) _Y_ - 13.10.2013, 03:29


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Excalibur921
Дата 13.10.2013, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.10.2013

Репутация: нет
Всего: нет



Цитата(_Y_ @  13.10.2013,  03:25 Найти цитируемый пост)
Берем график и вращаем его вокруг любой точки, можно даже и не лежащей на самом графике.

 
вот первая оригинальная идея)))
спс)
еще бы убрать синусы  и косинусы через которые придется крутить..
сопросцессор незнаю как использовать все книги написаны под Intel у меня AMD  smile 
говорили чтото типа какието ряды тейлора вобщем синусы и косинусы замедляют работу сильно..

раьше думал вообще забахать все чисто в железе на ПЛИС и логике...
он бы у меня за 1 такт все считал конвеером...
но это уж сильно круто хотя несколько млн вычеслений в сек другоге дело) другая планета..
заюзать бы GPU... но GeForce 4  smile 
CUDA  или TESLA нам только снится...



_Y_,  а почему бы не перенести работу с траэкторией на работу с графиком?
может есть какойто "график кривизна прямой на плоскости" к вопросу траектории

и  может есть какойто "график  приближенности к горизонтали"  к вопросу скорости на траектории


ведь это два условия должны выполнятся вместе это можно както использовать?

P.S  кста спасибо за рисунок
никто не зает что лудше 1 раз увидеть...

офтоп : ато крутые програмисты шарят как написать алгоритм и код для фотошопа но неумеют им пользоватся ?))

PM MAIL   Вверх
Pavia
Дата 13.10.2013, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Цитата(Excalibur921 @  13.10.2013,  09:48 Найти цитируемый пост)
заюзать бы GPU... но GeForce 4   CUDA  или TESLA нам только снится...

GP GPU появилась ещё во времена GeForce 4. 

Цитата(Excalibur921 @  13.10.2013,  09:48 Найти цитируемый пост)
 а почему бы не перенести работу с траэкторией на работу с графиком?

А смысл, ты хочешь ещё более усложнить расчёты? А во вторых есть правила разделять модель и визуализацию. Делается это как раз для удобство кодирования. 

Цитата(Excalibur921 @  13.10.2013,  09:48 Найти цитируемый пост)
офтоп : ато крутые програмисты шарят как написать алгоритм и код для фотошопа но неумеют им пользоватся ?))

Конечно не умеют. Это разные области.  Мы знаем элементарные методы. Понимаем как они работают, но не знаем как их комбинировать. А вот удачные комбинации обычно и написаны в статьях по рисованию в Photoshop.

Добавлено @ 10:11
Цитата(Excalibur921 @  13.10.2013,  09:48 Найти цитируемый пост)
еще бы убрать синусы  и косинусы через которые придется крутить..сопросцессор незнаю как использовать все книги написаны под Intel у меня AMD   говорили чтото типа какието ряды тейлора вобщем синусы и косинусы замедляют работу сильно..

Да есть такое. Cos и sin работают медленее умножения и сложения в 10 раз. Поэтому используют следующий подход один раз вычисляют, а далее используют сложения углов.
Но это оптимизация. А преждевременная оптимизация вредит разработке. 

Это сообщение отредактировал(а) Pavia - 13.10.2013, 10:12
PM MAIL   Вверх
_Y_
Дата 13.10.2013, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Excalibur921 @  13.10.2013,  09:48 Найти цитируемый пост)
вот первая оригинальная идея)))

Не думаю, что такая уж оригинальная. Наглядная визуализация, да и все. Если с фанатом-математиком общаться будете, то он скажет, что в этом методе тоже среднего мало - нужен метод наименьших квадратов. Но, как известно, от многой мудрости много печали smile 

Я не знаю на каком языке вы будете это реализовывать. В некоторых есть готовые библиотеки преобразования координат. Они, зачастую, уже оптимизированы и работают быстрее синусов-косинусов обсчитываемых "в лоб". Но, по любому, если интересует скорость вычислений, такое "вращение" вряд-ли будет оптимальным.

Кстати, для метода наименьших квадратов многие языки тоже имеют оптимизированные библиотеки.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Excalibur921
Дата 13.10.2013, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.10.2013

Репутация: нет
Всего: нет



офтоп:
Цитата(Pavia @  13.10.2013,  10:07 Найти цитируемый пост)
Да есть такое. Cos и sin работают медленее умножения и сложения в 10 раз. Поэтому используют следующий подход один раз вычисляют, а далее используют сложения углов.


думаю вы толькочто ускорили мою программу в 10 раз  smile 
у меня  90 раз  cos        90 раз sin... и это только начало..

Добавлено через 11 минут и 7 секунд
Цитата(_Y_ @  13.10.2013,  12:35 Найти цитируемый пост)
Я не знаю на каком языке вы будете это реализовывать.

 на данный момент мучаю Visual Studio C++  2005       +       OpenGL +GLUT

и если будет результат у меня..какой мне понравится наверно еще круче на Ассемблер перейду без опенгл.. наверно его там нет..

а позже может и на кодирование в железе   http://ru.wikipedia.org/wiki/ПЛИС  т.е ниже Ассемблера... это почти самый низкий уровень пограммирования если это еще оно... ниже только  создание своих микросхем..своей логики))  это дорого очень...


Цитата(_Y_ @  13.10.2013,  12:35 Найти цитируемый пост)
что в этом методе тоже среднего мало - нужен метод наименьших квадратов


вы уже не первый человек кто намекает на них)) 
не здесь не сегодня... 
хочу но немогу((

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1929 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.