|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Michael Ryazanov 2:5030/1006.64 03 Jul 2002 17:47:00 To : Alexander Hritonenkov Subject : Re: Повернуть изображение -------------------------------------------------------------------------------- AH> Кто что посоветует для поворота изображения на произвольный угол? AH> Как вы сами понимаете, важны и скорость, и качество получаемой картинки. Тогда аппаратным образом. Там и билинейная фильтрация, и что угодно. :-) AH> Что может быть тут полезно? AH> Полярные координаты? Или лучше матрица поворота? AH> Hy да ладно, поворот - это еще только половина беды. AH> Вторая половина - использование прозрачности. AH> Ведь получающиеся в результате преобразования координаты будут уже не AH> целыми числами, значит надо как-то "размазать" точку по квадрату 2х2, в AH> который попадет эта точка после поворота. Или как? Всё наоборот -- надо вычислять для каждой точки результата влияющие на неё точки оригинала. AH> Кто что посоветует? Без сглаживания есть такой более-менее быстрый метод. Поскольку (u, v -- координаты оригинала) u = x cos a + y sin a v = - x sin a + y cos a и x, y при сканировании увеличиваются на единицу: for (int y = y0; y < y1; ++y) for (int x = x0; x < x1; ++x) { то u, v будут увеличиваться на соответствующие cos a и sin a: float c = cos a, s = sin a; float u0 = x0 * c + y0 * s, v0 = - x0 * s + y0 * c; for (int y = y_0; y < y_1; ++y) { float u = u0, v = v0; for (int x = x_0; x < x_1; ++x) { res[x][y] = orig[u][v]; u += c; v -= s; } u0 += s; v0 += c; } таким образом, умножений в цикле вообще не будет. float там написано по смыслу, а фактически это обычно тип с фиксированной запятой. Если делать не так грубо, то вместо orig[u][v] надо писать соответствующую линейную комбинацию из четырёх orig[u+0,1][v+0,1] с весами, определяемыми дробными частями u, v. |V|uxau/\ --- -- - ъ * Origin: Ф И З Ф А К - Ч Е М П И О H ! (2:5030/1006.64) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/45633d233e99.html, оценка из 5, голосов 10
|