Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2012, 16:08   #11
Pathoswithin
Пользователь
 
Регистрация: 16.05.2012
Сообщений: 20
По умолчанию

Prosolver
Ну на счёт "дырок" я и предлагаю расчитывать цвет пикселей итогового изображения, а не вращать пиксели исходного. А на счёт квадратности пикселей - это ты загнул. Я сомневаюсь что такой алгоритм вообще есть и что в этом есть хоть какой-то смысл. Максимум, можно брать в расчёт девять пикселей. А геометрические расчёты формы и расположения пикселей скорей всего почти ничего не дадут. А учитывая что везде сейчас сжатые форматы с некоторыми потерями, то и вовсе ничего.
Pathoswithin вне форума Ответить с цитированием
Старый 18.11.2012, 20:51   #12
Prosolver
Пользователь
 
Аватар для Prosolver
 
Регистрация: 17.06.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Pathoswithin
Я сомневаюсь что такой алгоритм вообще есть и что в этом есть хоть какой-то смысл.
Алгоритм есть и он довольно сложный. Другой вопрос реализовывал ли его кто-нибудь до этого момента.

А со вторым тезисом не согласен. Выше я уже приводил картинку, показывающую в сравнении результат вращения горизонтальной линии длиной 10 пикселей точным алгоритмом и алгоритмом фотошопа. Так вот я ещё поигрался с фотошопом и обнаружил, что результат меняется в зависимости от того, в каком месте изображения находится горизонтальная линия! Что немыслимо. Получаются такие вот ужасы (сверху - точный поворот на 3 градуса, снизу - фотошоп):

А теперь представьте, что изображение у Вас уникальное (например снимок из космоса или скан какой-то редкой рукописи) но его необходимо повернуть и сохранить при этом максимум деталей. Фотошоп в таком случае не годится.
Prosolver вне форума Ответить с цитированием
Старый 18.11.2012, 21:39   #13
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

алгоритм по ссылке работает с площадями, и качество поворота будет для площадных фигур (не линий), попробуйте повращать закрашенный прямоугольник и пикселей по каждому из направлений >20.

Для поворота линни можно предложить такое
1. превратить линию в прямоугольник (как бы увеличение масштаба)
2. поворот площадных фигур.
3. обратное сжатие и использованием схемы увеличения резкости (это уже "неточное" преобразование).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.11.2012, 21:53   #14
Pathoswithin
Пользователь
 
Регистрация: 16.05.2012
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Prosolver Посмотреть сообщение
результат меняется в зависимости от того, в каком месте изображения находится горизонтальная линия
Ну естественно, это в любом случае будет. Кстати, эта работа фотошопа выглядит неплохо по сравнению с предыдущей. Я полагаю, вторая линия расположена в одной вертикали с точкой вращения, а первая в одной горизонтали. Ну и от удаления зависит.

Последний раз редактировалось Pathoswithin; 18.11.2012 в 21:59.
Pathoswithin вне форума Ответить с цитированием
Старый 18.11.2012, 22:04   #15
Prosolver
Пользователь
 
Аватар для Prosolver
 
Регистрация: 17.06.2012
Сообщений: 12
По умолчанию

evg_m, я думал Вы спрашиваете про алгоритм от _PROGRAMM_.
Алгоритм на С++ посмотрел но с ходу его не понял, но похоже они действительно высчитывают какую-то площадь. У меня нет компилятора С++, поэтому не могу потестировать этот код. Вы бы не могли скинуть мне скомпилированную прогу? prosolver@gmail.com

Цитата:
Сообщение от Pathoswithin
Ну естественно, это в любом случае будет
Если центр поворота расположен в центре пикселя или в точке пересечения линий сетки, то результат будет один и тот же по всей площади картинки. Собственно, точный алгоритм это доказывает (сравните верхнюю линию на первой и второй картинках - они одинаковые, хотя исходная горизонтальная линия находилась в разных координатах исходного изображения).

Цитата:
Сообщение от Pathoswithin
вторая линия расположена в одной вертикали с осью вращения, а первая в одной горизонтали?
Вы не поняли. Верхнюю линию на обоих картинках я повернул с помощью точного алгоритма (он у меня пока поворачивает маленькие картинки на маленькие углы). А нижнюю линию повернул фотошоп. При прочих равных условиях...

Последний раз редактировалось Prosolver; 18.11.2012 в 22:09.
Prosolver вне форума Ответить с цитированием
Старый 18.11.2012, 22:33   #16
Pathoswithin
Пользователь
 
Регистрация: 16.05.2012
Сообщений: 20
По умолчанию

Prosolver
Я имел в виду вторые картинки в первом и втором посте.
А что это за точный алгоритм который ограничен в угле и размере картинки? Ещё и результат всегда одинаковый выдаёт. Случайно не сферический конь в вакууме?
Pathoswithin вне форума Ответить с цитированием
Старый 18.11.2012, 23:59   #17
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Алгоритм на С++ посмотрел но с ходу его не понял, но похоже они действительно высчитывают какую-то площадь. У меня нет компилятора С++, поэтому не могу потестировать этот код. Вы бы не могли скинуть мне скомпилированную прогу? prosolver@gmail.com
Все что я делал, прочитал вводную часть и посмотрел на рисунок(-и). +немного подумал. Никаких экспериментов и кодирования не делал.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 19.11.2012, 08:33   #18
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Уважаемый Prosolver,

вы изначально пытаетесь решить задачу, решение которой практически невозможно в заданных условиях: желаемое вами достигается линейными преобразованиями, а никак не дискретными.

т.е. либо создаёте линейную модель вашей матрицы, преобразовываете и снова приводите к дискретному виду, либо увеличиваете (в 9, 25 , 49 и т.д. раз) исходное изображение, преобразовываете его и снова уменьшаете.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 19.11.2012, 11:05   #19
Prosolver
Пользователь
 
Аватар для Prosolver
 
Регистрация: 17.06.2012
Сообщений: 12
По умолчанию

DiemonStar, так я и делаю. Просто решение получается довольно сложным. Поэтому я и хочу узнать, не изобретаю ли я велосипед и не трачу ли время впустую.
Prosolver вне форума Ответить с цитированием
Старый 19.11.2012, 12:04   #20
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от Prosolver Посмотреть сообщение
DiemonStar, так я и делаю. Просто решение получается довольно сложным. Поэтому я и хочу узнать, не изобретаю ли я велосипед и не трачу ли время впустую.
Второй вариант я бы сложным не назвал - скорее ресурсоёмким. И, судя по практическим реализациям, именно эта методика в основе поворотов основных графических редакторов. Различия только в методах обработки "спорных" пикселей. Но, при любом раскладе, результат поворота линии будет отличаться от подобного результата для векторной графики.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что я не правильно делаю в функции поворота изображения maxcroud C# (си шарп) 2 18.06.2012 16:36
алгоритм поворота в игре змейка Xneo C# (си шарп) 1 27.05.2012 13:29
Поворот изображения, матрица поворота kordax Помощь студентам 9 19.01.2012 23:21
загрузка растрового изображения Serg16361898 Помощь студентам 0 01.06.2010 20:15
Процедура поворота изображения Илья PHoeNiX Общие вопросы Delphi 3 08.06.2008 13:59