Итак, поковырявшись немного с libraw, я плюнул: разобраться в недрах такого бешеного количества кода просто нереально! Поэтому пока выбираю более медленную, но все-таки работающую "Self Similarity Driven Demosaicking". В принципе, цветопередача получается вполне нормальная, я вывел на монитор эту картинку и после обработки получил:
Саму утилиту тоже чуть подправил: добавил простой "калькулятор экспозиций" (надо его по звездному небу проверить, в комнате он давал сходимость на 3-5 итерациях). К сожалению, авторы вышеозвученного метода дебайеризации не разрешают выкладывать измененный вариант своего кода — только пользоваться в научных или академических целях. Саму утилиту я чуть изменил: добавил туда работу с libgd, при ее помощи собственно загружаю tiff и сохраняю цветной jpeg с отметкой времени. Чтобы не мучиться с fits-файлами, я в утилите sbig340 при сохранении файлов модифицирую mtime так, чтобы оно соответствовало времени начала экспозиции. Его и вывожу на изображение. Если будет необходимо выводить еще и длительность экспозиции, придется сохранять выхлоп в FITS (возможно, для поиска звезд tiff'а не хватит).
В принципе, получилось вполне KISS и юниксвейно: одна утилита собирает изображения, другая генерирует цветную картинку. Возможно, будет еще и третья, считающая процент облачности. Автоэкспозицию думаю возложить на самого демона, работающего с камерой. Допишу, как будет время, "демонизатор". Думаю, на первых порах пинать его снаружи нет необходимости — пусть будет "демон в себе".
UPD вытащил камеру в окно. Жаль, что с макетных мастерских светит хороший фонарь, но уже по кадрам понятно, что для звездного неба надо будет немного переиначить алгоритм вычисления оптимальной экспозиции: попытка впихнуть медиану в примерно середину диапазона приводит к конкретному пересвету. Как пример — три экспозиции:
Экспозиция 20 секунд
Экспозиция 30 секунд
Экспозиция 50 секунд
На третьем кадре мимо проехала машина, а Венеру затянула туча. Марс с Венерой лучше всего видно на втором кадре.
В общем, нужно брать камеру, и ехать подальше от засветки. Ну или допиливать все непосредственно во время эксплуатации (этот вариант ближе к реальности, т.к. сколько же all-sky у меня в кабинете будет стоять? Народ требует зрелищ!).
Дык, вот и интересно: как сообщить библиотеке, что у меня сырые некодированные uint16_t в порядке BGGR. Хотя, на фоне 1-2минутных экспозиций те 4-5 секунд, что работает дебайеризатор — фигня.
А изображение переворачивать на 180° (чтобы был не BGGR, а RGGB), а потом обратно? Или все-таки есть интерфейс для задания порядка фильтров в квадрате?
Ну вот такую же строчку (строчки) можно прицепить к imgdata.params.custom_camera_strings (это char **, соответственно последняя строчка в этом массиве должна быть NULL) И дальше оно типа само.
Но там есть бага, там срабатывает по последнему размеру, а не по первому (а custom - обрабатываются первыми), поэтому кодак все едино придется убирать.
Формат строчки описан тут: https://www.rawdigger.ru/usermanual/preferences (последний раздел, Поддержка нестандартных камер)
Но если через недельку пнете по E-mail (или ответив на этот комментарий) - будет ОК. Я со срочным скорее всего разделаюсь, а делов то там - ну на пару часов отсилы, скорее меньше.
no subject
Date: 2017-02-07 05:43 pm (UTC)no subject
Date: 2017-02-07 05:43 pm (UTC)no subject
Date: 2017-02-07 06:03 pm (UTC)no subject
Date: 2017-02-07 06:10 pm (UTC)Формат данных там - YCbCr. Из экономии, вероятно.
no subject
Date: 2017-02-07 06:25 pm (UTC)no subject
Date: 2017-02-07 06:31 pm (UTC)no subject
Date: 2017-02-07 06:34 pm (UTC)no subject
Date: 2017-02-07 06:46 pm (UTC)И LibRaw::open_buffer()
no subject
Date: 2017-02-07 06:57 pm (UTC)no subject
Date: 2017-02-07 07:20 pm (UTC)Можно еще ручками imgdata.idata.filters задавать (менять)
no subject
Date: 2017-02-07 07:28 pm (UTC)no subject
Date: 2017-02-07 07:34 pm (UTC)прицепить к
imgdata.params.custom_camera_strings (это char **, соответственно последняя строчка в этом массиве должна быть NULL)
И дальше оно типа само.
Но там есть бага, там срабатывает по последнему размеру, а не по первому (а custom - обрабатываются первыми), поэтому кодак все едино придется убирать.
Формат строчки описан тут: https://www.rawdigger.ru/usermanual/preferences
(последний раздел, Поддержка нестандартных камер)
no subject
Date: 2017-02-07 07:36 pm (UTC)no subject
Date: 2017-02-07 07:38 pm (UTC)Ее основное назначение - разбирать файлики (и не только данные, но и всякие EXIF/etc) от "настоящих фотокамер"
Сама по себе дебайеризайция - не проблема. Ну возьмите OpenCV
no subject
Date: 2017-02-07 07:38 pm (UTC)no subject
Date: 2017-02-07 07:49 pm (UTC)То есть вот интерфейса вида "open_bayer" не хватает.
Всякие писатели обработки с андроидных камер - будут рады.
То есть вот надо дать возможность собственно ту же "строчку", но задавать через API. Те же ~15 параметров.
Я приделаю, но сроков не обещаю, потому что как-то вот совсем другим занимаюсь.
no subject
Date: 2017-02-07 07:50 pm (UTC)no subject
Date: 2017-02-07 08:13 pm (UTC)Мне особо не горит. Если будет интерфейс в официальной ветке, так вообще будет здорово!
no subject
Date: 2017-02-07 08:30 pm (UTC)На самом деле - просят примерно пару раз в год.