Изменить цветовой вес необработанного файла изображения

Я работаю над проектом телескопа, и мы тестируем ПЗС. Всякий раз, когда мы делаем снимки, объекты слегка окрашены в розовый цвет, и нам нужен истинный цвет, чтобы правильно отображать галактические объекты. Я планирую написать небольшую программу на python или java для изменения веса цвета, но как я могу получить доступ к весу цвета в файле необработанных данных (это rgb.bin)?

Мы используем алгоритм матрицы Байера для преобразования монохроматических файлов в цветные, и я полагаю, что проблема исходит оттуда, но я хотел бы исправить ее с помощью небольшой программы для коррекции цвета.

Спасибо!


person clifgray    schedule 29.05.2012    source источник
comment
Вам действительно нужно знать, вызвана ли неточность датчиком и его цветными фильтрами или программным обеспечением. Если это программное обеспечение, любые исправления, которые вы применяете, могут только усугубить ситуацию. Наведите телескоп на несфокусированную белую стену и посмотрите непосредственно на необработанные значения пикселей.   -  person Mark Ransom    schedule 30.05.2012


Ответы (4)


Типичные проблемы с балансом белого вызваны различными пропорциями красного, зеленого и синего в составе света, освещающего сцену, или различиями в чувствительности сенсоров к этим цветам. Эти ошибки, как правило, линейны, поэтому вы корректируете их, умножая на величину, обратную ошибке.

Предположим, вы измеряете точку, которая, как вы ожидаете, будет идеально белой, и ее значения RGB равны (248 237 236), т. е. розовые. Если вы умножите каждый пиксель изображения на (248/248 248/237 248/236), вы получите правильный баланс.

Вы обязательно должны сначала убедиться, что ваш фильтр Байера дает правильные результаты, иначе базовое предположение о линейных ошибках будет неверным.

person Mark Ransom    schedule 29.05.2012

В Java есть несколько полезных вещей для обработки изображений, попробуйте использовать класс BufferedImage, здесь я оставляю вам ссылку на Javadoc, вы можете открывать изображения в распространенных форматах и ​​использовать BufferedImage для доступа к цвету или уровням серого каждого пикселя.

BufferedImage

Я не знаю питона.

Надеюсь это поможет!

person Juan Alberto López Cavallotti    schedule 29.05.2012

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

Здесь хорошо обсуждается реализация алгоритма автоматической коррекции баланса белого: алгоритм баланса белого

Поскольку вы уже создали файл, содержащий ваши двоичные значения RGB, я предполагаю, что вы можете повторно преобразовать его в структуру данных для дальнейшей обработки. Когда у вас есть пиксели RGB в буфере, вы захотите преобразовать их в их эквиваленты HSB (оттенок, насыщенность, яркость), поскольку изменение цветового оттенка изображения — это, по сути, глобальная операция над оттенком каждого пикселя. Класс Java Color содержит методы для выполнения Преобразование HSB‹->RGB.

person Malcolm Smith    schedule 29.05.2012
comment
Эта ссылка вводит в заблуждение, HSB редко бывает лучшим способом исправить цветовой баланс. - person Mark Ransom; 30.05.2012

Возможно, вы захотите ознакомиться с библиотекой изображений Python (PIL). Я позволю вам загружать изображения в различных форматах и ​​получать доступ к их цветовым значениям.

Я не знаком с форматом изображения rgb.bin, но если «вес» означает просто настройку различных значений типа RGB, то, возможно, стоит изучить PIL (документация PIL pdf)

Обратите внимание, что PIL официально поддерживается для Python версии 2.7 (на странице приветствия указана версия 2.6, но на самом деле это версия 2.7 — см. страницу загрузки), однако существует неофициальная версия PIL для Python версии 3. .x доступен на неофициальных двоичных файлах Windows для пакетов расширений Python.

person Levon    schedule 29.05.2012