Трансформация изображения

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Трансформация изображения

Сообщение SSecurity » 12.11.2008 (Ср) 14:12

Всем привет,


Требуется выполнить ряд операций над изображением, но не могу сообразить как удобнее это сделать.
Итак, что имеем:
- сегмент изображения (1 из 64 тыс) размером 20х20 пикс.
- для данного сегмента известны X,Y,Z всех четерех вершин (по этим данным построена сетка во вложении)

Что требуется:
- взять картинку,
- провести трансформацию в соответсвии с расположением вершин четырехугольника
- вставить картинку в общую кучу, чтобы сформировать текстуру

Для чего все это нужно:
- это не игрушка, поэтому данную операцию мне нужно будет выполнить лишь однажды
- будет сформирован огромный набор изображений с сеткой определенного размера (~150х150)
- и как в гуглмепсе по карте можно будет двигаться.
- потом на рельеф будут нанесены элементы окр. архитектуры (вручную вероятнее всего)

Что хотелось бы увидеть:
- советы о то как быстрее и качественнее сделать подобную трансформацию (для одного изображения)
- очень буду рад ссылкам и примерам

Вычислительные мощности позволяют затратить на вычисления до суток, без отрыва от работы :)

Заранее благодарен за ответы,

С Уважением,
Сергей
Вложения
picture-transform.gif
все просто как 2 пальца о бетон (рельеф)
(45.42 Кб) Скачиваний: 77
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Трансформация изображения

Сообщение Хакер » 12.11.2008 (Ср) 15:19

Векторизировать.
Произвести трансформаацию с векторной сеткой.
Растеризировать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Трансформация изображения

Сообщение Mikle » 15.11.2008 (Сб) 9:50

Какая проекция? (Если изометрия, то все проще)
Камера должна только перемещаться, или еще поворачиваться\наклоняться?
Все 64к клеток имеют свою картинку, или просто индексируют из некоторого ограниченного набора.
Нужно получать изображения в разных масштабах (в примере три), или в каком-то одном?

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Трансформация изображения

Сообщение SSecurity » 15.11.2008 (Сб) 13:21

Mikle писал(а):Какая проекция? (Если изометрия, то все проще)
Камера должна только перемещаться, или еще поворачиваться\наклоняться?
Все 64к клеток имеют свою картинку, или просто индексируют из некоторого ограниченного набора.
Нужно получать изображения в разных масштабах (в примере три), или в каком-то одном?


1.Это изометрия но не в класическом виде (W/H = 2), там около 25 градусов получается
2.все 64к - уникальные картинки (я разбираю большую карту на фрагменты 20х20) и предполагаю что их отдельно каждый трансформировать буду
3.в одном ... там пост обработка значительная:)

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Трансформация изображения

Сообщение SSecurity » 15.11.2008 (Сб) 13:24

ну самый крайний вариант -
фотошоп + код расположения картинки + сама картинка и трансформация методами фотошопа .... ну это самый крайний вариант:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Трансформация изображения

Сообщение Mikle » 15.11.2008 (Сб) 14:46

SSecurity писал(а):предполагаю что их отдельно каждый трансформировать буду

О какой трансформации речь? Не понятно, нужно ли делить на эти кусочки 20*20.
Вообще 20*20 256*256 - это 5120*5120, а 4096:4096 поддерживает практическая любая видюха аппаратно, тогда вообще включаешь анизотропную фильтрацию и рендеришь за ничтожную долю секунды.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Трансформация изображения

Сообщение SSecurity » 15.11.2008 (Сб) 18:36

Mikle писал(а):
SSecurity писал(а):предполагаю что их отдельно каждый трансформировать буду

О какой трансформации речь? Не понятно, нужно ли делить на эти кусочки 20*20.
Вообще 20*20 256*256 - это 5120*5120, а 4096:4096 поддерживает практическая любая видюха аппаратно, тогда вообще включаешь анизотропную фильтрацию и рендеришь за ничтожную долю секунды.


163 на 397,что и где включать? :)) :oops:

Меня интересует вопрос конкретного преобразования одного кусочка (понимая и реализовав алгоритм для одного куска, я за приемлимое время смогу сделать аналогично и остальные 64к - не вручную конечно).

Проблема в том, что если смотреть по сетке то каждая ячейка выглядит как 4угольник, в частном случае возможен и 3уголник, две прямых, одна прямая и т.д. (имеется в виду отображение на экране). Если задуматься (иногда со мной такое бывает) 4 точки могут представлять плоскость, но чаще всего это будет две плоскости (два треуголька).
У меня тут была мысль - первоначальный квадрат разделить на два треугольника и для каждой из 200 точки расчитать непосредственно высоту, зная её координаты (X,Y) и то, что она принадлежит плоскости расчитать высоту, а следовательно её позицию на сетке

в принципе как вариант, можно взять точки с известными высотам и построить карту высот, потом растянуть её скажем до (20x163)х(20x163) или нарезать квадраты 1024x1024, поставить камеру в расчетную точку (чтобы получить необходимый угол) и потом собирать в единую картинку скрины областей, после чего взять и наложить на готовую картинку сетку (хотя точность будет не совсем уж и та).
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Трансформация изображения

Сообщение SSecurity » 15.11.2008 (Сб) 20:27

во вложении картинка x2 (размер сетки 40х40) в последствии пришел к выводу что для нормального отбражения сетка может быть в 16 раз больше оригинальной (20x20), но это так - лирическое отступление чтобы не путать никого :)

Основная идея у меня в следующем:
на главной диагонали высоты от точки А до D распределяются равномерно (допустим что это так), тогда образованные два треугольника, можно рассматривать как две плоскости. Теперь для каждой точки можно найти высоту, и записать её в матрицу высот ... после чего в соостветсвии с позицией фразмента отобразить матрице на основном изображении :)

Вот такие мысли возникают.
Вложения
relief1.gif
то что получается сейчас
(6.53 Кб) Скачиваний: 36
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Трансформация изображения

Сообщение SSecurity » 16.11.2008 (Вс) 2:02

Всем спасибо за ответы, механизм трансформации придумал:)
(на базе двух треугольников :D :mrgreen: :cyclops: )
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Трансформация изображения

Сообщение Mikle » 16.11.2008 (Вс) 11:25

Если есть общая текстура и карта высот, то отрендерить можно в любом 3D редакторе, например в Bryce. И при этом хоть освещение добавить, хоть замозатенение.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Трансформация изображения

Сообщение SSecurity » 16.11.2008 (Вс) 16:14

Mikle писал(а):Если есть общая текстура и карта высот, то отрендерить можно в любом 3D редакторе, например в Bryce. И при этом хоть освещение добавить, хоть замозатенение.


и можно и нельзя - вид искривляется:)
вчера(уже сегодня, утром) создавал карту (размер сетки 20х20), так вот комп классно так нагрелся :) минут 40 ушло на создание всей карты (20+20 мин.) Один проц показывал 60% загрузку, второй 40-50% :)

После этого решено было все 400 x 64к ~ 24 млн. отметок (X,Y,Z,цвет) высот сразу в БД закинуть - тогда останется только достать и вывести на экран :) и тогда угол можно будет любой задать:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Трансформация изображения

Сообщение SSecurity » 18.11.2008 (Вт) 9:53

вообщем 26 млн записей в БД не стоили того :)))))
чтоб из потом оттудова слить ещё полвека пройти должно :)))) резоннее картинку заново разбирать на части и вычислять и то быстрее получается.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Трансформация изображения

Сообщение Debugger » 18.11.2008 (Вт) 14:54

Я бы делал так: взял всю твою мелочь по 20x20 в одну текстурищу (а если слишком большое изображение получается - разбил бы heightmap вместе с ней на несколько частей) и делал как в примере
P.S. а подпись ты у кого спер :)
Вложения
Land.rar
(58.39 Кб) Скачиваний: 32

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Трансформация изображения

Сообщение SSecurity » 18.11.2008 (Вт) 20:08

Debugger писал(а):Я бы делал так: взял всю твою мелочь по 20x20 в одну текстурищу (а если слишком большое изображение получается - разбил бы heightmap вместе с ней на несколько частей) и делал как в примере
P.S. а подпись ты у кого спер :)


ну про подпись будь спокоен :)
идея не сперта ... а именно своя Зарегистрирован: 19.08.2003 (Вт) 1:11:)

По поводу проекта - спасибо гляну подробнее, но текстура должна быть неоднородная (мне нужно итоговый МЭП потом уже разукрашивать нормальными объектами)

Спасибо:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот и гости: 50

    TopList