2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 07:53 


27/08/14
176
Вращение градиентного прямоугольника: 15, 30, 45, 60

-- 20.01.2016, 12:03 --

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

 Профиль  
                  
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 12:25 
Аватара пользователя


07/02/12
1375
Питер
Вот это мне нравится. А зачем 3 раза?

 Профиль  
                  
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 12:50 


27/08/14
176
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 
Заслуженный участник
Аватара пользователя


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

 Профиль  
                  
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 13:08 
Аватара пользователя


07/02/12
1375
Питер
arseniiv в сообщении #1092558 писал(а):
несколько раз на меньшие углы

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

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

 Профиль  
                  
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение20.01.2016, 13:23 
Заслуженный участник
Аватара пользователя


27/04/09
27362
В принципе, для малых углов и формулу с двумя матрицами можно применить, но она значительно хуже тройной (зато ошибки нет в двух компонентах матрицы против одного у тройной). Отличия в ошибках на угле 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 


27/08/14
176
Наконец нашёл у себя ошибку. Правильный вариант:
\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 
Заслуженный участник
Аватара пользователя


27/04/09
27362
Хм, действительно. Пошёл искать ошибку у себя.

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

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

 Профиль  
                  
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение21.01.2016, 02:20 
Аватара пользователя


07/02/12
1375
Питер
Изображение
В три сдвига все работает, но очень мне не нравится пила вот эта вдоль краев. Эффекты неприятные возникают. Пытаюсь в два сдвига сделать.

-- 21.01.2016, 02:28 --

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

 Профиль  
                  
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение21.01.2016, 04:28 
Аватара пользователя


07/02/12
1375
Питер
bondkim137 в сообщении #1092739 писал(а):
не нравится пила вот эта вдоль краев

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

 Профиль  
                  
 
 Re: Однозначное соответсвие при повороте растровой картинки
Сообщение22.01.2016, 18:12 
Аватара пользователя


07/02/12
1375
Питер
Progger в сообщении #1092608 писал(а):
Получается формула не приближённая, а точная

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


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

Изображение

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2

Модераторы: Karan, maxal, Toucan, PAV, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group