Итак, поковырявшись немного с 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 (или ответив на этот комментарий) - будет ОК. Я со срочным скорее всего разделаюсь, а делов то там - ну на пару часов отсилы, скорее меньше.
В прыдущих постах казалось, что артефакты на картинках у вас создаются на этапе дебайеризации. Но проблемы, наверное, возникают на каком-то другом этапе.
Вот эти места выглядят ненормально: https://i.imgur.com/hVNVMOj.png
Напоминает проблемы блокого кодирования. Но у вас джипеги приличного уровня сжатия (quality = 90, YCbCr4:4:4). И если исходник был бы качественный, то такие артефакты не должны были появиться.
Простые "горячие пиксели", которые сбивают с толку алгоритм. Специально сравнил jpeg с tiff — там то же самое. Еще на матрице несколько битых пикселей есть. Но за ту цену, что ее купили (в интернете 2.5 килобакса, значит, после растаможки и накладных все 5 получилось) это нормально. Даже за 10 килобаксов чипы хреновые.
no subject
Date: 2017-02-07 03:31 pm (UTC)no subject
Date: 2017-02-07 03:35 pm (UTC)no subject
Date: 2017-02-07 03:42 pm (UTC)no subject
Date: 2017-02-07 03:44 pm (UTC)В прошлом году у нас в поселке была "выставка". Экскрементов в чистом виде, к счастью, не было, но "говна и палок" хватало.
no subject
Date: 2017-02-07 03:52 pm (UTC)no subject
Date: 2017-02-07 04:06 pm (UTC)no subject
Date: 2017-02-07 04:59 pm (UTC)С этим проблем у топикстартера нет.
Демозаики и прочего постпроцессинга в rawspeed нет.
А как декодер - отличная библиотека (libraw умеет ее использовать в качестве декодера)
no subject
Date: 2017-02-07 05:32 pm (UTC)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)На самом деле - просят примерно пару раз в год.
no subject
Date: 2017-02-07 04:23 pm (UTC)Вот эти места выглядят ненормально:
https://i.imgur.com/hVNVMOj.png
Напоминает проблемы блокого кодирования. Но у вас джипеги приличного уровня сжатия (quality = 90, YCbCr4:4:4). И если исходник был бы качественный, то такие артефакты не должны были появиться.
no subject
Date: 2017-02-07 07:04 pm (UTC)