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

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

ГЕОДЕЗИСТ.RU
  1. stout

    stout Форумчанин

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

    MaxKal Форумчанин

    #62
    Всё верно, зато этот алгоритм прост в реализации.
    Можно использовать Ransac, но что делать если исходных точек мало?
    статья с хорошим алгоритмом http://mathforum.org/library/drmath/view/63765.html
     
    Последнее редактирование:
  3. MaxKal

    MaxKal Форумчанин

    #63
    алгоритм в приведённой выше статье рабочий. Однако появился вопрос, а что делать с полученной информацией, какому примитиву соответствует плоскость? Для чего можно использовать параметры плоскости?
     
  4. stout

    stout Форумчанин

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

    MaxKal Форумчанин

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

    stout Форумчанин

    #66
    Первое, что нашлось.
     
  7. MaxKal

    MaxKal Форумчанин

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

    MaxKal Форумчанин

    #68
    На самом деле хочется обсудить алгоритм или стратегию аппроксимации цилиндра 3д точками. Занялся этой темой недавно, был объект с наклонными сваями, нужно было центра их искать. Поделитесь кто что знает по этой теме, из того расчёта что точек будет немного, не более 10 на цилиндр.
     
  9. #69
    Спасибо за совет, увидел пост поздно, нашел реализацию через Geomagic Desing X, умеет очень много, особенно порадовала возможность установки пределов вылета точек, но продолжаю искать подобные программы ввиду того что Geomagic только с моделями у которых центр тяжести в 0;0;0 работает, приходится трансформировать из WGS-84 и обратно.


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

    разметкин Форумчанин

    #70
    Раскрепить вертикальный круг и снимать горизонтальные сечения.
     
  11. #71
    Это актуально только для одной установки прибора, единственной фронтальной плоскости не всегда хватает что бы снять достаточное сечение для нахождения центра тяжести фигуры.
     
  12. разметкин

    разметкин Форумчанин

    #72
    На что может повлиять трансфер высот?
     
  13. zvezdochiot

    zvezdochiot Форумчанин

    #73
    Дошли наконец руки. Выкладываю простую итерационную (копи-пастную) схему без всяких там макросов и прочей ерунды.
     

    Вложения:

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

    Nikonte Форумчанин

    #74
    я не понял. в начальных вычислениях используются координаты, которые получаются после второй итерации...
    Иными словами задача решается, но ответ уже известен?
     
  15. zvezdochiot

    zvezdochiot Форумчанин

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

    Nikonte Форумчанин

    #76
    дело не в "устраивает / не устраивает", а в том, что dx и dy находятся как разности текущих координат и финальных координат центра.
    Если нам уже известны финальные координаты, то к чему все вычисления - вот что не ясно.
     
  17. zvezdochiot

    zvezdochiot Форумчанин

    #77
    Откуда они известны?

    PS: Скопируй по значению "first iter" в "target", после этого копируй "second iter". И всё поймёшь.
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление