Начал заниматься примерно тем-же самым (в плане неспешности). Мыслей была тьма, но после того как получил матрицу значений каждого цвета в числовом выражении ( из RAW - кенона) - появилась масса вопросов.
Вопрос первый: минимальное значение яркости пикселей например для красного 1151, для синего 1820. Как лучше приводить? Для каждого цвета отнимать свой ноль, или отнимать для всех цветов единый (например меньший из выявленных 1151)? Пока я складываю все цвета в единый цвет и получаю градацию серого.
Вопрос второй: Для того, чтоб вытянуть наиболее слабые объекты (на уровне шумов) нужно умножить все значения на константу (это мы грубо говоря увеличиваем контраст или кол-во накопленных снимков). Мат.модели у меня нет, но анализируя физику появления шума и вероятность появления фотона от слабого источника, прихожу к убеждению, что это так.
Программист я никакой (учил в универе фортран 4 ), но в си шарпе форму нарисую. О многопоточности вообще молчу(только слышал что такое есть). Поэтому моя прога читает и обрабатывает фотофайл ( 3888х2592) около 40сек. Но при этом у меня возникает масса вопросов к знающим людям. КАК WINDOWS при всем своем маразме позволяет получать 24 бита на цвет, при всем при том, что в Си функция Color оперирует всего байтом? В RAW-е 2 байта. Чтоб посмотреть результат работы той или моей функции (например умножения значений на константу) мне приходится применять обратно-степенную функцию (иногда не только корень квадратный, дело доходит до корня в шестой степени.). Нелинейность у меня преднамеренна. При корне квадратном из девяти мы получим три, а из 100 всего 10. Тем самым динамический диапазон слабых объектов больше, а яркие звезды не так интересны.
Попытался применить дифференциал яркости из сырых данных. Для звезд это - более или менее подходит (2 минуты экспозиции объектив "Гелиос-44-м4" 13-я звездная на пределе без приведения кадра к уровню черного и удалению горячих пикселей). Для туманных объектов вытянуть туманность (М42) - получилось плохо (туманность "Пламя" вижу. Но при этом эффект винентирования (в центре пятно ярче чем по краям) победить удалось. Теперь-бы применить коэф. умножения, полученные из 2-х соседних плоских полей..... Но встает железный вопрос в применимости этого преобразования в части разных уровней нуля для каждого цвета.
При формировании матрицы из всех цветов одновременно в одной матрице получается полная хрень (при сильном увеличении масштаба видна мозаика). Видимо это из-за несовпадения коэф. усиления каждого цвета. В Советские годы в системе вещания SEKAM передавалась синяя строка, потом красная, потом синяя и т.д. Зеленый получался преобразованиями в самом телевизоре. Отсюда и вопрос - а как получаются зеленые в фотоаппарате математика или цветные фильтры? при этом при раскодировании RAW-а мы получаем 2 матрицы зеленых. Зкленый1 с красным и зеленый2 с синим. Как правильно понимать зеленый1 и зеленый2 Усреднением или еще как нибудь? Можно для серого просуммировать строку "R+G1" и вторую строку под ним "G2+B" .
У кого какие мысли - пишите. Похоже это единственный пост для интересующихся методом и подходами к обработке полученных кадров.