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

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

  1. stout

    stout Форумчанин

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

    MaxKal Форумчанин

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

    MaxKal Форумчанин

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

    stout Форумчанин

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

    MaxKal Форумчанин

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

    stout Форумчанин

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

    MaxKal Форумчанин

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

    MaxKal Форумчанин

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


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

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

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

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

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

    zvezdochiot Форумчанин

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

    Вложения:

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

    Nikonte Форумчанин

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

    zvezdochiot Форумчанин

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

    Nikonte Форумчанин

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

    zvezdochiot Форумчанин

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

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