Image Transforming
От: zinabnm www.zpmer.ru
Дата: 12.11.03 11:34
Оценка:
Доброго времени суток.
Есть задача коррекции отсканированного изображения (например карты). Суть ее сводится к преобразованию четырехугольника (в общем случае с углами не равными 90гр. и неодинаковыми сторонами,например трапеция) к квадрату. Помогут ли афинные преобразования (тогда можно было бы задействовать GDI+)? Или нужно все делать руками по какому-нить хитрому алгоритму (какому)?
Может кто решал подобную задачу. Спасибо
Re: Image Transforming
От: AndreyFedotov Россия  
Дата: 12.11.03 11:55
Оценка: 1 (1)
Здравствуйте, zinabnm, Вы писали:

Z>Доброго времени суток.

Z>Есть задача коррекции отсканированного изображения (например карты). Суть ее сводится к преобразованию четырехугольника (в общем случае с углами не равными 90гр. и неодинаковыми сторонами,например трапеция) к квадрату. Помогут ли афинные преобразования (тогда можно было бы задействовать GDI+)? Или нужно все делать руками по какому-нить хитрому алгоритму (какому)?
Z>Может кто решал подобную задачу. Спасибо

Да в данном случае можно воспользоваться афинными преобразованиями, но — в пространстве. Смысл таков — трапеция получается при рассмотрении прямоугольника с определённого ракурса. Соотвественно нужно получить матрицу обратного преобразования и прогнать точки через неё. Ондако это будет работать хорошо только при действительно линейном искажении.

В общем случае (для произвольного искажения), определяется вектор-функция искажения D( x, y ), которая показывает смещение точки в зависимости от её местоположения на исходной картинке ( x, y — координаты на исходной картинке), затем решается обратная задача: нахождение исходных координат точки, если известны её координаты на искажённом изображении.
В случае линейного (трапеция, ромб) искажения такая функция тоже будет линейной и задача может быть решена аналитически.

С Уважением, Андрей
Re[2]: Image Transforming
От: zinabnm www.zpmer.ru
Дата: 12.11.03 13:33
Оценка:
Здравствуйте, AndreyFedotov,
спасибо за отклик!
Теперь по существу. Насколько я понимаю(а понимаю скорее всего немного, если говорить о ромбе, то хватит 2D, изменив масштаб по одной из осей. В случае параллелограмма 3D, скорее всего уже пригодится. А в случае трапеции, кажется без проекции (притом центральной) уже не обойтись. У меня напрашивается печальный вывод, что GDI+, напрмер, для решения такой задачи уже не хватит, учитывая размерность его матриц. А вообще хотелось бы его задействовать.
Re[3]: Image Transforming
От: AndreyFedotov Россия  
Дата: 12.11.03 14:06
Оценка:
Здравствуйте, zinabnm, Вы писали:

Z>Здравствуйте, AndreyFedotov,

Z>спасибо за отклик!
Z>Теперь по существу. Насколько я понимаю(а понимаю скорее всего немного, если говорить о ромбе, то хватит 2D, изменив масштаб по одной из осей. В случае параллелограмма 3D, скорее всего уже пригодится. А в случае трапеции, кажется без проекции (притом центральной) уже не обойтись. У меня напрашивается печальный вывод, что GDI+, напрмер, для решения такой задачи уже не хватит, учитывая размерность его матриц. А вообще хотелось бы его задействовать.

GDI+ действительно не хватило бы, если бы речь шла о использовании матричных операций в GDI+. (То есть сдвиги, повороты, отражения изображения). Но его вполне хватит, если делать собственный пересчёт координат. Более того собственное преобразование даже желательно делать, так как в случае трапеции, например, получится различная плотность цвета в разных частях изображения. Тем более, что сдлать преобразование довольно просто.

С Уважением, Андрей
Re: Image Transforming
От: ukman Россия http://math.welobox.com
Дата: 12.11.03 15:26
Оценка: 18 (3)
Здравствуйте, zinabnm, Вы писали:

Z>Доброго времени суток.

Z>Есть задача коррекции отсканированного изображения (например карты). Суть ее сводится к преобразованию четырехугольника (в общем случае с углами не равными 90гр. и неодинаковыми сторонами,например трапеция) к квадрату. Помогут ли афинные преобразования (тогда можно было бы задействовать GDI+)? Или нужно все делать руками по какому-нить хитрому алгоритму (какому)?
Z>Может кто решал подобную задачу. Спасибо

Решал подобную задачу- решается просто- билинейной интерполяцией.
Например тебе из исходного 4-х угольника надо получить квадрат NxN точек. Т.о. тебе нужно вычислить цвет NxN точек, цвет вычисляется просто- представь, что ты на исходный четырехугольник наложил сетку NxN. Найди координаты узлов сетки и посчитай взвешенное (среднее) значение в этой точке в зависимости от рядом стоящих точек. Думаю рисунок поможет. Если не понятно- ищи билинейную интерполяцию.
Re[2]: Image Transforming
От: zinabnm www.zpmer.ru
Дата: 12.11.03 15:40
Оценка:
Здравствуйте, ukman, Вы писали:


U>Решал подобную задачу- решается просто- билинейной интерполяцией.

U>Например тебе из исходного 4-х угольника надо получить квадрат NxN точек. Т.о. тебе нужно вычислить цвет NxN точек, цвет вычисляется просто- представь, что ты на исходный четырехугольник наложил сетку NxN. Найди координаты узлов сетки и посчитай взвешенное (среднее) значение в этой точке в зависимости от рядом стоящих точек. Думаю рисунок поможет. Если не понятно- ищи билинейную интерполяцию.


Спасибо, интересная идея. Сейчас поищу подробности
Re: Image Transforming
От: uzzy Россия  
Дата: 17.11.03 17:39
Оценка: 3 (1)
Здравствуйте, zinabnm, Вы писали:

Z>Доброго времени суток.

Z>Есть задача коррекции отсканированного изображения (например карты). Суть ее сводится к преобразованию четырехугольника (в общем случае с углами не равными 90гр. и неодинаковыми сторонами,например трапеция) к квадрату. Помогут ли афинные преобразования (тогда можно было бы задействовать GDI+)? Или нужно все делать руками по какому-нить хитрому алгоритму (какому)?
Z>Может кто решал подобную задачу. Спасибо

Нашел у себя в закромах доки, (здесь (Главая 5-я Лекций по ЦОС)), вообще, взятые кажется с МГУ
RSDN@Home 1.1.0 stable
Re[2]: Image Transforming
От: zinabnm www.zpmer.ru
Дата: 19.11.03 15:35
Оценка:
Здравствуйте, uzzy, Вы писали:


U>Нашел у себя в закромах доки, (здесь (Главая 5-я Лекций по ЦОС)), вообще, взятые кажется с МГУ


Приветствую, огромное спасибо за материал! Очень помог. Там есть ссылочки на другие главы. Если имеются в наличии (остальные главы\ссылки на них) поделись, пожалуйста.
Андрей
Re[3]: Image Transforming
От: uzzy Россия  
Дата: 19.11.03 16:33
Оценка:
Здравствуйте, zinabnm, Вы писали:

Z>Приветствую, огромное спасибо за материал! Очень помог. Там есть ссылочки на другие главы. Если имеются в наличии (остальные главы\ссылки на них) поделись, пожалуйста.

Z>Андрей

Имеются
RSDN@Home 1.1.0 stable
Re[4]: Image Transforming
От: zinabnm www.zpmer.ru
Дата: 21.11.03 17:59
Оценка:
Здравствуйте, uzzy, Вы писали:

U>Имеются


Спасибо. Забрал
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.