Обработка изображений: История одной камеры



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


Хотелось как лучше,
получилось - как всегда
(с) Золотая Классика


Фотографии в полной темноте
Иногда нужно сделать фотографию либо в полной темноте, либо в условиях плохого освещения. Для этого сначала надо навестись на резкость - а света мало. Что можно сделать? Например, подсветить это вспышкой, однако это может испортить снимок (например, если снимается животное в темноте) или сильно посадить аккумуляторы.

Что придумала компания Sony в своём фотоаппарате Sony DSC-V1? Она вставила туда ИК-подсветку и механически отодвигаемый ИК-фильтр. Очень интересное решение: вроде бы обычная цифровая камера, но есть возможность снимать не только в видимом, но и в инфракрасном диапазоне.
Зачем на матрице ИК-фильтры? Очень просто: дело в том, что твердотельные матрицы очень воспринимают ИК-диапазон - максимальная чувствительность обычно в районе 800 нм. Если ИК-фильтр перед матрицей не поставить, это собьёт цветопередачу на снимке.
Возможность съёмки в ИК-диапазоне сильно расширяет возможности фотографа. В ИК деревья с листьями выглядят как покрытые снегом, а облака отлично прорабатываются (в ИК "дымка" прозрачна). Практически вся зеленая растительность отлично отражает ИК. А значит, на снимке будет не черной, как могло бы показаться через красный светофильтр, а ярко-белой. А небо и вода, наоборот, становятся темным - почти черным. Облака при этом остаются ярко-белыми. Очень красивыми получаются снимки с растительностью и камнями: белые листья хорошо контрастируют с темным камнем.

Какие же ещё применения можно найти съёмке в ИК-диапазоне? Ну, например, можно прочесть текст, залитый чернилами, осветив его ИК-прожектором и сфотографировав.



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

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

Фотоаппараты с режимом ``ночной съемки`` (например, NightShot у Sony, NightView или MagicVU у Panasonic), имеющие отключаемый (убираемый механически) фильтр, больше не производятся, но дело их живёт. Есть несколько компаний, предлагающих за несколько большую стоимость серийные фотоаппараты, из которых убраны ИК-фильтры - таким образом, вы можете использовать её и как ИК-камеру, и как обычную фотокамеру. Эти компании обычно занимаются ещё и производством светофильтров.


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



Демонтаж ИК-фильтра - дело непростое и вы запросто можете повредить камеру: её придётся разбирать с задней части почти полностью - вынимая электронные платы и отсоединяя кабели.


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

А вы говорите, что ИК-спектр и прочие физические термины - тоска зелёная...
Читать далее

Отслеживание версий документов LaTeX с помощью скрипта на Python



18 коммент.
... и сверху ещё майонезом полить :-) На самом деле, задача вполне актуальная, а именно: есть документ LaTeX, с которым работает много людей - в документ вносятся правки. Большинство людей LaTeX не приемлют по личным причинам. По рукам ходит много распечаток документа разных версий, и нужно отслеживать, какая версия документа у каждого из них.

Публикуемое решение задачи довольно простое: LaTeX с помощью скрипта на Python узнаёт номер версии документа, находящегося под контролем системы управления версиями Subversion, и впечатывает в документ номер версии.
В примере приводится система контроля версий Subversion, о которой уже говорилось, но при желании можно использовать вашу любимую систему контроля версий.

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

Далее нам нужно в текст LaTeX-документа добавить скрипт на Python. Для этого сначала нужно научиться вызывать Python внутри LaTeX, что довольно просто благодаря замечательной статье Python внутри LaTeX ув. тов. jetxee. Итак, требуется:

  • скачать файл python.sty и скопировать его в каталог с документом;
  • в документе в преамбуле включить \usepackage{python};
  • внутри документа фрагменты кода на Python помещать в окружение \begin{python} ... \end{python} - теперь всё, что они выведут, станет частью конечного документа;
  • запускать LaTeX теперь нужно с опцией -shell-escape для запуска встроенного кода из-под LaTeX
Ну и, естественно, нужно иметь рабочий Python на машине. Впрочем, если у вас десктоп с графической оболочкой и обвешан разными рюшками, Python у вас скорее всего уже есть.

Так, всё по отдельности у нас есть, и осталось запалить всё это вместе. Для этого в документ вставляем код (кусок реального документа, чтобы было понятно):

\documentclass[a4paper,10pt,oneside]{article}
\usepackage[T2A]{fontenc}
\usepackage[koi8-r]{inputenc}
\usepackage[russian,english]{babel}
\usepackage{amssymb,amsfonts,amsmath,mathtext}
\usepackage{cite,enumerate,float,indentfirst}
\usepackage{caption2,tabularx}
\usepackage[dvips]{graphicx}
\graphicspath{{pictures/}}

%<--------------Pythonated trick starts HERE!
\usepackage{fancybox,fancyhdr}
\usepackage{python}
\fancyhead[R]{}
\fancyhead[L]{}
\fancyhead[C]{}
\fancyfoot[R]{}
\fancyfoot[C]{\textit{\textbf{\input{svnstatus}}}}
\fancyfoot[L]{}
\begin{python}
#! /usr/bin/python
import os, string
cmd = 'svn status ИМЯФАЙЛАТУТ.tex -v'
fpipe = os.popen(cmd)
piperesult = fpipe.read()
fpipe.close()
results = piperesult.split()
if results[0] == 'M':
out = 'Subversion revision of this document is '+results[1]+', last modified by '+results[3]+', STATUS: '+results[0]
else:
out = 'Subversion revision of this document is '+results[1]+', last modified by '+results[2]
FileName='svnstatus.tex'
fout=open(FileName,'w')
fout.write(out)
fout.close()
\end{python}
%<--------------Pythonated trick ends HERE!


\makeatletter
\bibliographystyle{unsrt} %Стиль библиографических ссылок БибТеХа
% Заменяем библиографию с квадратных скобок на точку:
\renewcommand{\@biblabel}[1]{#1.}
\makeatother
% Рис.1. - как у нас принято.
\renewcommand{\captionlabeldelim}{.}

% Меняем поля страницы
\usepackage{geometry}
\geometry{left=2cm}
\geometry{right=2cm}
\geometry{top=2cm}
\geometry{bottom=3cm}

\begin{document}

\pagestyle{fancy}


\begin{abstract}
The registration of correlation signals....
\end{abstract}
Небольшие комментарии к коду. Я использовал возможности пакета fancyhdr для того, чтобы вставить упоминание о ревизии документа в колонтитуле - чтобы на каждой странице это было видно. Питонистый скрипт довольно прост, а если вы захотите его оптимизировать - напильник вам в руки.

Как сделать отслеживание версий для Mercurial [добавлено]
Для Mercurial код немного проще, приведу его кусок здесь:
%<--------------Pythonated trick starts HERE!
\usepackage{fancybox,fancyhdr}
\usepackage{python}
\begin{python}
#! /usr/bin/python
import os, string
cmd = 'hg id -n -i'
fpipe = os.popen(cmd)
piperesult = fpipe.read()
fpipe.close()
results = piperesult.split()
out = 'HG Mercurial revision hash of this document is '+results[0]+', revision number is '+results[1]
FileName='paperstatus.tex'
fout=open(FileName,'w')
fout.write(out)
fout.close()

\end{python}
\fancyhead[R]{}
\fancyhead[L]{}
\fancyhead[C]{Page \thepage}
\fancyfoot[R]{}
\fancyfoot[C]{\textit{\textbf{\input{paperstatus}}}}
\fancyfoot[L]{}

%<--------------Pythonated trick ends HERE!

После этого в ваш документ внизу страницы будет вставляться номер его ревизии в Subversion, что будет видно и при печати. Мне это сэкономило много нервов и седых волос.
Читать далее

Шумоподавление на чипе современных CMOS-фотосенсоров



11 коммент.
По материалам кандидатской диссертации

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

Большинство современных цифровых фотокамер оснащены CMOS-сенсорами. Как известно, одним из главных недостатков CMOS-сенсоров является их высокий уровень шума. Тем не менее, современные CMOS-фотосенсоры, произведённые по 4/5Т-технологии, позволяют получать изображения с уровнем шумов, сравнимым с уровнем шумов CCD-фотосенсоров. Это достигается шумоподавлением на самом фотосенсоре и CMOS-пикселе. Данное обстоятельство следует учитывать при проведении измерений и регистрации сигналов на CMOS-фотоприёмники, а так же при оценке характеристик CMOS-сенсоров. 

Широкое применение CMOS-сенсоров связано с их весьма важным достоинством: при увеличении размеров фотосенсора энергетические затраты на передачу данных об изображении практически не увеличиваются. Если количество считывающих каналов в CMOS-сенсорах остаётся неизменным, то энергопотребление сенсора остаётся одинаковым и не возрастает при увеличении размера сенсора (см.Рис. 1). С другой стороны, CCD-сенсоры перемещают зарядовые пакеты, и это существенно более энергозатратно. Убыстрение процесса считывания в CCD-сенсорах так же приводит к дополнительному расходу энергии, что нежелательно в портативной технике. Даже по сравнению с малыми сенсорами, CCD-сенсоры потребляют вдвое больше энергии, чем CMOS, что видно на Рис.1. Сравнение полноформатных, 35-мм сенсоров показывает, что CCD-сенсоры потребляют почти втрое больше энергии, чем CMOS.

Рис.1: Сравнение энергопотребления современных CMOS и CCD-фотосенсоров.
Однако при проведении оценки характеристик CMOS-сенсоров следует учитывать то обстоятельство, что получаемые изображения для оценки темновых и световых шумов в значительной степени предобработаны электроникой камеры ещё до записи в RAW-файл или передачи в компьютер для последующей обработки. Ниже следует краткое описание методов шумоподавления на CMOS-фотосенсорах
Для того, чтобы устранить высокий уровень шумов CMOS-сенсоров, требуется создавать фотосенсоры с большим количеством транзисторов. Именно это позволяет производить шумоподавление внутри каждого пикселя, что приводит к существенному снижению уровня шума. Это потребовало создания сложных технологий 4/5Т производства CMOS-фотосенсоров.

Подавление темновых шумов

Называемый так же FPN, Fixed Pattern Noise, этот шум представляет собой разное смещение уровня сигнала для разных пикселей фотосенсора. В CMOS-сенсорах, помимо FPN, имеется так же неоднородность сигнала по столбцам. Основным методом устранения такого шума является метод CDS, Correlated Double Sampling. Процесс шумоподавления по методу CDS проиллюстрирован на Рис.2.


Рис.2: Метод CDS для подавления фиксированного шума на изображениях, зарегистрированных фотосенсорами CMOS.
В методе CDS производится одновременное считывание светового сигнала и темнового двумя независимыми считывателями. Темновой сигнал накапливается в пикселях фотосенсора, которые защищены от света. Сначала считывается только информация о темновом шуме, потом считывается световой сигнал вместе с темновым шумом. Далее из считанного сигнала вычитается темновой шум. После этого на изображении, зарегистрированным CMOS-фотоприёмником, фиксированный шум FPN компенсирован (см.Рис.3). Для этого использование технологии 4/5T является критичным.

Рис.3: Процесс шумоподавления по методу CDS.
Однако большее искажение в регистрируемое изображение вносит шум, связанный с неоднородностью фоточувствительности. Это вытекает из того факта, что технологически невозможно изготовить миллионы одинаковых CMOS-пикселей с усилителями внутри.

Подавление шума, зависящего от светового сигнала

Так как каждый пиксель CMOS-сенсора содержит несколько транзисторов, управляющих передачей данных, технологически невозможно сделать их идентичными. Это приводит к неоднородности величины сигнала даже при регистрации плоского светового поля, что проиллюстрировано на Рис. 4

Рис.4: Сигнал, подверженный шуму, вызванному неоднородностью фоточувствительности.
Изображения, полученные с ранних образцов CMOS-сенсоров, были подвержены шуму неоднородности фоточувствительности из-за того, что сброс темнового заряда на фотодиодах был неполным (см.Рис. 5)
Сначала производится сброс значения фотодиода, затем производится регистрация полезного сигнала (S). Следует заметить, что в процессе регистрации светового сигнала так же регистрируется и шум (S+N1). Далее считывался сигнал вместе с шумом (S+N1), фотодиод сбрасывался и считывалось значение шума (N2). Это приводило к тому, что на изображении оставался шум.

Рис.5: Неполный сброс значений фотодиодов приводит к считыванию сигнала с остаточным шумом.
Развитие технологии производства фотодиодов по 4/5Т-технологии сенсоров CMOS позволило более эффективно подавлять шумы, связанные с неоднородностью фоточувствительности. Так, был разработан метод полной передачи заряда. Каждый фотодиод содержит ячейку для запоминания темнового шума и ячейку для накопления светового сигнала (см.Рис. 6).

Рис.6: Метод полной передачи заряда для устранения шума, связанного с неоднородностью фоточувствительности.
Сначала считывается остаточный заряд, включающий в себя темновой и световой сигнал. Этот сигнал остаётся в ячейке фотодиоде, хранящей информацию об уровне шума, после чего производится сброс всех фотодиодов матрицы фотосенсора.
После завершения экспозиции, значение сигнала и значение шума считываются независимо - происходит замер текущего уровня шума.
Темновой заряд (N) и световой заряд (S) накапливается в разных ячейках одного и того же фотодиода. После того, как уровень шума (N) считывается, передаётся количество заряда из ячейки фотодиода, которая накапливала световой заряд. Происходит объединение уровней заряда (S+N) и считывание как целого. Так как уровень шума (N) известен для того же фотодиода, происходит их вычитание и, таким образом, считывается только информация о сигнале. Это и составляет основу метода полной передачи заряда
Кроме того, шум, вызванный неоднородностью фоточувствительности, возрастает с увеличением усиления ISO. Поэтому в ряде коммерческих цифровых фотокамер применяются технологии, которые усиливают сигнал в зависимости от уровня ``сигнал/шум'' на изображении. Сигналы с высоким соотношением ``сигнал/шум'' посылаются на усилители с большим коэффициентом усиления. Это позволяет CMOS-фотосенсорам выдавать изображения высокого качества в условиях съёмки, требующих высокого значения ISO и длинных экспозиций.

Ссылки
Пост подготовлен по материалам технической документации компании Canon на цифровые камеры Canon серии EOS и полноформатные фотосенсоры.
Читать далее