eddy_em: (Костерок)
eddy_em ([personal profile] eddy_em) wrote2017-02-07 06:18 pm

SBIG all-sky, продолжение

Итак, поковырявшись немного с libraw, я плюнул: разобраться в недрах такого бешеного количества кода просто нереально! Поэтому пока выбираю более медленную, но все-таки работающую "Self Similarity Driven Demosaicking". В принципе, цветопередача получается вполне нормальная, я вывел на монитор эту картинку и после обработки получил:
img

Саму утилиту тоже чуть подправил: добавил простой "калькулятор экспозиций" (надо его по звездному небу проверить, в комнате он давал сходимость на 3-5 итерациях).

К сожалению, авторы вышеозвученного метода дебайеризации не разрешают выкладывать измененный вариант своего кода — только пользоваться в научных или академических целях. Саму утилиту я чуть изменил: добавил туда работу с libgd, при ее помощи собственно загружаю tiff и сохраняю цветной jpeg с отметкой времени. Чтобы не мучиться с fits-файлами, я в утилите sbig340 при сохранении файлов модифицирую mtime так, чтобы оно соответствовало времени начала экспозиции. Его и вывожу на изображение. Если будет необходимо выводить еще и длительность экспозиции, придется сохранять выхлоп в FITS (возможно, для поиска звезд tiff'а не хватит).

В принципе, получилось вполне KISS и юниксвейно: одна утилита собирает изображения, другая генерирует цветную картинку. Возможно, будет еще и третья, считающая процент облачности. Автоэкспозицию думаю возложить на самого демона, работающего с камерой. Допишу, как будет время, "демонизатор". Думаю, на первых порах пинать его снаружи нет необходимости — пусть будет "демон в себе".

UPD вытащил камеру в окно. Жаль, что с макетных мастерских светит хороший фонарь, но уже по кадрам понятно, что для звездного неба надо будет немного переиначить алгоритм вычисления оптимальной экспозиции: попытка впихнуть медиану в примерно середину диапазона приводит к конкретному пересвету. Как пример — три экспозиции:
img20
Экспозиция 20 секунд

img30
Экспозиция 30 секунд

img50
Экспозиция 50 секунд

На третьем кадре мимо проехала машина, а Венеру затянула туча. Марс с Венерой лучше всего видно на втором кадре.

В общем, нужно брать камеру, и ехать подальше от засветки. Ну или допиливать все непосредственно во время эксплуатации (этот вариант ближе к реальности, т.к. сколько же all-sky у меня в кабинете будет стоять? Народ требует зрелищ!).

[identity profile] eddy-em.livejournal.com 2017-02-07 06:57 pm (UTC)(link)
А изображение переворачивать на 180° (чтобы был не BGGR, а RGGB), а потом обратно? Или все-таки есть интерфейс для задания порядка фильтров в квадрате?

[identity profile] alextutubalin.livejournal.com 2017-02-07 07:20 pm (UTC)(link)
Я ж писал, 9-е поле в строчке поподбирать.

Можно еще ручками imgdata.idata.filters задавать (менять)

[identity profile] eddy-em.livejournal.com 2017-02-07 07:28 pm (UTC)(link)
Ух, ядрен батон! Надо будет как-нибудь попробовать.

[identity profile] alextutubalin.livejournal.com 2017-02-07 07:34 pm (UTC)(link)
Ну вот такую же строчку (строчки) можно
прицепить к
imgdata.params.custom_camera_strings (это char **, соответственно последняя строчка в этом массиве должна быть NULL)
И дальше оно типа само.

Но там есть бага, там срабатывает по последнему размеру, а не по первому (а custom - обрабатываются первыми), поэтому кодак все едино придется убирать.

Формат строчки описан тут: https://www.rawdigger.ru/usermanual/preferences
(последний раздел, Поддержка нестандартных камер)

[identity profile] eddy-em.livejournal.com 2017-02-07 07:36 pm (UTC)(link)
Проще было бы сразу "дебайеризатору" нужные данные подсунуть, а не бодаться с фильтрами. Как-то все излишне автоматизировано.

[identity profile] alextutubalin.livejournal.com 2017-02-07 07:38 pm (UTC)(link)
Потому что библиотека - для другого.

Ее основное назначение - разбирать файлики (и не только данные, но и всякие EXIF/etc) от "настоящих фотокамер"

Сама по себе дебайеризайция - не проблема. Ну возьмите OpenCV

[identity profile] eddy-em.livejournal.com 2017-02-07 07:38 pm (UTC)(link)
OpenCV — ни в коем случае! Слишком жирно.

[identity profile] alextutubalin.livejournal.com 2017-02-07 07:49 pm (UTC)(link)
На самом деле вот вы убедили даже.

То есть вот интерфейса вида "open_bayer" не хватает.
Всякие писатели обработки с андроидных камер - будут рады.

То есть вот надо дать возможность собственно ту же "строчку", но задавать через API. Те же ~15 параметров.

Я приделаю, но сроков не обещаю, потому что как-то вот совсем другим занимаюсь.

[identity profile] alextutubalin.livejournal.com 2017-02-07 07:50 pm (UTC)(link)
Но если через недельку пнете по E-mail (или ответив на этот комментарий) - будет ОК. Я со срочным скорее всего разделаюсь, а делов то там - ну на пару часов отсилы, скорее меньше.

[identity profile] eddy-em.livejournal.com 2017-02-07 08:13 pm (UTC)(link)
Спасибо!
Мне особо не горит. Если будет интерфейс в официальной ветке, так вообще будет здорово!

[identity profile] alextutubalin.livejournal.com 2017-02-07 08:30 pm (UTC)(link)
В официальной, конечно. В 0.19 появится.

На самом деле - просят примерно пару раз в год.