2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 07:53 
Вращение градиентного прямоугольника: 15, 30, 45, 60

-- 20.01.2016, 12:03 --

oleg_2
Всё почти так, только сдвиг выполняется 3 раза - по горизонтали, по вертикали и снова по горизонтали. Коэффициенты для величины сдвигов определяются по приведённому Вами алгоритму Оуэна и Македона. Кстати, а как Вы его нашли?

 
 
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 12:25 
Аватара пользователя
Вот это мне нравится. А зачем 3 раза?

 
 
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 12:50 
bondkim137 в сообщении #1092554 писал(а):
Вот это мне нравится. А зачем 3 раза?
Я сначала думал двумя получится, но не получилось:
Progger в сообщении #1092370 писал(а):
Воспользуемся комбинацией преобразований, которые позволяют получить однозначное соответствие пикселей исходного изображения конечному:
\begin{vmatrix}
1 & p \\
0 & 1
\end{vmatrix}\begin{vmatrix}
1 & 0 \\
q & 1
\end{vmatrix}=\begin{vmatrix}
1 + p q & p \\
q & 1
\end{vmatrix}
Из этого нельзя получить нужную матрицу поворота

 
 
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 13:03 
С тремя тоже не получится. Эта формула приближённая, и для малых углов ещё ничего, а для больших заметно расходится с истинным поворотом. В результате на углы не в интервале $[-45^\circ;45^\circ]$ стоит поворачивать, сначала сделав поворот на $\pm90^\circ n$. Да и я бы не советовал поворачивать даже на $45^\circ$, потому что отличия в компонентах матрицы будут $\approx0{,}06$ на диагонали и $\approx0{,}12$ над диагональю. Можно избежать таких ошибок, делая этот «почти поворот» несколько раз на меньшие углы. Например, наибольшая ошибка в компонентах матрицы для четырёхкратного «почти поворота» на 15° от истинного на 60° составляет $\approx0{,}012$.

 
 
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 13:08 
Аватара пользователя
arseniiv в сообщении #1092558 писал(а):
несколько раз на меньшие углы

Так очень не хочется делать, т.к. и так у nearest заметные искажения уже.
arseniiv в сообщении #1092558 писал(а):
Да и я бы не советовал поворачивать даже на $45^\circ$

Может коэф-енты неправильно расчитываются? Разве двумя сдвигами нельзя до $45^\circ$ точно (+- пиксель) повернуть?

 
 
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 13:23 
В принципе, для малых углов и формулу с двумя матрицами можно применить, но она значительно хуже тройной (зато ошибки нет в двух компонентах матрицы против одного у тройной). Отличия в ошибках на угле 15° — в два порядка. (На меньших ещё больше, но там это незаметно. На больших меньше, но ошибки там везде уже слишком большие, чтобы применять обе формулы.)

bondkim137 в сообщении #1092559 писал(а):
Может коэф-енты неправильно расчитываются? Разве двумя сдвигами нельзя до $45^\circ$ точно (+- пиксель) повернуть?
Если совсем точно, нельзя, алгебру не обманешь. :-) И тремя нельзя, и четырьмя, видимо, можно тоже только приблизить. Хотя не исключено, что какое-нибудь приближение с $n < km$ матрицами может оказаться лучше приближения с $k$ матрицами, применённого $k$ раз для угла, меньшего в $k$ раз. Тут надо уже в общем случае с операторами и нормами возиться, а с функаном я не очень сейчас.

В ±пиксель надо сравнивать с размером поворачиваемого, т. к. ошибка положения линейна от расстояния до центра. Прикидываю: отличия для пикселя на расстоянии $(10, 10)$ от центра будут $(1{,}8, 0{,}6)$. Если делать вместо этого три раза по 15°, отличия будут маленькие, но зато для смещения $(100, 100)$ будут снова $(1{,}6, 0{,}6)$. Короче, всё просто посчитать, буде в руках СКА (у меня Mathematica).

-- Ср янв 20, 2016 15:24:37 --

(Оффтоп)

Лучше, конечно, получить нормальные оценки «в символах», но мне лень. :?

 
 
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 16:02 
Наконец нашёл у себя ошибку. Правильный вариант:
\begin{vmatrix}
1 & p \\
0 & 1
\end{vmatrix}\begin{vmatrix}
1 & 0 \\
q & 1
\end{vmatrix}\begin{vmatrix}
1 & r \\
0 & 1
\end{vmatrix}=\begin{vmatrix}
1 + p q & r + pqr + p \\
q & qr + 1
\end{vmatrix}
Получаем систему из 4 уравнений с 3 неизвестными:
\begin{cases}
1 + pq = c \\
qr + 1 = c \\
q = s \\
r + pqr + p = -s
\end{cases}
Из первых трёх получаем:
$p = r = \frac {c - 1} s$
$q = s$
Четвёртое уравнение выполняется:
${c^2} + {s^2} = 1$
Получается формула не приближённая, а точная. Во всяком случае я не вижу, где тут отклонение от поворота.

 
 
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 16:43 
Хм, действительно. Пошёл искать ошибку у себя.

-- Ср янв 20, 2016 19:33:01 --

Не знаю, какую ерунду я сделал вчера, а сегодня меня сбила вот эта формула:
oleg_2 в сообщении #1092514 писал(а):
Изображение
Почему-то они написали $\tg(\alpha/2)$ как $\tg\alpha/2$. Ну я честно ввёл последнее и получил расхождения. :lol: Надеюсь, вы меня простите…

 
 
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение21.01.2016, 02:20 
Аватара пользователя
Изображение
В три сдвига все работает, но очень мне не нравится пила вот эта вдоль краев. Эффекты неприятные возникают. Пытаюсь в два сдвига сделать.

-- 21.01.2016, 02:28 --

Но похоже не выйдет ничего

 
 
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение21.01.2016, 04:28 
Аватара пользователя
bondkim137 в сообщении #1092739 писал(а):
не нравится пила вот эта вдоль краев

терпимо в общем, сейчас безделушку доделаю и отпишусь =)

 
 
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение22.01.2016, 18:12 
Аватара пользователя
Progger в сообщении #1092608 писал(а):
Получается формула не приближённая, а точная

arseniiv в сообщении #1092616 писал(а):
Почему-то они написали $\tg(\alpha/2)$ как $\tg\alpha/2$. Ну я честно ввёл последнее и получил расхождения


Короче такую штуку сделал на базе этого поворота =) (кликнуть на картинку)

Изображение

 
 
 [ Сообщений: 26 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group