CHDK и Canon PowerShot G9


Canon PS G9 + USB пульт ДУ

«CHDK is a firmware enhancement that operates on a number of Canon Cameras. CHDK gets loaded into your camera's memory upon bootup (either manually or automatically). It provides additional functionality beyond that currently provided by the native camera firmware».

readme.txt к CHDK

В статье о Canon PowerShot G9 я писал, что всем эта камера хороша, но нет у нее дистанционного управления. И еще, что проблему можно было бы решить с помощью CHDK. Но ОС камеры (DryOS) отличалась от большинства ОС других Canon, к которым к тому времени CHDK удалось применить. В форумах на chdk.wikia.com даже обсуждался вопрос сбора средств для квалифицированного программиста, чтобы он разобрался с этой DryOS. Подходящей CHDK ждать пришлось почти год. И сейчас Canon PowerShot G9 умеет значительно больше того, что позволяет ее стандартная прошивка. Причем, новые возможности можно добавлять самому, освоив не сложный язык написания скриптов, которые интерпретатор CHDK, загруженный в камеру, на лету превращает в команды для электроники и механики.

Зачем

Что такое CHDK и как она может превратить скромную простую камеру в фотокомпьютер писал Владимир Родионов в статье о Canon Power Shot A650IS. Повторяться не буду, напишу лишь о некоторых особенностях текущей CHDK (хотя текущей она уже не является — новые сборки публикуются практически ежедневно) и ее работе с Canon PowerShot G9.

Новые возможности камеры с CHDK

CHDK 095-701 для камеры Canon PowerShot G9 позволяет снимать на выдержках до 64 с (с фирменной прошивкой — до 15 с), с диафрагмами до f/11 (с фирменной прошивкой — до f/8), использовать пульт ДУ и автоматику срабатывания по движению объекта в кадре. Что из этого на самом деле необходимо — зависит от того, что снимаешь. 15 с выдержки, к примеру, иногда не хватает чтобы «поймать» разряд молнии, а 64 c заметно повысят вероятность это сделать. F/11 — как показано в статье «О пейзажной фотографии, глубине резкости, реальном разрешении и камерах разных размеров» ничего хорошего не дает. Диапазон выдержек и реальный диапазон ISO текущая версия CHDK не меняет. Автоматика срабатывания по движению и USB пульт работают.

Как установить

CHDK работает с карты, отформатированной под FAT 16. Отформатировать карту емкостью до 4 ГБ, если компьютер работает под Windows, можно с помощью стандартной процедуры из командной строки (задав команде «format» ключ «/fs:fat»):

Форматирование карты памяти

(Существуют и другие способы, в том числе разбиения памяти SD на блоки, позволяющее использовать и более емкие карты.)

Текущие версии CHDK сделаны так, чтобы с ними мог справиться и фотограф, мало разбирающийся в тонкостях работы с прошивками. Все что нужно — загрузить с сайта архив с CHDK для камеры и разархивировать его прямо на карту памяти c FAT 16 (а не скопировать разархивированный на компьютере набор папок и файлов CHDK!).

Загрузка CHDK на карту памяти

Убедиться, что на карту скопированы нужные файлы и каталоги…

CHDK раздел на карте памяти
Файлы CHDK, загрузочный DISKBOOT.BIN и файл проверки версии прошивки камеры vers.req на карте памяти.

…вставить карту в камеру, включить ее в режиме просмотра снимков, найти пункт меню «обновление прошивки», подтвердить обновление, по окончании процесса вынуть карту из камеры и заблокировать запись (если CHDK надоест или ее нужно оперативно отключить — просто разблокируйте возможность записи на карту) — карта памяти и камера готовы к работе «по-новому»:

Процесс обновления прошивки и настройки загрузки CHDK

Процесс установки CHDK почти автоматизирован. Нужно лишь подтвердить намерение сменить прошивку. Далее, если нет желания каждый раз подтверждать разрешение загрузки прошивки, стоит включить пункт меню «Включить загрузку с карты памяти». И еще можно выбрать язык, к примеру, русский.
Обратите внимание, что при загрузке новой прошивки, на дисплей выводится информация о фирменной версии прошивки, в моем случае G9-100g. Если вы загружаете прошивку не той модификации (100g вместо 100F, 100D, 100H…) могут быть проблемы. Нужно быть внимательным. Остановитесь на этом этапе и скачайте соответствующую CHDK. Впрочем, в дистрибутиве CHDK есть утилитка и для прямого определения версии прошивки камеры vers.req, что лучше сделать прежде других операций.

Использование

После установки CHDK камерой можно управлять с помощью пульта дистанционного управления. Так как ради этой функции мне и нужна была CHDK, то начну описание с нее. Для управления камерой потребуется внешний источник питания с USB интерфейсом. Особенность Canon PowerShot G9 в том, что камера не запускается от 3 вольтовой литиевой батарейки-таблетки, как многие другие камеры (я не проверял, поверил информации с сайта CHDK). Пульт можно сделать из любого стандартного источника для зарядки устройств через USB (5В). Я использовал контейнер под 4 аккумулятора АА (фотография в начале статьи). Он оснащен включателем, который можно использовать, как спусковую кнопку. Лучше, кроме включателя, добавить еще две параллельные нажимные кнопки с фиксацией и без.

Пульт может запускать камеру из двух режимов работы — без загруженного и запущенного скрипта и с ним. Первый случай самый простой и не требует никаких особенных настроек, кроме включения режима пульта из раздела CHDK «разное» — «параметры удаленного пульта»:

Параметры пульта

Если этого не сделать, пульт при подаче напряжения будет просто включать камеру в режим просмотра последнего сделанного снимка. Если пульт включен, то камера будет реагировать на него следующим образом: подача напряжения — «полунажатие спусковой кнопки» (замер экспозиции и автофокусировка). Чтобы сделать снимок, нужно подать второй сигнал «выключение-включение». Поэтому удобно пользоваться пультом, оснащенным нажимной кнопкой без фиксации. Тогда быстрое двукратное нажатие приведет к съемке без точной автофокусировки, а более медленное к нормальному режиму, эквивалентному привычному «полунажатию-нажатию» спусковой кнопки.

Можно заставить пульт работать и в другом режиме. Если в разделе «разное» (или «скрипты») — «параметры удаленного пульта» включить две верхние опции пульта в подменю «синхронизуемый удал. пульт» («Вкл. удал. пульт» и «Вкл синхронизацию»), то при подаче напряжения, камера будет фокусироваться и делать снимок либо при снятии напряжения, либо автоматически через 10 с (примерно). Задержка в 10 с в текущей версии CHDK работает всегда, если включена опция «Вкл удал. пульт» и «Вкл синхронизации». Если задержка не нужна (она просто может мешать работать), то эти пункты нужно заранее отключать.

Второй случай — когда нужно с помощью пульта запустить скрипт.

Меню »Скрипты»

Подменю запуска скриптов. В верхнем блоке - общие настройки, среди которых возможность автозапуска скрипта при включении камеры («Автостарт»), параметры удаленного пульта и пр. В нижнем блоке — описание и настройки текущего загруженного скрипта.
В верхнем блоке можно включить опции «Сохранение параметров» для того, чтобы при следующем запуске не настраивать параметры скрипта снова. А так же назначать цифровой индекс текущим наборам настроек («Набор параметров») активного скрипта для последующей быстрой загрузки требуемых параметров.

Как видно из приведенной иллюстрации, раздел «Параметры удаленного пульта» есть и в подменю «Скрипты». К сожалению, заставить срабатывать любой скрипт с помощью пульта, а не по нажатию на кнопку спуск (стандартный способ включения скрипта), мне с текущей прошивкой CHDK не удалось. Поэтому была использована возможность дописать в любой скрипт блок запуска скрипта по команде пульта. К примеру, для запуска серийной съемки через заданный интервал времени распространенный скрипт Simple_Remote.bas (описания и ссылки скриптов приведены на сайте CHDK Wiki) был модифицирован так:

lapsremote.bas

Скрипт после подачи напряжения на USB порт камеры начинает снимать последовательность с заданным интервалом в секундах, десятых секунды и минутах, при этом отображая на дисплее количество сделанных снимков. Если напряжение с USB пульта снять, съемка временно приостанавливается. Для включения/выключения скрипта используется стандартная процедура — запуска/остановки скрипта — нажатие на кнопку спуск на камере. Чтобы воспользоваться скриптом файл нужно перенести в папку скриптов раздела CHDK на карте памяти.

При работе многих скриптов полезно отключить функцию автоматического просмотра сделанного снимка и экономии электроэнергии.

С помощью скриптов можно реализовать довольно умные функции, к примеру, автоматической съемки при изменении яркости в пространстве, на которое нацелена камера, или по «движению» в этом пространстве. Вот пример настроек и вид дисплея камеры при загрузке скрипта MotionDetection1.bas:

Motion Detection1.bas

Задав через настройки скрипта разбиение снимаемой сцены на нужное число зон сравнения (Columns / Rows), период сравнения (Compare Interval) и задержку срабатывания (Begin Delay), можно навести камеру в нужную область пространства, нажать на кнопку спуск и доверить камере самой снимать, как только что-то меняется в поле ее зрения.

Стандартная функция CHDK — отображение глубины резкости, а так же ближней и дальней границы резко отображаемого пространства для текущей дистанции фокусировки и текущих настроек камеры. Как уже не раз отмечалось в статьях, посвященных глубине резкости (Программа расчета глубины резкости, Из жизни пчел, или о макросъемке на природе и глубине резкости, Общий FAQ по цифровой фотографии), при всех вычислениях важно понимать, какова величина кружка нерезкости, то есть из каких соображений исходят, рассчитывая ГРИП. Оптика 35 мм камер, как правило, рассчитывалась и маркировалась, исходя из предположения просмотра отпечатков стандартных размеров, примерно, 10×15 см. В случае цифровой камеры кружок нерезкости так же можно вычислять, ориентируясь на альбомный отпечаток. Но если нужно максимально увеличить изображение, что соответствует 100% масштабу просмотра на дисплее, то следует опираться на реальное разрешение цифровой камеры. Кружок нерезкости в этом случае — расстояние между проекциями центров двух еще различимых на изображении штрихов, разделенных промежутком. Его не сложно оценить по снимку миры — зная шаг матрицы перевести разрешение в пикселях на штрих в реальное разрешение. Для камеры Canon PowerShot G9 можно, опираясь на информацию о ГРИП CHDK, определить критерий (кружок нерезкости), который в CHDK используется.

Гиперфокальное расстояние (H) через фокусное расстояние (f), диафрагменное число (k) и размер кружка нерезкости (d) вычисляется так:

H = f*f / (k*d)

В приведенной далее таблице для двух фокусных расстояний и гиперфокальных расстояний, сообщаемых CHDK, подсчитан кружок нерезкости d. Так же приведены шаг матрицы камеры Canon PowerShot G9 и отношение кружка нерезкости к шагу матрицы — эквивалент разрешения в пикселях на штрих.

f, мм 7,4 19,37
k 4 3,5
H, м 2,73 20,4
d, мкм 5,01 5,25
s, мкм 1,9 1,9
d/s 2,6 2,8

Таким образом, разработчики CHDK заложили в него для камеры Canon PowerShot G9 разрешение примерно 2,5-3 пикселя на «фотографический» штрих между центрами двух различимых черных штрихов — 2,5-3 пикселя). (Такая же величина была выбрана для оценки глубины резкости в статье О пейзажной фотографии, глубине резкости, реальном разрешении и камерах разных размеров. Интересующиеся могут из нее узнать, почему это так.)

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

Чтение текстовых файлов

Или запускать совсем уж бытовые функции, к примеру, таймер для варения яиц:

Таймер повара





Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.