nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

Тестируем вычисление крена (алг ближ дистанции)

После выполнения всех предыдущих этапов мы получили для тестового кадра такую матрицу аффинного преобразования:



Сейчас посмотрим, как из неё выделится крен. Проект синтезировался в 525 ЛЭ (процессор без периферии), лишние 3 ЛЭ за счёт увеличения ширины адресной шины ПЗУ с 7 до 8 бит, вообще не заметно почти. интрига в том, сколько будет весить уже вся программа в сборе - обнаружение точек, вычисление яркостных центров с субпиксельной точностью, захват ближней и дальней дистанции, сопровождение, и до кучи информационный обмен. Предельная частота: 30,3 МГц, нормально.

По окончании 330 мкс выполнение завершается. Посмотрим дамп памяти:


Сейчас разберёмся, соответствует ли оно действительности...


Начнём с кватерниона. Два его последних компонента (j,k) вообще должны стать нулевыми в этом алгоритме, но пока там остались временные значения si, co. По сути, мы получили

si = 0x18AF ≈ 0,1928 (в Q1.15),
co = 0x7D99 ≈ 0,9812.

si2+co2 ≈ 1,0000031 - логично. Насколько позволила 16-битная точность, это дело отнормировалось.

Наконец, atan(si/co) ≈ 11,12°.Попробуем в фотошопе повернуть нашу картинку на эти 11,1° и посмотреть, выправит ли это крен:


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

Дальше, посмотрим две первые компоненты кватерниона:

0x7F66 + 0x0C66i ≈ 0,9953 + 0,0968i

Если здесь взять арктангенс, получится 5,56°, ровно вдвое меньше, как в аптеке. Такая уж особенность у кватернионов.

И теперь посмотрим, какая вышла матрица после того, как из неё убрали крен:



Ну да, элементы вне главной диагонали стали поменьше, но они должны были стать одинаковыми!

Сейчас попробовал в экселе пересчитать, и получил такую:



Неужели порядок матриц перепутал? С меня станется: до сих пор с какой стороны не умножай - получался бы практически одинаковый результат. Тогда даже хорошо, что у меня такой косяк со "сплющенной" картинкой - а то так и не заметил бы ничего, а ведь это неправильное умножение у меня ещё с прошлого года было! Впрочем, может я делаю поспешные заключения. Вернусь домой - и громко подумаю.
Tags: ПЛИС, математика, программки, работа, странные девайсы
Subscribe

Recent Posts from This Journal

  • Тестируем atan1 на QuatCore

    Пора уже перебираться на "железо" потихоньку. Решил начать с самого первого алгоритма, поскольку он уже был написан на ассемблере. В программу внёс…

  • Формулы приведения, что б их... (и atan на ТРЁХ умножениях)

    Формулу арктангенса на 4 умножениях ещё немножко оптимизировал с помощью алгоритма Ремеза: Ошибка уменьшилась с 4,9 до 4,65 угловой секунды, и…

  • Алгоритм Ремеза в экселе

    Вот и до него руки дошли, причина станет ясна в следующем посте. Изучать чужие библиотеки было лениво (в том же BOOSTе сам чёрт ногу сломит), писать…

  • atan на ЧЕТЫРЁХ умножениях

    Мишка такой человек — ему обязательно надо, чтоб от всего была польза. Когда у него бывают лишние деньги, он идёт в магазин и покупает какую-нибудь…

  • Ай да Пафнутий Львович!

    Решил ещё немного поковыряться со своим арктангенсом. Хотел применить алгоритм Ремеза, но начал с узлов Чебышёва. И для начала со своего "линейного…

  • atan(y/x) на двух умножениях!

    Чего-то никак меня не отпустит эта тема, всё кажется, что есть очень простой и эффективный метод, надо только его найти! Сейчас вот такое…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments