Matlab восстанавливает исходные цвета изображения

Я хочу кое-что сфотографировать.

Цвета на картинке не такие, как я вижу своими глазами.

Поэтому, чтобы решить эту проблему, я решил поместить красную бумагу (с RGB: [255 0 0]), а затем сделать снимок с этой бумагой.

Если я увижу, что RGB бумаги изменился (например, [243 15 7]), я изменю все RGB на картинке следующим образом:

  • R (красный), будет добавлено значение 12.
  • G (зеленый), будет вычтено значение 15.
  • B (синий), будет вычтено значение 7.

Таким образом, моя бумага будет изменена на его правильный RGB [255 0 0], и тогда я могу быть уверен, что RGB всех остальных изображений был изменен на исходный цвет.

Что вы думаете об этом?


person Alon Shmiel    schedule 02.06.2012    source источник
comment
Для меня это похоже на баланс белого, возможно, стоит посмотреть: en.wikipedia.org/wiki/White_balance   -  person Dan    schedule 04.06.2012


Ответы (3)


То, что вы пытаетесь сделать, называется управлением цветом/коррекцией цвета.

У меня есть некоторые замечания:

  • Во-первых, вы должны убедиться, что ваш монитор откалиброван. Если он не откалиброван, нет смысла делать визуальную проверку. Если у вас стандартный потребительский монитор, скорее всего, вы вообще не сможете его откалибровать.
  • Почему вы предполагаете, что RGB бумаги равен [255,0,0]? Он может быть немного зеленее или голубее. Вы должны использовать известную цель, например Macbeth ColorChecker.
  • Используемое вами преобразование смещения не будет работать, если количество света изменилось. Вместо этого он должен быть мультипликативным, чтобы быть инвариантным к интенсивности освещения. Ознакомьтесь со стандартным методом цветокоррекции, Матрица цветокоррекции.
  • Вам понадобится более одного известного цвета. Три — это абсолютный минимум для калибровки матрицы.
person Andrey Rubshtein    schedule 03.06.2012
comment
Ух ты! спасибо за ваш комментарий! Попробую все советы в этой теме. Спасибо!!!! - person Alon Shmiel; 04.06.2012
comment
ок, я прочитал все, что вы мне написали, и у меня есть 3 известных цвета (я знаю их RGB, мне сказал продавец). теперь у меня есть три цвета, например: красный [237 12 15], зеленый [35 229 20] и синий [25 19 241]. теперь я сфотографировал их, и значения были изменены на: [212 16 25], зеленый [27 215 15] и синий [25 26 233]. что мне делать с этими изменениями во всех пикселях изображения? Спасибо! - person Alon Shmiel; 04.06.2012
comment
@AlonShmiel, используйте метод наименьших квадратов, чтобы найти лучшую матрицу. - person Andrey Rubshtein; 05.06.2012

Вы можете попробовать использовать белую бумагу вместо красной. Сделав это, вы получите информацию о трех цветах, а не только о красном. В идеальном случае значения RGB для белой бумаги будут равны, например, вы получите (197 197 197). Но если они не равны, например (190, 204, 203), вы можете изменить их для каждого пикселя, умножив на какое-то число:

mean = (190 + 204 + 203) / 3
red_new = red * mean / 190
green_new = green * mean / 204
blue_new = blue * mean / 203
person fdermishin    schedule 04.06.2012
comment
Спасибо! это звучит хорошо, я попробую это. красный, зеленый и синий - это rgb каждого пикселя на картинке? - person Alon Shmiel; 04.06.2012
comment
Да, они. Кстати, эта регулировка называется цветовым балансом или балансом белого, если не ошибаюсь. - person fdermishin; 04.06.2012
comment
Привет спасибо. Я читал о вашем предложении и обнаружил, что в камере есть функция 'баланса белого', поэтому в дополнение к этой опции я сделаю функцию, которая будет включать в себя предложение Андрея. Спасибо. - person Alon Shmiel; 06.06.2012

я читал об итеративном процессе цветокоррекции, который, возможно, можно было бы применить в вашем случае:

Коррекция в Photoshop за 7 простых шагов, автор Хелен Брэдли,

тем не менее, подтвердите, что он работает должным образом

удачи

person Botond    schedule 02.06.2012
comment
это полностью зависит от вас. обратите внимание, что в статье демонстрируется этот подход к коррекции цвета в фотошопе, его можно реализовать, например. в матлабе тоже. Вы можете сравнить, что работает лучше, просто идея... - person Botond; 03.06.2012
comment
Я пытался понять, что он написал в своей статье, но мой английский не очень хорош, поэтому я позволил своему брату перевести это завтра. Если я понял, он делал цветокоррекцию по 3 точкам на картинке, чтобы он знал их RGB, и по RGB этих 3 точек он восстанавливал картинку. Еще раз спасибо! :]] - person Alon Shmiel; 03.06.2012