Вот вот, вы в разрешение упирались, а можно было смотреть сразу в разрезе расстояний) а какие точки использовать, какие не использовать — все что я понял какого то революционного подхода нет)
Смотрите, по Хафу у вас есть фиксированный набор смещений, все, мы уперлись в то что нужно много считать. Хотим найти смещений с точностью 1 ед нужно выполнить 1000 вычислений, с шагом 0.5 ед нужно выполнить 2000 вычислений.
А по данной схеме, вы за одно вычисления определили все расстояния. Т.е. мы берем линию с нулевым смещением и определяем расстояния всех точек до этой линии с этим нулевым смещением. Далее мы просто смотрим на каком расстоянии больше всего точек сконцентрировано => то расстояние на котором расположена линия. Итого 1 вычисление + вспомогательные вычисления по определению того самого расстояния, на котором больше всего точек.
В выводе я как раз указал на то, что точки должны быть максимально раскиданы пространственно, тогда все будет работать стабильно. Если точки будут рядом друг с другом, естественно две линии будет детектировать проблематично.
Но в случае если мы знаем про особенность что линии у нас близко расположены друг другу мы можем навешать новые ограничительные условия и использовать особенность данной задачи.
Классический Хаф тоже будет проблематично детектировать две близко расположенные линии.
По поводу скорости распознавания, то данная схема должна работать веселее) Из за того что не нужно перебирать разные варианты расстояний.
На Хафа похоже) и он и использовался в начале) никто не спорит, но далее используются преимущества конкретной задачи, а именно, то что детектируем линии. Допустим мы перебираем сетку из 100 углов и 100 смещений, получаем расчёт расстояний для 10000 вариаций линий, а в данном случае мы рассчитываем вариации расстояний для 100 вариантов линий, а далее на базе полученных смещений, ищем то, на котором имеется максимальное количество приблизительно одинаковых расстояний. Чувствуете изменение сложности вычислений?)
В Хафе вы будете перебирать фиксированную сетку, а именно линии с определенным углом и смещением. Таким образом потом оценивая какой из вариантов больше всего подходит.
В данной схеме у вас изначальный подход другой. Вы измеряете всевозможные расстояния от точки до вариаций линий с различным углом, таким образом далее оценивая с каким смещением линия имеет максимальное количество точек.
Таким образом если вы действительно использовали Хафа от начала до конца, при этом реализовывая собственноручно, вы бы поняли что при необходимости более точного нахождения линии с первого шага преимущество данного метода. Данный метод изначально покрывает всевозможные вариации линий)
Просто хочется знать как оно там устроено) неужели вам не интересно?) самому попробовать реализовать) ведь если знать как и что устроено, то появляются определенные шаблоны в голове
Если исходное облако точек и трансформированное облако точек без искажений, то угол поворота и смещение будет определено абсолютно точно, исключение симметричные облака точек относительно одной точки. В таком случае будет невозможно определить единственный ортонормированный базис.
В случае с искаженным облаком точек, то да, естественно ICP) Но ICP это итерационный алгоритм с вытекающими минусами.
А по данной схеме, вы за одно вычисления определили все расстояния. Т.е. мы берем линию с нулевым смещением и определяем расстояния всех точек до этой линии с этим нулевым смещением. Далее мы просто смотрим на каком расстоянии больше всего точек сконцентрировано => то расстояние на котором расположена линия. Итого 1 вычисление + вспомогательные вычисления по определению того самого расстояния, на котором больше всего точек.
Но в случае если мы знаем про особенность что линии у нас близко расположены друг другу мы можем навешать новые ограничительные условия и использовать особенность данной задачи.
Классический Хаф тоже будет проблематично детектировать две близко расположенные линии.
По поводу скорости распознавания, то данная схема должна работать веселее) Из за того что не нужно перебирать разные варианты расстояний.
На Хафа похоже) и он и использовался в начале) никто не спорит, но далее используются преимущества конкретной задачи, а именно, то что детектируем линии. Допустим мы перебираем сетку из 100 углов и 100 смещений, получаем расчёт расстояний для 10000 вариаций линий, а в данном случае мы рассчитываем вариации расстояний для 100 вариантов линий, а далее на базе полученных смещений, ищем то, на котором имеется максимальное количество приблизительно одинаковых расстояний. Чувствуете изменение сложности вычислений?)
В Хафе вы будете перебирать фиксированную сетку, а именно линии с определенным углом и смещением. Таким образом потом оценивая какой из вариантов больше всего подходит.
В данной схеме у вас изначальный подход другой. Вы измеряете всевозможные расстояния от точки до вариаций линий с различным углом, таким образом далее оценивая с каким смещением линия имеет максимальное количество точек.
Таким образом если вы действительно использовали Хафа от начала до конца, при этом реализовывая собственноручно, вы бы поняли что при необходимости более точного нахождения линии с первого шага преимущество данного метода. Данный метод изначально покрывает всевозможные вариации линий)
В Хафе расстояния тоже перебираются по фиксированной сетке, а тут более плавно)
В случае с искаженным облаком точек, то да, естественно ICP) Но ICP это итерационный алгоритм с вытекающими минусами.