Линия горизонта: G '* (u, v, f) = 0, где G - вектор силы тяжести, координаты центра изображения u и v и фокусное расстояние f. Теперь плюсы и минусы сенсоров: гироскоп очень быстрый и точный, но дрейфует, акселерометр менее точен, но (при калибровке) имеет нулевое смещение и не дрейфует (без ускорения, кроме силы тяжести). Они измеряют разные вещи - акселерометр измеряет ускорение и, следовательно, ориентацию относительно вектора силы тяжести, а гироскоп измеряет скорость вращения и, следовательно, изменение ориентации. Чтобы преобразовать его в ориентацию, нужно интегрировать его значения (к счастью, его можно выбирать с высокой частотой кадров, например, 100-200). таким образом, фильтр Калмана, который должен быть линейным, не применим к гироскопу. сейчас мы можем просто упростить объединение датчиков как взвешенную сумму показаний и прогнозов.
Вы можете объединить два показания - акселерометр и встроенный гироскоп и прогнозирование модели, используя веса, обратно пропорциональные отклонениям данных. Вам также придется иногда использовать компас, так как акселерометр мало что говорит вам об азимуте, но я думаю, что он не имеет отношения к вычислению линии горизонта. Система должна быть отзывчивой и точной, и для этой цели всякий раз, когда быстро меняется ориентация, вес гироскопа должен быть большим; когда система успокаивается и вращение останавливается, веса акселерометра возрастают, что позволяет лучше интегрировать нулевые показания смещения и убить дрейф от гироскопа.