Форум: "Media";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
ВнизСшивка изображений Найти похожие ветки
← →
vbazik (2002-04-11 18:28) [0]Есть два фрагмента изображения, полученные путем сканирования картинки на сканере с некоторым перекрытием. Необходимо сшить (объединить) два изображения. Проблемы возникают при больших размерах фрагментов. Кто пробовал решать подобную задачу поделитесь опытом. Спасибо
← →
CyberStorm (2002-04-13 05:42) [1]Сшивку сканированных изображений имеющих частичное перекрытие друг друга можно осуществить путем привязки ключевых точек (реперных) на обеих картинках. Раз есть перекрытие, значит на обоих картинках есть общие точки, вот их и отмечаешь. Затем создаешь TBitmap с размером равным двум картинкам рисуешь в нем первую картинку, затем вычисляешь координаты второй картинки с таким учетом, чтобы помеченные тобой заранее общие точки совпали по координатам. При таком алгоритме сшивки можно даже объединять отсканированные с разным разрешением картинки.
Удачи!
← →
bazik (2002-04-13 11:56) [2]to CyberStorm >
Благодарю за ответ. К сожалению проблема заключается не в отсутствии знания подхода к решению вопроса. Отметка совместных точек, вычисление смещений, углов поворота и масштабов – все это реализовано без проблем. Бяда заключается в следующем. Мне нужно реализовать сшивку как можно большего числа отсканированных фотографий, снятых с перекрытием, в единый массив. Размеры отсканированных фрагментов достигают 40..50Мб. Утык возникает при процедуре поворота фрагмента более 3..5МБ или при расширении результирующего изображения до определенного предела. На малых фрагментах (до 3Мб Gray) все вроде бы нормально. Поворот реализован на Scanline. Как только размеры больше возникает ошибка выполнения. (Под W98 Scanline выдает какой-то сумасшедший, непредсказуемый адрес с последующим Message “Параметр задан неверно”) Причем на NT это проявляется на больших пределах(40..50Мб) под соусом ‘Не хватает памяти’, хотя памяти еще до черта (ОЗУ 512 и файл подкачки до 1Gb и до скольки нужно). Пробовал различные библиотеки типа ImageLib, Envision и др. – бесполезно. Крайний раз пытался реализовать с использованием FastLib но уткнулся в проблему передачи данных от TFastDIB к Timage и наоборот. Хотя TFastDIB и крутит файлики до 250Мб и при этом шустрей чем кто либо, но использовать это у меня не получается, так как передать содержимое в Timage не через copyrect ни через OLE или еще как то не выходит. Выход один есть – запись в BMP файл, затем считывание из файла уже в TIMAGE, но это долго и как-то невкусно. В общем пока грустно, и периодически хочется кого нибудь укусить :) :((((. Кинул клич на форум – может кто и откликнется либо с общей задачей либо с фрагментами неутыка. Кроме поворотов есть еще проблемы с пачканием фрагмента черными точками при копировании, искажениями геометрии и ряд других проблем. Если кто откликнется - искренне благодарен. Спасибо за терпение при прочтении монолога.
← →
CyberStorm (2002-04-13 12:15) [3]To Bazik >
Да, такая проблема и у меня возникала :-(
Единственный выход из создавшейся ситуации IMHO: работать с растрами без VCL, т.е. создать большой буфер (желательно с использованием FileMapping) и все операции по сшивке производить в нем "вручную" - своими низкоуровневыми функциями. Без ассемблера здесь не обойтись. После подготовки можно загружать в TImage из файла отображенного в память - получится несколько быстрей.
PS.
Сейчас занимаюсь созданием аналога класса TBitmap для работы с очень большими растрами - недели через 2 думаю закончу, тогда покажу и объясню что к чему :-)
← →
vbazik (2002-04-13 12:32) [4]to CyberStorm >
Cпасибо. Буду рад дальнейшему общению. Vbazik@mail.ru
← →
MBo (2002-04-13 14:35) [5]Intel Image Processing Library
developer.intel.com
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c