10/17/2011

Как склеить фотографии в панораму с помощью nip2

Когда люди задаются вопросами типа "как склеить фотографии в фотошопе" или "чем склеить панораму", то находят программы Photoshop или Hugin. Ответ на этот вопрос становится гораздо менее очевидным, когда нужно склеивать много больших изображений и при этом их просматривать. Фотошопы на таких задачах выпадают в осадок от нехватки памяти, Хьюджины корёжат изображение. Однако в недрах наших дистрибутивов Linux имеется замечательнейшее средство от всех болезней разом обработки изображений, которое называется nip2.


Интродукция: склейка и объединение изображение
Как-то раз в нашу лабораторию постучались соседи и за рюмочкой чая пожаловались на свои беды и несчастья: имеется микроскоп с цифровой камерой, который сканирует некий образец. Происходит всё так: под микроскопом лежит образец, и, участок за участком, производится съёмка поверхности. Выдаётся файл с изображениями участков, и задача - склеить фотографии в одну картину и просмотреть.

Проблема в объединении изображений в том, что они большие и их много. Кроме того, просматривать такое огромное изображение фотошопом не получится - во всяком случае, даже если и получится, то очень небыстро. И тут нам на помощь приходит nip2.

Пример склеивания фотографий в nip2

В nip2 это сделать просто благодаря тому, что отображение картинки ведётся мозаикой - не всё сразу, а лишь частично, что сильно ускоряет работу. Поэтому склеивание изображений будет быстрым; однако к интерфейсу nip2 придётся немного привыкнуть, потому как он есть нечто среднее между Photoshop и Excel. На примерах ниже мы убедимся, что это довольно логичный интерфейс.

Склеить фотографии горизонтально
Открываем последовательно два изображения, которые нужно склеить. Они появятся как две ячейки в таблице nip2. Зажимаем Shift и кликаем последовательно на этих картинках:
From Записки дебианщика

Дальше, не снимая выделения (не кликаем где попало) идём в меню Toolkits - Image - Join и выбираем пункт Left to Right:
From Записки дебианщика

Получаем результат - изображение, склеенное в панораму:
From Записки дебианщика
В появившейся ячейке А4 можно настроить выравнивание (Alignment) и зазор между изображениями. Просмотр склеенного изображения проблем и отъедания всего своп-файла не вызовет. Сохранить результат можно, кликнув правой кнопкой мыши на ячейке со склеенным изображением и выбрав Сохранить как:
From Записки дебианщика


Склейка фотографий вертикально
происходит точно также, но выбираем "соединять сверху вниз" (Top
to Bottom):
From Записки дебианщика

и неизменно превосходный результат:
From Записки дебианщика

И другие возможности
А возможностей у nip2 выше крыши, причём о них многие даже не подозревают. Можно, например, просто вставить кусок одного изображения в другое. Достигается это так:
Toolkits - Image - Insert
Можно также выровнять яркость на отдельных фрагментах изображений (tilt brightness). Это когда одна часть изображения освещена сильнее другой, то есть яркость меняется от края изображения к середине). Это устраняется так: Tools - Filters - Tilt brightness.
Здесь нестандартный интерфейс nip2, использует своё преимущество: при изменении изображения в ячейках, результаты в других ячейках автоматически перерисовываются.
Больше о склейке изображений, рефлектограммах и прочего Rocket Science можно прочитать в примерах [на английском].

Где взять nip2?

Так как nip2 - свободное программное обеспечение, его запросто можно скачать с официального сайта:
  • для Windows
  • для Mac OS X
  • для Linux (source code или поищите в репозиториях своего дистрибутива по названию nip2).
Узнать больше о nip2 можно из обзора и развёрнутого описания, а так же официального сайта [на английском].


Кстати: Блог о nip2

У замечательного графического анализатора nip2 теперь появился свой блог, ведёт который John Cupitt - автор проекта. Блог появился не в последнюю очередь благодаря стараниям и активному багрепортингу скромного автора этих строк: ради поддержки матлабовских MAT-файлов и формата FITS автор водрузил на рабочую машину Виртуальный Ящик с Debian Unstable и красноглазил с напильником и поиском библиотек для сборки последней версии.

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

19 комментариев:

  1. imagemagick же. лучше graphicsmagick (команда montage)

    ОтветитьУдалить
  2. @pigritor комментирует...
    imagemagick же
    Оно не интерактивное, а тут можно мышкой всё делать. И результат сразу посмотреть. В общем, это из серии "как с помощью nip2 отстрелить себе ногу". Да, ещё можно выровнять яркость (в разделе tilt brightness).

    ОтветитьУдалить
  3. Как оно дружит с круговыми панорамами, когда до склейки нужно компенсировать искажения?

    ОтветитьУдалить
  4. Вот чему я у вас в блоге научился, так это писать ковро-посты :-)
    >imagemagick
    Я понимаю, что ещё на движке сайта это незаменимо, а на десктопе-то накой? Вот обязательно найдётся мудрец, который скажет, что консоль рулит.
    Хотя часто оно так и происходит.

    ОтветитьУдалить
  5. Михаил, поправь:
    "меняя изображения в ячейках, результаты в других ячейках автоматически перерисовываются"
    - тогда уж "при изменении изображения в ячейках..." А то получается "подъезжая к городу, с меня слетела шляпа" :)

    ОтветитьУдалить
  6. @. комментирует... 18.10.2011 13:14:00
    Как оно дружит с круговыми панорамами
    Никак. Это просто пример склейки прямоугольных фрагментов изображений в одно очень большое. Иллюстрация возможностей nip2, о которых большинство даже не подозревает.

    @fuck_blogspot комментирует...
    Вот чему я у вас в блоге научился, так это писать ковро-посты :-)
    Хм... ну до гобеленов они по размерам не всегда дотягивают :-) Ну и потом, мы же не хотим быть, как Федорчук, водой из постов которого можно наполнить Аральское море до краёв, верно?

    Я понимаю, что ещё на движке сайта это незаменимо, а на десктопе-то накой? Вот обязательно найдётся мудрец, который скажет, что консоль рулит.
    Мудрец pigritor высказал своё мнение - в общем, правильное. Можно такое сделать и с помощью imagemagick; другое дело, что в nip2 оно вроде как нагляднее и проще. Тем более, что если панораму нужно склеить одну, а не сотню.

    @arcd комментирует...
    Михаил, поправь:
    Да, коряво получилось. Спасибо.

    А то получается "подъезжая к городу, с меня слетела шляпа" :)
    На самом деле, я так примерно и хотел. Но не вышло :-/

    ОтветитьУдалить
  7. >Ну и потом, мы же не хотим быть, как Федорчук, водой из постов которого можно наполнить Аральское море до краёв, верно?
    Не надо, alv - гений, он просто мало пользуется тегом <b

    ОтветитьУдалить
  8. @fuck_blogspot комментирует...
    Не надо, alv - гений, он просто мало пользуется тегом
    Старый, жирный и толстый тролль во мне говорит, что в этом предложении можно вкусно поесть :-) Но я не буду.

    Проблема Федорчука в том, что он пытается угнаться и за линуксами (причём всеми сразу), и за *BSD (начиная с DragonFly и заканчивая обычной фрёй). Ему (да и никому, наверное) это не удастся, потому как всё довольно быстро развивается. От того его знания в юниксах поверхностны, если не сказать хуже. Дело усугубляет его витиеватый слог с претензией на учительство, отягчённый явной склонностью к графомании.

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

    ОтветитьУдалить
  9. А. Федорчук
    Цикл статей на тему "Использование nip2, настройка и автоматизация":
    Вместо предисловия - 14862 знака
    Сравнительный анализ свободных конвертеров, анализаторов и редакторов изображений - 12645 знаков и 42 скриншота
    История возникновения nip2 и попытки интеграции в системах BSD - 44865 знаков и 56 скриншотов
    .....
    .....
    и т.д.
    После положительных откликов в комментариях решено перенести весь цикл на отдельный сайт под наванием "Ниптуада"....

    ОтветитьУдалить
  10. @fuck_blogspot комментирует...
    А. Федорчук Цикл статей на тему "Использование nip2, настройка и автоматизация"
    Ох мать! Вот старик разошёлся-то! :-)

    и т.д.
    Да-да, и так далее.

    отдельный сайт под наванием "Ниптуада"
    Я выше про баянную симфонию именно это и имел в виду: его тянет на графоманию с претензией на эпичность. Федориада, Ниптуада... Гомер курит за углом.

    Ладно, тролль во мне уже наелся. Спасибо, было вкусно :-)

    ОтветитьУдалить
  11. А если серьёзно: мне просто хотелось показать, что возможности nip2 не ограничиваются анализом изображений. Конечно, при работе с ним нужно знать матчасть - это, в общем, исследовательское приложение. Это не фотошоп с кнопками типа "сделай мне зашибись". Документация по нему есть, но автор - научный сотрудник университета, так что он предполагает в пользователе наличие мозгов изначально. Отсюда такая краткость вики и несколько фрагментарная (хотя приличная) официальной документации.

    P.S.> И да, если у тов. @fuck_blogspot закралось подозрение, что я копирую федорчуковские посты, то спешу его [подозрение] развеять. Чужих мемуаров я не чтец и тем паче не копипастер. Но это так, a propos.

    ОтветитьУдалить
  12. >Спасибо, было вкусно :-)
    Да не за что -)

    >Это не фотошоп с кнопками типа "сделай мне зашибись".
    Хочу такой фотошоп, в моём (лицензионном!) под вайном (федора) таких кнопКов нет :(

    >А если серьёзно: мне просто хотелось показать, что возможности nip2 не ограничиваются анализом изображений
    Хороший материал, хорошее оформление, где надо акцентировано, всё путём.

    >И да, если у тов. @fuck_blogspot закралось подозрение, что я копирую федорчуковские посты, то спешу его [подозрение] развеять.
    Не надо спешить, мне даже это в голову не пришло, тем более, что Федорчука (вроде как) никогда дебиан и отдельные спо-шки не интересовали.

    ОтветитьУдалить
  13. Хэй! Что-то комментариев маловато — слишком практичный пост, что-ли? :)

    Спасибо, virens: два раза в год, за несколько дней до начала очередного семестра, я прихожу в корпус и фотографирую доску с расписанием. А так как камера телефона имеет всего лишь 2 мегапикселя, фотографировать приходится кусками. Естественно, искать потом в месиве фотографий нужный день не так уж удобно (что каждый раз подталкивает стряхнуть пыль со своих LaTeX'овских навыков и забацать-таки неземной красоты таблицу с расписанием). Короче, теперь можно будет обходиться панорамкой :)

    И как всегда — парад придирок:

    > Получаем результат - склеенное изображение в панораму:

    Лучше было бы «склеенное в панораму изображение» или «изображение, склеенное в панораму».

    > Можно так же выровнять яркость на отдельных фрагментах изображений

    > а так же как расширения несколько сухой, хотя местами весьма толковой, документации

    Я уже говорил, что эту ошибку можно юзать заместо копирайта? :)

    ОтветитьУдалить
  14. Опечатки в названиях программных продуктов: должно быть Hugin вместо Hudgin, Excel вместо Excell

    ОтветитьУдалить
  15. @Minoru комментирует...
    Что-то комментариев маловато — слишком практичный пост, что-ли
    А так всегда: пишешь что-нибудь нужное - соберёшь два с половиной комментария от полутора анонимусов. Напишешь безделицу типа МСВС - полторы сотни комментов и толпы троллей разной степени жирности и зелёности (включая автора :-)).

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

    Ну да, это в самый раз. Ко мне в своё время пришли соседи из другой лаборатории - они пытались фотошопом склеить фотографии с электронного микроскопа, когда снимали большой и длинный участок какой-то важной им поверхности. Так что пост написан давно...

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

    что каждый раз подталкивает стряхнуть пыль со своих LaTeX'овских навыков и забацать-таки неземной красоты таблицу с расписанием
    Это адский труд. По моему скромному мнению, таблицы в латехе - самый ад.

    И как всегда — парад придирок:
    Дык, разумеется.

    Лучше было бы «склеенное в панораму изображение» или «изображение, склеенное в панораму».
    Второй вариант нравится. Исправлено.

    Я уже говорил, что эту ошибку можно юзать заместо копирайта?
    Ушёл регистрировать торговую марку :-))


    @Анонимный комментирует...
    Опечатки в названиях программных продуктов: должно быть Hugin вместо Hudgin, Excel вместо Excell
    Спасибо, Анонимус! Поправил. Просто ни тем, ни другим не пользуюсь, поэтому названия подзабыл :-)

    ОтветитьУдалить
  16. @pomosh комментирует...
    Может так же подскажите какой программой можно зделать 3Д панораму? И как это происходит?

    Pomosh, а ты сам понял, что спросил!? Я вот тоже не знаю, как это происходит.

    Да, предыдущие комментарии снёс за рекламу в подписи.

    ОтветитьУдалить
  17. Из 3D панорам я видел только обычные круговые нарезки из фото и "двухслойные". Последние знаю, как заделать для уеб-страниц руками, а вот насчёт ленивого софта - донт ноу.

    ОтветитьУдалить
  18. При горизонтальной склейке фотографий есть опция горизонтального выравнивания. А что делать в случае, когда дополнительно требуется вертикальное выравнивание?

    ОтветитьУдалить
  19. @fuck_blogspot комментирует...
    Из 3D панорам я видел только обычные круговые нарезки
    Ну так это ж не тридэ, а баловство.


    @OMI комментирует...
    При горизонтальной склейке фотографий есть опция горизонтального выравнивания. А что делать в случае, когда дополнительно требуется вертикальное выравнивание?
    Честно говоря, не задавался таким вопросом. Кстати, можно автору стукнуть на электропочту - он общительный парень, отвечает быстро.

    Да, OMI, этот nip2 не есть специально заточенный под FITS анализатор - к нему просто прикрутили возможность работы с FITS. Но возможностей по анализу изображений там много.

    ОтветитьУдалить