Шумоподавление на чипе современных 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 и полноформатные фотосенсоры.
Читать далее

Настройка Dual-Head в Linux на примере ноутбука Asus M5200AE



24 коммент.
Итак, нужно настроить режим отображения на два разных монитора - чтобы между разными экранами можно переносить окна приложений. Такой режим, в отличие от Clone Mode (клон, на второй мониторе тоже, что и на первом), называется Dual Head ("две головы", второй монитор отображает другое).

Для этого нужно поправить xorg.conf, и править его придётся несколько больше, чем для Clone mode. В режиме Dual Head требуется описать два монитора и две видеокарты в xorg.conf (напомню, что конфиг этот лежит в /etc/X11/ и отвечает за весь графический режим). После того, как всё это будет сделано, нужно включить расширение Xinerama. Ну и естественно, перед тем, как вы начнёте крошить ваш xorg.conf, нужно сделать резервную копию старого конфига.

Режим Dual Head в Linux - xrandr
Если у вас свежий дистрибутив и xrandr новых версий (старше 1.2), то двухголовый режим можно сделать так:
xrandr --output VGA --auto --output LVDS --mode 1280x800 --left-of VGA
При этом xrandr может выдать ошибку, что режим не может быть установлен - для этого нужно увеличить размер виртуального экрана в конфигурационном файле
/etc/X11/xorg.conf следующим образом:

Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"

Subsection "Display"
Virtual 4096 2048
EndSubsection
EndSection
Для отключения режима dualhead в linux пишем в консоли:
xrandr --output VGA --off
Если на консоль у вас аллергия и вообще терминалофобия, есть графические утилиты вроде gxrandr.

Режим Dual Head в Linux - вариант с Xorg.conf
Итак, привожу рабочий конфиг xorg.conf Что-то в нём будет отмечено серым - это не важно. Цветом я выделил наиболее критичные куски, которые ещё отдельно прокомментирую. Начало конфига трогать не надо - там нет ничего, что относится к двухголовости: пути к шрифтам и настройки раскладки клавиатуры. Поэтому пропускаем и идём дальше.

# XF86Config-4 (XFree86 X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the XF86Config-4 manual page.
# (Type "man XF86Config-4" at the shell prompt.)
#
# This file is automatically updated on xserver-xfree86 package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xfree86
# package.
#

Section "Files"
# FontPath "unix/:7100" FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/lib/X11/fonts/Type1"
FontPath "/usr/share/fonts/X11/CID"
FontPath "/usr/lib/X11/fonts/CID"
FontPath "/usr/lib/X11/fonts/Speedo"
FontPath "/usr/share/fonts/X11/100dpi"
FontPath "/usr/lib/X11/fonts/100dpi"
FontPath "/usr/share/fonts/X11/75dpi"
FontPath "/usr/lib/X11/fonts/75dpi"
EndSection

Section "Module"
Load "bitmap"
Load "dbe"
Load "ddc"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "record"
Load "vbe"
EndSection

Section "InputDevice"
Identifier "Default Keyboard"
Driver "keyboard"
Option "CoreKeyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc102"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
EndSection

Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
EndSection


Теперь переходим к разделу Device - тут надо описать две видеокарты. Названия идентификаторов важны, так как на них
вы будете ссылаться дальше. Мониторы имеют номера 0 и 1, BusID остаётся один и тот же.
Section "Device"
Identifier "Intel Corporation Intel Default Card"
Driver "i810"
BusID "PCI:0:2:0"
Option "MonitorLayout" "CRT,LFP"
Screen 0
EndSection

Section "Device"
Identifier "Intel Corporation Intel Default Card External"
Driver "i810"
BusID "PCI:0:2:0"
Option "Display" "CRT"
Option "MonitorLayout" "CRT,LFP"
Screen 1
EndSection


Отлично, теперь к двум видеокартам надо описать два монитора. Будьте внимательны и указывайте правильные частоты HorizSync и VertRefresh.
Section "Monitor"
Identifier "Default Monitor"
HorizSync 28-50
VertRefresh 43-75
Option "DPMS"
EndSection

Section "Monitor"
Identifier "External Monitor"
HorizSync 30-81
VertRefresh 56-75
DisplaySize 372 301
Option "DPMS"
EndSection


Дальше описываем разрешения, которые могут реализовать наши мониторы - не перепутайте частоты для Default monitor и External monitor. Также следует указать правильные идентификаторы видеокарт.
Section "Screen"
Identifier "Default Screen"
Device "Intel Corporation Intel Default Card
Monitor
"Default Monitor"
DefaultDepth 24
SubSection "Display"
Depth 1
Modes "1024x768"
EndSubSection
SubSection "Display"
Depth 4
Modes "1024x768"
EndSubSection
SubSection "Display"
Depth 8
Modes "1024x768"
EndSubSection
SubSection "Display"
Depth 15
Modes "1024x768"
EndSubSection
SubSection "Display"
Depth 16
Modes "1024x768"
EndSubSection
SubSection "Display"
Depth 24
Modes "1024x768"
EndSubSection
EndSection

Section "Screen"
Identifier "External Screen"
Device
"Intel Corporation Intel Default Card External"
Monitor
"External Monitor"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
EndSection

А если вы хотите таскать окошки приложений между мониторими, нужно включить расширение Xinerama (оно содержится в пакетах libdmx1 и libxinerama1).
Section "ServerLayout"
Identifier "Default Layout"
Option "Xinerama" "true"
Screen 0 "External Screen"
Screen 1 "Default Screen" LeftOf "External Screen"
InputDevice "Default Keyboard"
InputDevice "Configured Mouse"
EndSection

Section "DRI"
Mode 0666
EndSection
Указание параметра LeftOf, как можно догадаться, делает внешний экран слева от основного.

Если Xinerama не включить, то при старте иксов на внешнем мониторе появится стандартная сеточка, но перетащить туда ничего не получится.

Что ещё
Режим Dual Head особенно актуален: например, вашему научруку резко плохеет от текста статьи, оформленной в LaTeX, но текст нужно обсудить, а перегон в Word это безумие. Что делать? Берём и настраиваем режим Dual Head, на главном мониторе у вас Kile, и вы можете править текст. На внешний монитор вытаскиваем Kdvi, где текст отрисовывается в конечном виде. Все довольны и счастливы: и вы работаете в привычной среде, и ваше начальство видит привычную картинку.

Ссылки

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

Немного о lossless кодировании видео в Linux - сжатие видео без потерь



12 коммент.
Некоторое время назад была потребность в том, чтобы сжать видеофайл без потерь в Linux (lossless compression) и воспроизводить сжатый фильм без пропуска кадров. Задача в меру прикладная, и может быть, кому-нибудь будет интересно.

Итак, мы имеем установленный mencoder в Debian GNU/Linux и настойчивое желание сжимать видео без потерь.

Сжимаем видео с помощью Mencoder
Для этого мы отобрали пару кодеков с lossless и начали сжимать наш видеоролик. Исходно в нашем распоряжении был видеоролик размером 341 Мб, в котором полутоновая картинка перемещалась по экрану. Нужно было сжать без потерь ролик так, чтобы он и места занимал немного, и воспроизводился без торможений.


Сжатие FFV1
Сначала сжимали кодеком FFV1 командой:
mencoder -ovc lavc -lavcopts vcodec=ffv1 video-before.avi -o video-compressed-ffv1.avi
Сжалось до 18Мб, что очень хорошо. Однако при попытке такой сжатый файл воспроизвести, возникли проблемы: Mplayer (как и другие) сильно грузит процессор и видео не успевает воспроизводиться с заданным FPS. О том, какие страдания были с воспроизведением и как мы их героически решали, будет сказано ниже.


Сжатие huffyuv
Ещё один метод сжатия без потерь, но жмёт он хуже, чем FFV1, зато быстрее воспроизводится и меньше грузит процессор. При этом использовали mencoder для сжатия huffyuv с параметрами:
mencoder -ovc lavc -lavcopts vcodec=ffvhuff:vstrict=-1:pred=2:context=1:format=422p video-before.avi -o video-compressed-ffvhuff.avi
Получилось видео на 99Мб, что тоже неплохо. Однако при воспроизведении оказалось, что происходит конвертирование в другое цветовое пространство 420p и мы решили отказаться от такого финта:
mencoder -ovc lavc -lavcopts vcodec=ffvhuff:vstrict=-1:pred=2:context=1 video-before.avi -o video-compressed-ffvhuff-420.avi
при этом сэкономили ещё почти 20 Мб - фильм стал занимать 80Мб и воспроизводиться чуть глаже.

Остановившись на сжатии huffyuv без опции format=422p, мы стали перебирать варианты воспроизведения видео с минимальными тормозами. История на этом не кончается...


Воспроизведение видео с помощью Mplayer
Видео у нас сжато слабо, воспроизводить надо без задержек и железо скажем сразу весьма чахлое. Как проигрывать видео в таких условиях?

Перво-наперво, используем замечательные возможности Mplayer по выводу видео куда и на что угодно: поэкспериментировать с параметром -vo было здравой идеей, и через некоторое время мы остановились на варианте -vo gl и -vo sdl для нашей задачи. Однако иксы - это хорошо, но хочется выводить видео на чёрный экран без всяких засветок.

Далее, чтобы отвязаться от дисковой подсистемы как можно больше, используем возможность Mplayer кешировать видео:
mplayer -vo gl -cache 65535 -cache-min 98 video-compressed-ffvhuff.avi
Это значит, что мы просим сделать Mplayer кеш на 64Мб и заполнять его не менее чем на 98%. Это сильно помогло делу, но это ещё не всё.

Условия нашей задачи в меру экзотические: нужно проигрывать видео без масштабирования, "как есть", и желательно на чёрном экране без фона, с максимально возможной плавностью. Всё осложняется тем, что компьютер, на котором видео будет воспроизводиться, управляется Windows, и Linux там можно задействовать только в режиме LiveCD.

Идём дальше и привлекаем для наших нужд Knoppix. В арсенале его параметров загрузки есть неприметный параметр fb1280x1024 для работы с framebuffer. Замечательное дело, и мы решили этим воспользоваться. У нас теперь появилась графическая консоль, чёрная и мрачная, как полярная ночь.

Теперь, чтобы воспроизвести сжатое нами видео, копируем видео в память на Knoppix в каталог Desktop. После этого воспроизводим наше многострадальное видео в консоли так:
mplayer -vo fbdev -cache 65535 -cache-min 98 -quiet video-compressed.avi
Ключик -quiet нужен для того, чтобы при воспроизведении Mplayer не выводил статистику в бегущей строке. Всё, после этого получаем фильм на чёрном экране, который воспроизводится плавно и без затей.

Скорость воспроизведения в Mplayer
На всякий случай, если потребуется запускать фильм с другой скоростью, всегда можно попросить Mplayer изменить число кадров в секунду (вплоть до 1 кадра в секунду) так:

mplayer -fps 1 video-compressed.avi
Эта команда будет воспроизводить фильм со скоростью 1 кард в секунду.
(спасибо тов.linuxfreshman за наводку)

Выводы и ссылки
Воспроизведение таких огромных файлов с большим FPS (у нас это 40FPS) - действительно непростая задача, на любой ОС. Надеюсь, что эта заметка пригодится не только нам, но и тем, кто хочет сжимать видео без потерь. Напоследок приведу интересную ссылку на перечень кодеков, который имеется в арсенале libavcodec.
Читать далее

Как сделать мобильную версию блога на Blogger?



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

Как сделано
Всё довольно просто - есть такой замечательный сервис под названием mofuse, который за несколько минут сделает вам мобильную версию вашего блога вида XXX.mofuse.mobi

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

Идея такая: mofuse берёт вашу RSS-ленту блога и транслирует её по адресу XXX.mofuse.mobi в очень облегчённом виде. При этом mofuse будет сжимать и масштабировать картинки в постах, чтобы они быстрее загружались на мобильное устройство. Можно вставить свои страницы и ссылки, сделав таким образом мини-сайт с транслируемым RSS-потоком.

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

Пример того, что получилось у меня, находится по адресу http://mydebianblog.mofuse.mobi/
Прямую ссылку сразу на мобильную версию я уже повесил в боковой панели блога (пока в режиме тестирования), но в общем смотрится на мой взгляд неплохо.

Работу mofuse я проверил на своём смартфоне Motorola A1200E и планшетке Nokia N800. В обоих случаях всё выглядит хорошо: есть трансляция короткой RSS-ленты и гуглопоиск по сайту. В общем это получается мобильная версия всего блога, содержимое которого просто подгоняется под формат отображения на мобильных устройствах.

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

P.S. Кроме этого, перевёл Feedburner-ленту в Google, измениться ничего не должно (старая лента должна работать). После перехода адрес ленты поменялся на http://feeds2.feedburner.com/debianletters но менять его не обязательно: Гугл обещает, что работать будут оба адреса. Это так, на всякий случай.
Читать далее

Установка MikTeX в Windows



14 коммент.
Время от времени мне присылают письма и спрашивают коллеги - как установить LaTeX в Windows. Далее небольшое руководство по установке дистрибутива MikTeX для глобальной и надёжной ОС Windows.


Установка MikTex.

1. miktex\setup\setup.exe
После этого следует довольно длинная процедура распаковки архивов и установки MiKTeXa версии какой-то выше чем 2.0
Лучше не отменять установку какого-то там TeXTree. Говорят, так лучше работает.
На вопрос об incorporated лично я отвечаю "нет".
Распаковывается и устанавливается действительно ооооочень долго.

2. В корневом каталоге запускаем инсталлятор интегрированной оболочки. Это может быть WinEdit (платный), LyX или TexnicCenter.

3. Настраиваем интегрированную оболочку: прописываем пути к latex-овским командам (если они не прописаны), убираем ненужные меню и прочее.

4. MikTex и русский язык: чтобы при наборе русских букв не вылезала абракадабра, надо всего лишь изменить шрифт. Нажмите Options\Fonts\Courier Cyrillic .

5. Чтобы ТеХ автоматически переносил русские слова (английские и так
будет), надо сделать следующее:

А) MiKTeX Options (кнопочка с шестеренками), далее Languages. Здесь
поставить флажок напротив russian ruhyph.tex .

Б) Пуск\Выполнить
Нужно выполнить две команды (пробелы важны):
initexmf --dump
initexmf --find-tex language.dat

Если не заработает, найдите через поиск файл initexmf и укажите полный путь, примерно так:
C:\Programs\texmf\miktex\bin\initexmf --dump
C:\Programs\texmf\miktex\bin\initexmf --find-tex language.dat
Настоятельно рекомендую сначала попробовать без пути. А то иногда не
работает с путем.

6. Установить ghostscript и imagemagick, для возможности работы с PostScript и конвертированием изображений в разные форматы соответственно.

7. Установить программу для работы с библиографической базой данных JabRef. Идём в интернет и качаем оттуда последнюю версию. Получаем файл .jar, который запускается при помощи Java. Java в Windows, конечно, нет - надо скачивать Java Runtime Environment и устанавливать её.

В общем, дружественная такая процедура. Главное - не терять присутствие духа и стоически бороться.

Компромиссный вариант

Если нужно просто немного поработать с LaTeX-документами в Windows и при этом не устанавливать ничего, можно воспользоваться TexMaker Portable, о котором я уже писал. Версия TexMaker для Windows имеется тут.
Читать далее

Внимание! Блог меняет название, тематику и владельца



40 коммент.
Уважаемые читатели блога "Записки дебианщика"!

Мы рады вам сообщить, что с 1 апреля 2009 года блог "Записки дебианщика" переименован в блог "Vista и Linux" и перемещён на блогодвижок Microsoft Live Spaces. Новая RSS-лента записей блога находится по этой ссылке. В скором времени будут подготовлены статьи о настройке и подробностях работы глобальной и надёжной операционной системы Microsoft Windows Vista.

Автор блога, г-н virens, доставлен в следственный изолятор ближайшего отделения корпорации Microsoft до выяснения обстоятельств. В данный момент с г-ном virens проводятся жёсткие разъяснительные беседы и прочие оперативно-следственные мероприятия, в ходе которых он должен уяснить себе всю глубину собственных заблуждений относительно движения Open Source. После этого г-н virens будет принят в состав Microsoft Documentation Team в качестве технического писателя документации для OS Windows Vista за еду. В случае проявления неповиновения г-н virens будет сослан на исправительно-трудовые работы в Тундру на лесоповал в колонию строгого режима на 25 лет без права переписки.

Однако нет повода для беспокойства*: дознание ведут опытные сотрудники Отдела по борьбе с ересью и инакомыслием корпорации Microsoft. Мы уверены, что г-н virens примет правильное решение и вскоре вернётся к привычному образу жизни. В ближайших планах намечена публикация статей о самой справделивой лицензии Microsoft EULA, сверхнадёжной серверной платформы Microsoft IIS и лучшей десктопной всех времён и народов OS Windows Vista.

С уважением,
Microsoft Documentation Team,
Российское отделение корпорации
Microsoft.


* С завтрашнего дня чтение блога станет платным. Для просмотра документации пользователям следует установить в броузер Microsoft Internet Explorer специальный модуль DRM и оплатить месячный абонемент - всего 99$. За чтение статей, содержащих упоминание торговой марки UNIX, следует заплатить отдельные лицензионные отчисления авторам и владельцам UNIX, корпорации SCO Group.
Читать далее

Как составить резюме в LaTeX: пример CV оформленного в LaTeX



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


Что нужно для составления резюме 

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

Итак, нужно скачать moderncv, и распаковать его. Вместе с пакетом идёт пример составления резюме для John Doe (типа Василий Пупкин), который можно найти в файлах template_en.tex или jdoe_classic.tex в архиве moderncv. 


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


Рецептура составления резюме с помощью moderncv и LaTeX
По умолчанию классическое резюме цветное, хотя для удобства печати его можно сделать чёрно-белым:
\moderncvtheme[grey]{classic}
Можно использовать и цвета (возможные значения 'blue', 'orange', 'red', 'green', 'grey'). Так же вместо классического стиля CV можно использовать более свободный:
\moderncvtheme[grey]{casual}
В любом случае стоит поставить кодировку UTF8 внутри документа:
\usepackage[utf8]{inputenc} % replace by the encoding you are using
Это даст возможность копировать текст из PDF документа любыми средствами и на любых языках, что в случае с резюме весьма важно.

Дальше пойдёт заполнение разделов: образование, опыт работы и так далеее. Здесь есть небольшая тонкость: в стилевом файле предусмотрен объект \cventry{}{}{}{}{}{} с кучей опций внутри. Это пригодится, когда нужно одним блоком разместить много информации. Например:


\cventry{2006-2009}{Ph. D. (planned) Physics and Math}
{Moscow Engineering Physics Institute, Russia}
{\newline Subject: optical cryptography in an incoherent quasimonochromatic light, digital image processing, and high dynamic range imaging}
{\newline Supervisors: Manykin~E.A.~(RRC Kurtchatov Institute), Bykovskiy~A.Y.~(Lebedev Physical Institute, LPI), Starikov S.N.~(MePHI)}
{}

Каждый блок текста в фигурных скобках будет продолжать текущую строку, и чтобы начать новую строку, надо оповестить об этом LaTeX. Поэтому не стесняйтесь вставлять для \newline перехода на другую строку.

Для более коротких строчек в резюме используется \cvline{}{}
Вот например так:

\cvline{2005}{Moscow Telecommunication Conference Award.}
Есть в moderncv такой раздел, как Computer Skills, и там реализовано перечисление \cvcomputer. Оно будет набирать ваши компьютерные таланты в две колонки - не знаю, удачный ли это ход. Если что, можно вместо \cvcomputer использовать \cventry что в приводимом здесь примере и делается.

% Publications from a BibTeX file
\nocite{*}
\bibliographystyle{unsrt}
\bibliography{publications} % 'publications' is the name of a BibTeX file

Если ваше резюме предполагает наличие публикаций в научных журналах, то их нужно экспортировать в отдельный bib-файл publications.bib и скопировать в каталог, в котором находится теховский файл с резюме (имя для bib-файла можно подобрать любое). Вы ведь используете библиографические базы, правда? Если нет, то начать делать это очень легко.

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

После всех вышеописанных движений у вас должно получиться красиво оформленное резюме (которое в англоязычном мире называется CV, оно же Curriculum Vitae), например:




Это сокращённое резюме Василия Пупкина, LaTeX код которого можно скачать по этой ссылке. 


Изменение начертаний шрифтов 
Шрифты по умолчанию вполне разумны, но если хочется изменить шрифт, то можно попробовать следующее:
  
%%%% <======== Changing fonts in the CV - select one of the options %%%%%%%%%  
\renewcommand{\rmdefault}{cmr} % Шрифт с засечками  
\renewcommand{\sfdefault}{cmss} % Шрифт без засечек  
\renewcommand{\ttdefault}{cmtt} % Моноширинный шрифт %%%% 
<======== Changing fonts in the CV - select one of the options %%%%%%%%%

При этом шрифты поменяются во всём резюме.


Русский язык в резюме modernCV
Вообще-то считается хорошим тоном составлять резюме на английском языке, дабы бляснуть своими глубокими познаниями языка вероятного противника :-) Если же блистать нечем или этого не требуется, можно заставить moderncv переваривать русский язык. Для этого требуется вставить следующее в преамбулу документа:

%%%%% <======== THIS IS FOR RUSSIAN RESUME %%%%%%%%%
\documentclass[11pt,a4paper,russian]{moderncv} 
\usepackage[T2A]{fontenc} 
\usepackage[utf8]{inputenc} 
%%%%% <======== THIS IS FOR RUSSIAN RESUME %%%%%%%%%

При этом стоит проверить, что у вас кодировка текста в редакторе выставлена как utf8.

Вот так может выглядеть резюме бравого инженегра Василия Пупкина на хохруссише:




Вместо заключения

Пакет moderncv переделывается авторами часто и весьма агрессивно, так что этот пост может несколько устареть. Дополнительные детали по шрифтам можно найти на ЛОРе. Тем не менее, приведённых рекомендаций должно быть достаточно для старта.
Читать далее