![]() |
|
|
![]()
|
|
| x2bool |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.1.2012 Репутация: нет Всего: нет |
Здравствуйте.
Битмап, простое искажение по синусу.
Естественно, что синус не дает целое число, а битмап не может принимать дробь в качестве координаты. Приходится округлять или попросту отбрасывать (как в примере) дробную часть. Результат ожидаемый - алгоритм работает, но изображение получается очень ступенчатым. Как можно сгладить? |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Делается по другому.
Вначале вычисляешь размеры нового изображения. Потом идешь по пиксельно перебираешь координаты нового изображения. По этим новым координатам находишь старые координаты, с плавающей точкой. Вот получив старые координаты находишь цвет в этом. Для сглаживания используешь интерполирование. Линейное или кубическое или сплайнами. К примеру линейное. берешь координаты находишь целую часть и дробную. Old_X_I=int(Old_X); Old_Y_I=int(Old_Y); alfa=Old_X-Old_X_I; betta=Old_Y-Old_Y_I; a00=map[Old_X_I+0,Old_Y_I+0]; a10=map[Old_X_I+1,Old_Y_I+0]; a01=map[Old_X_I+0,Old_Y_I+1]; a11=map[Old_X_I+1,Old_Y_I+1]; New_Value=a00*(1-alfa)*(1-betta)+a10*(alfa)*(1-betta)+a01*(1-alfa)*(betta)+a11*(alfa)*(betta); http://en.wikipedia.org/wiki/Bilinear_interpolation http://en.wikipedia.org/wiki/Bicubic_interpolation Примерно так. Остальное думаю сам додумаешь. |
|||
|
||||
| x2bool |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.1.2012 Репутация: нет Всего: нет |
Спасибо. Я ходил вокруг да около, но почему-то думал, что интерполяция только для ресайза изображений.
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |