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

Работя по проект за телескоп и тестваме CCD. Всеки път, когато правим снимки, нещата са леко розови и имаме нужда от истински цвят, за да изобразим правилно галактическите обекти. Планирам да напиша малка програма в 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 (нюанс, наситеност, яркост) еквиваленти, тъй като промяната на цветовия нюанс на изображение е по същество глобална операция върху нюанса на всеки пиксел. Класът Color на Java съдържа методи за изпълнение HSB‹->RGB преобразуване.

person Malcolm Smith    schedule 29.05.2012
comment
Тази връзка е подвеждаща, HSB рядко ще бъде най-добрият начин за коригиране на цветовия баланс. - person Mark Ransom; 30.05.2012

Може да искате да разгледате Python Imaging Library (PIL). Ще ви позволя да заредите изображения в различни формати и да получите достъп до техните цветови стойности.

Не съм запознат с формата на изображението rgb.bin, но ако „тегло“ означава просто коригиране на различните стойности на типа RGB, тогава PIL може да си струва да се разгледа (PIL документация pdf)

Имайте предвид, че PIL се поддържа официално до Python v2.7 (страницата за добре дошли казва v2.6, но всъщност е v2.7 - вижте страницата за изтегляне), но има неофициална версия на PIL за Python v3 .x достъпен от сайта Неофициални двоични файлове на Windows за пакети с разширения на Python.

person Levon    schedule 29.05.2012