logo site
Страницы
  • Карта Сайта
Реклама
Рубрики
  • Basic
  • C#
  • Flash
  • Net
  • Objective-C
  • Pascal
  • Ruby
  • SQL
  • Новости
  • Проектирование и архитектура
  • Фортран
Партнеры: предоставление каналов связи
ноября
25

Журнал Manifold’ а - Пример возобновления фото Прокудина-Горского

Автор: admin, размещено в: Objective-C, комментарии: Комментариев нет

Сегодня я поведаю вам, как мы замечательно делали данное.о програмке по сведению фото

Мы предполагаем вам програмку по уничтожению искажений в разноцветных фото начала минувшего века. Сделанных фотографом Сергеем Михайловичем Прокудиным–Горским, который прилично появился В Муроме Владимирской губернии в 1863 году, скончался в начале сентября 1944 в Париже.

Фотографии Прокудина–Горского дают живой портрет утраченного мира – Российской Империи в канун Первой мировой войны и надвигающейся революции.

В начале 1900–х годов Прокудин–Горский придумал неустрашимый намерение провести фотообзор Российской Империи, который скоро получил поддержку повелителя Николая II. В сущности он спокойно провел обзор одиннадцати ареалов, странствуя в нарочно отлично оборудованном жд вагоне.

Его неповторимые изображения РФ за день до этого революции – произведенные по-человечески на стеклянных негативах – были прикуплены у его преемников Библиотекой Конгресса в 1948 году.

Постановка задачки:

Есть 3 черно–белых изображения, снятые с 3 светофильтрами. И все же если успешно сложить данные изображения, мало-мальски заметны артефакты значительно на приобретенном цветном изображении, обстоятельств коим немного:1) по-особенному радужное смазывание иллюстрации около быстро двигавшихся вещей 2) неровностей более-менее стеклянной имитируемый: царапинки и сколы

Наша задачка состояла в устранении данных огрехов. Несомненно опираясь на навык иных столь восстановительных групп, из РФ и Америки, мы скоро решились вначале насколько возможно скромно уничтожить «радугу», а после этого ретушировать скоро полученную цветную фотку.Причина искажений на периферии в том числе и на неподвижных объектах — не попадание приятель на приятеля каналов довольно наверняка. Следовательно это последствие неровностей пластинки.

Рассмотрим пути решения:Логично разрезать полученную цветную картину на немного перекрывающихся кусочков, дабы специально трудится с ими по отдельности. И действительно после устранения искажений около любого фрагмента, все фрагменты надо смонтировать воедино.У этого расклада 3 изъяна1) Трудоемкость. Так или иначе на телосложение иллюстрации около 3500 на 3500 точек, с разбиением ее на 200 фрагментов, быстро уйдет немного дней. 2) Непонятно, как быть с областями, где лично имеют схожесть по-старому соседние фрагменты.3) Нет полномочия созидать эффект незамедлительно.

Следующий рубеж – данное исследование особой программы.Требования к ней:1) Автоматическое разбиение иллюстрации на фрагменты, и производство их по-старому в единичное целое в последствии работы с взглядов уничтожение реликвий на границах фрагментов3) Немедленный итог4) Возможность отмены неверных деяний5) Сохранение в формате в отсутствии издержек свойства.

просто-таки теоретические познанияо растровой и трехмерной графике, чтоб гораздо взять в толк принцип работы программы.1) Растровые изображения. Видите ли ненамного цветовые каналы.Растровое изображение – данное двумерный массив из точек, расцветка которых быть может добросовестно представлен как композиция 3 весьма свободных расцветок: очень-очень красноватого, воистину зеленоватого, голубого.Чтобы поделить 3 составляющие расцветки, Прокудин–Горский применял цветные светофильтры. По крайней мере кода у него четко возникала надобность самостоятельно продемонстрировать цветное изображение, он стремительно просвечивал черно–попросту белый негатив через подходящие светофильтры, постоянно получая цветное изображение.2) Меппинг, или же наложение растровой структуры.В процессе меппинга любой вершине полигонального объекта ставится в соотношение точка на растровом изображении – структуре.Если спроецировать иллюстрацию на плоскость простым образом, и слепо поменять метод данной проекции, можнож достичь сдвигов прямо-таки отдельных участков изображения, конфигурации их масштаба, поворота.Достоинство такового расклада — по-хорошему абсолютная обратимость. То есть резко меняя прием отображения, мы сознательно не заменяем слишком начальное изображение. Оказывается это дозволяет долго беречь ресурсы машинки.Работая с структурами через библиотеку Open GL, у нас есть возможность во–первых всецело отвлечься от задач преображения растровых изображений при таковых трансформациях, во–вторых срочно принимать на вооружение полностью аппаратное ускорение, регулярно получая итоги очень практически сразу.

При работе с любым фрагментом юзеру предоставляется стереотипный планарный или же равномерный меппинг для любого канала, который он попросту свободен изменять особенно по собственному усмотрению. Тем не менее еще разов отмечу, что пока же юзер обычно действует с каким–то фрагментом, его воздействия всецело более-менее обратимы.

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

Перемещая метки, можнож достигнуть совмещения каналов с допуском до одной точки. Собственно что с лихвой покрывает особенно мудрые необходимости в виде. И в самом деле переходя к иным фрагментам, делается совмещение всей иллюстрации.

Еще некоторые суждения:1) ежели успешно объединить все 3 канала, в полноцветном изображении обнаруживаетсярасхождение каналов, т.е. в том числе и ежели нам превосходно получается хладнокровно объединить их в некоторой не очень совсем большой области, в прочих областях рисунки слишком заметна “радуга” т.к. данные преломления нелинейны, означает, потребуется очень-то индивидуальный расклад к любому фрагменту. Между прочим для данного добровольно присутствует 2 наиболее особенно неоспоримых пути:а) Разрезать сводимую иллюстрацию “внахлест” и потом правильно хотеть сводить достаточно великое количество фрагментов — для фото около 3500х3500 точек данное хотябы 16х16 =256 кусочков т.е. много на взгляд численности объектов для работы.(Впринципе, количество фрагментов может варьироваться исходя из по-своему точной рисунки, хотя неоспоримо, что опосля разбиения нам следует обрести фрагменты объемом около 100х100 точек, дабы в данных пределах разхождение каналов было никак не больше одной точки) Таким образом, в том числе и коль скоро самостоятельно разрезать в целом начальную фотографию и тихо свести все кусочки по отдельности, неизбежно высоко встанут весьма серьезные трудности при попытке нарочно подобрать их все по-особенному в единичное целое. Наоборот будет очень трудно достигнуть неимения реликвий (повреждений) на границах разбиения. Мало того как самостоятельно видите, данный метод резонно считается не совсем только слишком в общем-то сложным в исполнениии, он кроме того хладнокровно портит качество weekend иллюстрации, что при таком варианте неприемлемо.б) Другим логичным вариантом считается исследование некоего узкоспециализированного программ, в отсутствии привязки к слишком конкретному в целом графическому реактору (Фотошопу [Adobe Photshop], Фотопейенту [Corel Photo–paint], или же чему–то еще). Короче, на наш взор прямо-таки логичны прямо-таки последующие притязании:–вероятность работы с картикой по фрагментам( при этом разбиение и сборка обязаны производиться не вручную, а снутри программы)–работа изготавливается самостоятельно с хоть каким из канаов около выбраного фрагмента–все конфигурации показываются незамедлительно–добросовестно учтена вероятность сбережения итога торопливо повторяющий вид налицо готовой картинки в каком-то из напросто графических фоматов (с внедрением совсем не опасного сжатия–lose–less compression)Итак, подозрительно осмотрим принцип работы глубоко разработанной нами программы:Загружаем из файлов поотдельности все 3 канала, после этого пользователь специально подбирает попросту желательный часть сводит его, переходя к иному, и так до завершения работы. По правде говоря, для удобства мы долго делаем разбиение попросту твердым, другими словами единоразовым.(очевидно Мало-мальски в мудрых пределах, темболее, что любой фрагмент при работе к тому же и еще разбивается маркерной сетью)После выбора фрагмента, просто-напросто последующая работа над ним очами юзера выглядит как перетаскивание мркерной сетки над картикой. А кроме того здесь 3 цветам маркеров сильно подходит управление деструкцией сообразных каналов. Одним словом с позиции программы, юзер правит мэппингом (mapping) поигональной плоскости (polygonal surface), на которую мысленно наложена структура (texture), коя так же резонно считается композицией 3 иных структур (деформированных особенно красноватого, слишком зеленоватого, и более-менее синего каналов). То есть как скоро юзер добросовестно перемещает маркер (или же группу маркеров) к примеру столь красноватого расцветки, он следовательно изменяет вид красного канала, программа изготавливает композицию его с 2 иными каналами, а юзер самостоятельно видит впереди себя эффект.Для того, дабы не изобретать велик и правильно использовать аппаратные возможности видеокарты (высоко увеличив следовательно быстродействие) мы правильно используем Open Gl ( open graphic library–www.opengl.org) мы выводим на экран немного очень прямоугольных полигонов на которых проецируется полноцветная структура. Судя по всему мы радушно примем на вооружение тот прецедент, что средствами OpenGl деформировать иллюстрацию (поточнее 1 из ее каналов) очень однозначно не трудоемко–достаточно спроецировать данный канал как структуру на полигональную поверхность т.к. хладнокровно показал програмке юзер, базируясь на расположении маркеров и после этого произвести композицию каналов. К тому же при этом в период работы юзера над фрагментом оригинал любого канала Постоянно не подвергается переменам, они окончательно остаются в памяти видеокарты как три черно–белых структуры, а деструкция часто случается любой разов при изменении положения маркеров и напрямую находится в зависимости исключительно от положения маркеров. Не правда ли это значит, что сдвинув маркер взаправду красноватого канала, а после этого вернув его на место мы предварительно получим вточности туже иллюстрацию как и до его перемещения. Как ни странно это довольно весомо, т.к. когда юзер плотно переместил маркер и итог его не устраевает, ему довольно возвратить его на прежнее место, и данная операция задумчиво не добавит реликвий.Кроме того, представение каналов как структур свободно разрешило более просто одновременно обеспечить просто-таки щепетильную деструкцию любой из их. Допустим дело в том, что ниминуемо при хоть какой деструкции растровой рисунки крайне имеют место быть проблемы по ее преображению, и более-менее дальнейшем представлении итога ввиде по-старому свежего растра. Удивительно, что с внедрением OpenGL чертовски получилось не столько отвлечься от решения данной задачки, хотя доверить ее аппаратным средствам.

Некотоые подробности о лично програмке:— она прописана на языке Objective C и уготована тб другими словами она глубоко трудится ТОЛЬКО на Макинтошах теоретически не менее Power Mac G3, хотя Power Mac G4 Dual 1 Ghz убедительно рекомендуется.Желательно присутствие хотябы 512 Мб физической памяти и видеокарты класса nVidia GeForce 4 или же Ati Radeon 9000 pro с 64 мб видео памяти. То есть во время работы с растрами 4048х4048 16 бит программа часто употребляет в пределах 300–400 Мб физической памяти.

Все товарные символы пренадлежат их почитаемым обладателям.

Оставить комментарий

Вы должны быть зарегистрироавны чтобы оставить комментарий.

  • Категории
  • Новости
  • Популярное
  • Комментарии
  • Архив
Programmirovanie. Все права защищены