Алгоритм матричного логарифма - PullRequest
4 голосов
/ 26 мая 2011

есть ли способ вычислить матричный логарифм в OpenCV?Я понимаю, что это не доступно как функция библиотеки, но ссылки на хороший источник (статья, учебник и т. Д.) Будут оценены по достоинству.

Ответы [ 3 ]

4 голосов
/ 26 мая 2011

"Функции матриц: теория и вычисления" Николаса Дж. Хайама имеет целую главу (гл. 11), посвященную матричному логарифму. Включает описания алгоритмов и результаты численных экспериментов.

2 голосов
/ 27 мая 2011

На самом деле, я нахожусь в процессе программирования матричного логарифма в библиотеке Eigen, которая, очевидно, используется в некоторых библиотеках Willow Garage;не уверен насчет OpenCV.На мой взгляд, книга Хайама (см. Ответ от aix) - лучшая ссылка, и я реализую Алгоритм 11.11 в его книге.Хотя это довольно сложный алгоритм.

Диагонализация (как в комментарии Александра) - это простой в программировании метод, который очень хорошо работает для симметричных положительно определенных матриц.Это также хорошо работает для многих общих матриц.Тем не менее, он не является точным для матриц, чьи собственные значения близки друг к другу, и не подходит для матриц, которые не диагонализируются.

Если вы хотите что-то более надежное, чем диагонализация, но менее сложное, чем алгоритм Higham 11.11, то я бы порекомендовалсделать разложение по Шуру с последующим обратным масштабированием и возведением в квадрат.Это Алгоритм 11.10 в книге Хайама, описанный в статье «Приближение логарифма матрицы к заданной точности» (препринт http://dx.doi.org/10.1137/S0895479899364015, при http://eprints.ma.man.ac.uk/318/).

1 голос
/ 01 декабря 2014

Если вы используете OpenCV матрицы, вы можете легко отобразить их в Eigen3 матрицы.Смотрите этот пост:

OpenCV CV :: Mat and Eigen :: Matrix

Тогда библиотека Eigen3 имеет функцию матричного логарифма, которую вы можетеиспользуйте:

http://eigen.tuxfamily.org/dox/unsupported/group__MatrixFunctions__Module.html

он находится в неподдерживаемом модуле, но это не проблема, это просто означает:

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

- http://eigen.tuxfamily.org/dox/unsupported/

Надеюсь, что это поможет.

...