Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Аппроксимация

Тема в разделе "Общие вопросы", создана пользователем Nikonte, 2 янв 2013.

  1. stout

    Форумчанин

    Регистрация:
    5 янв 2008
    Сообщения:
    4.172
    Симпатии:
    11.936
    Адрес:
    Златоглавая и Белокаменная
    К сожалению это неправильный алгоритм. То есть он делает не совсем то, что очевидно ожидает большинство пользователей.
    Проще понять это на 2D модели
    Least-squares and total least-squares fits.png
    Алгоритм в статье делает как на левом рисунке, а ожидается результат, как на правом.
     
    #61
  2. MaxKal

    Форумчанин

    Регистрация:
    17 окт 2014
    Сообщения:
    172
    Симпатии:
    206
    Адрес:
    Краснодар
    Всё верно, зато этот алгоритм прост в реализации.
    Можно использовать Ransac, но что делать если исходных точек мало?
    статья с хорошим алгоритмом http://mathforum.org/library/drmath/view/63765.html
     
    #62
    Последнее редактирование: 13 мар 2019
  3. MaxKal

    Форумчанин

    Регистрация:
    17 окт 2014
    Сообщения:
    172
    Симпатии:
    206
    Адрес:
    Краснодар
    алгоритм в приведённой выше статье рабочий. Однако появился вопрос, а что делать с полученной информацией, какому примитиву соответствует плоскость? Для чего можно использовать параметры плоскости?
     
    #63
  4. stout

    Форумчанин

    Регистрация:
    5 янв 2008
    Сообщения:
    4.172
    Симпатии:
    11.936
    Адрес:
    Златоглавая и Белокаменная
    Что толку от простого в реализации алгоритма, если он не отвечает на поставленный вопрос?
    Но и его можно приспособить для нахождения "правильного" ответа. Идея очень проста.
    1. Находим в первом приближении параметры преобразования (смещение и углы разворота).
    2. Преобразуем исходное облако точек с помощью этих параметров так, что плоскость становится почти параллельно основанию.
    3. Опять находим новые параметры и суммируем их с исходно найденными.
    4. Идём на шаг 2 и так до сходимости.
    З.Ы. Поиск в гугле говорит, что реализация SVD на Lisp существует.
     
    #64
  5. MaxKal

    Форумчанин

    Регистрация:
    17 окт 2014
    Сообщения:
    172
    Симпатии:
    206
    Адрес:
    Краснодар
    svd на лисп? Это не верх извращения? Я надеюсь это шутка.
    --- Сообщения объединены, 13 мар 2019, Оригинальное время сообщения: 13 мар 2019 ---
    кстати в алгоритме во второй статье функция минимизируется по ортогональным расстояниям
     
    #65
  6. stout

    Форумчанин

    Регистрация:
    5 янв 2008
    Сообщения:
    4.172
    Симпатии:
    11.936
    Адрес:
    Златоглавая и Белокаменная
    Первое, что нашлось.
     
    #66
  7. MaxKal

    Форумчанин

    Регистрация:
    17 окт 2014
    Сообщения:
    172
    Симпатии:
    206
    Адрес:
    Краснодар
    как я понял в приведённом листинге реализации алгоритмов разложений нет, в коде есть ссылки на lapack. Читаемость кода в лиспе никакая, возможно ли вообще на лиспе написать серьёзную библиотеку по линейной алгебре? Нет. Это же реально шутка.
     
    #67
  8. MaxKal

    Форумчанин

    Регистрация:
    17 окт 2014
    Сообщения:
    172
    Симпатии:
    206
    Адрес:
    Краснодар
    На самом деле хочется обсудить алгоритм или стратегию аппроксимации цилиндра 3д точками. Занялся этой темой недавно, был объект с наклонными сваями, нужно было центра их искать. Поделитесь кто что знает по этой теме, из того расчёта что точек будет немного, не более 10 на цилиндр.
     
    #68
  9. ThomasHinkse

    Регистрация:
    27 мар 2018
    Сообщения:
    3
    Симпатии:
    0
    Спасибо за совет, увидел пост поздно, нашел реализацию через Geomagic Desing X, умеет очень много, особенно порадовала возможность установки пределов вылета точек, но продолжаю искать подобные программы ввиду того что Geomagic только с моделями у которых центр тяжести в 0;0;0 работает, приходится трансформировать из WGS-84 и обратно.


    Если всего 10 точек на весь цилиндр, то об облаке и аппроксимации говорить не приходится. Из практических решений могу предложить либо измерить диаметр и крен, либо снимать по ярусам примерно (тут наличие точек на разной высоте в пределах одного яруса влиять особо не будет), а потом вычислить центр тяжести каждого яруса и через него проводить ось цилиндра.[/QUOTE]
     
    #69
  10. разметкин

    Форумчанин

    Регистрация:
    31 май 2014
    Сообщения:
    1.509
    Симпатии:
    3.817
    Адрес:
    между Нилом и Ефратом
    Раскрепить вертикальный круг и снимать горизонтальные сечения.
     
    #70
  11. ThomasHinkse

    Регистрация:
    27 мар 2018
    Сообщения:
    3
    Симпатии:
    0
    Это актуально только для одной установки прибора, единственной фронтальной плоскости не всегда хватает что бы снять достаточное сечение для нахождения центра тяжести фигуры.
     
    #71
  12. разметкин

    Форумчанин

    Регистрация:
    31 май 2014
    Сообщения:
    1.509
    Симпатии:
    3.817
    Адрес:
    между Нилом и Ефратом
    На что может повлиять трансфер высот?
     
    #72
  13. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    5.915
    Симпатии:
    2.092
    Адрес:
    г. Москва
    Дошли наконец руки. Выкладываю простую итерационную (копи-пастную) схему без всяких там макросов и прочей ерунды.
     

    Вложения:

    #73
    ardi.stroi нравится это.
  14. Nikonte

    Форумчанин

    Регистрация:
    2 дек 2012
    Сообщения:
    478
    Симпатии:
    151
    я не понял. в начальных вычислениях используются координаты, которые получаются после второй итерации...
    Иными словами задача решается, но ответ уже известен?
     
    #74
  15. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    5.915
    Симпатии:
    2.092
    Адрес:
    г. Москва
    Нет. Нулевая итерация - это среднее исходных координат. А все остальные итерации - среднее "центров".
    Ежели итерации не устраивают и нужен МНК (OLS), то пользуй https://github.com/Geo-Linux-Calculations/gnumeric-ols .
     
    #75
  16. Nikonte

    Форумчанин

    Регистрация:
    2 дек 2012
    Сообщения:
    478
    Симпатии:
    151
    дело не в "устраивает / не устраивает", а в том, что dx и dy находятся как разности текущих координат и финальных координат центра.
    Если нам уже известны финальные координаты, то к чему все вычисления - вот что не ясно.
     
    #76
  17. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    5.915
    Симпатии:
    2.092
    Адрес:
    г. Москва
    Откуда они известны?

    PS: Скопируй по значению "first iter" в "target", после этого копируй "second iter". И всё поймёшь.
     
    #77

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление