Як би я міг використовувати мій дзеркальний люкс для вимірювання «зеленіння» фотографії?


13

Фон

Мої цифрові зображення можна прочитати в комп'ютерній програмі, наприклад Matlab або R, як матриця amxnx 3, де mxn - кількість пікселів, що спостерігається за кожним із трьох (червоних, зелених та синіх) датчиків, а кожна комірка в матриці має номер від 1-255, що відображає яскравість, що спостерігається датчиком.

Я хотів би використати цю інформацію для отримання об'єктивної міри зеленіння на фотографії, тому що я хочу спробувати співвіднести зеленість з ростом рослин (уявіть одну картину в день кукурудзяного поля).

Попередня робота в цьому напрямку мала певний успіх, обчисливши індекс зеленого кольору як

  • зелений% = зелений / (синій + червоний) або
  • зелена розбіжність = 2 * зелена - червона - синя

із зображень веб-камери для кожного з пікселів mxn, але не було контролю над діафрагмою чи падаючим випромінюванням (сонячний кут).

зауважте, що я не шукаю «абсолютної» міри зеленіння, масштаб і розподіл кількості не має значення - він просто повинен забезпечити послідовний відносний показник зеленіння.

Питання

Чи можна використовувати мій дзеркальний дзеркал, щоб отримати надійну міру зеленіння, інваріантну будь-якій чи всім переліченим:

  • хмарний покрив?
  • час дня?
  • день року? (це єдина вимога)
  • пропорція неба / землі на задньому плані?

Поточний статус

Я придумав такі ідеї, але не впевнений, що було б необхідно чи які не впливали б на співвідношення зеленого / (червоного + синього)

  1. сфотографуйте білий пластик і використовуйте це зображення для нормалізації інших значень
  2. Зафіксуйте діафрагму
  3. Зафіксуйте швидкість затвора
  4. встановіть баланс білого, використовуючи білий аркуш паперу
  5. Зробіть усі фотографії з одного кута
  6. Зробіть усі фотографії в сонячний полудень

1
Ви можете розглянути питання про штучне освітлення, це спростить процедуру. Спалах повинен спрацьовувати належним чином, просто переконайтеся, що він знаходиться в одному місці та потужності.
PearsonArtPhoto

@Pearsonarphoto - цікава ідея, я думав про фотографування протягом дня, але, мабуть, має сенс робити їх вночі без місяця.
David LeBauer

1
Якщо ви дотримуєтесь порад Pearsonartphoto, вам потрібно встановити затвор, діафрагму та ISO вручну - встановіть затвор на швидкість синхронізації спалаху (як правило, 1/200 до 1/320), а діафрагму та ISO встановите як низькі оскільки вони можуть пройти, не вичерпавши потужність спалаху. Це призведе до того, що ваше навколишнє середовище буде максимально темним - повний місяць не повинен бути жодними проблемами (сонце середнього дня, з іншого боку ...) Для такої ситуації найкращим би був осевий спалах, оскільки він буде кидати найменші тіні. .
Еван Кралл

2
@Evan Я не погоджуюся щодо осі-спалаху. Причина така: photo.stackexchange.com/questions/9531/… - Занадто багато прямого відображення. За винятком випадків використання поляризаторів, як я описав там, - але тоді потрібно переконатися, що передача залишається такою ж, і що баланс білого виконано правильно. Поляризатори змінюють баланс білого.
Саймон А. Егстер

2
Хлорофіл найяскравіший у ближньому інфрачервоному діапазоні: yale.edu/ceo/Documentation/rsvegfaq.html На основі цього існують стандартні заходи "зеленіння" рослин, наприклад, NDVI. Таким чином, якщо це можливо, отримайте камеру, яка може записувати діапазон NIR.
1111

Відповіді:


12

Якщо ви можете обробити файли RAW, у вас буде масив пікселів байєра, що складається з рядків RGRGRG та GBGBGB (або, можливо, рядків RGBGRGBG.) Ви можете ігнорувати всі R і B пікселі, підсумувати G пікселів, взяти квадратний корінь ( оскільки зелених пікселів вдвічі більше, ніж червоних або синіх), і розділіть на половину кількість G пікселів. Це повинно дати вам належне середньозважене середнє значення для "зеленого" на вашій фотографії. Потім ви можете взяти середнє значення червоного та синього та обчислити свій зелений відсоток з усіх трьох середніх значень.

Щоб бути більш точним, ви, можливо, захочете врахувати належну вагу для червоних, зелених та синіх пікселів сенсорів, оскільки CMOS датчики мають різну чутливість до кожної довжини хвилі світла. Ваги залежать від датчика, як правило. Це був би простий підхід.

Щоб врахувати кольоровий відтінок через час доби, різні види штучного освітлення тощо, тоді може бути доцільніше попередньо обробити кожну фотографію в такому інструменті, як Lightroom, щоб спочатку виправити баланс білого, а потім виконати обчислення на стандартних зображеннях пікселів RGB. На відміну від обробки даних датчиків RAW, ви хочете зважити свій розрахунок на основі "чистоти зеленого кольору" пікселів, а не в середньому для загального зеленого компонента. Чим більше чистого зеленого пікселя, тим більша його вага порівняно з пікселями, які червонішими або синішими. Нормалізація балансу білого перед обробкою повинна усунути будь-яку необхідність ускладнювати інакше досить просте обчислення з дотичними, розробленими для врахування незмінних факторів, таких як хмарний покрив, час доби, сезон тощо.

Можливо, ви все ще хочете обліковувати великі площі неінцидентних пікселів, наприклад, небо. Я не можу вам дуже допомогти в цій галузі, не знаючи більше про те, чого ви намагаєтесь досягти. Зеленість "фотографії" в цілому, мабуть, найкраще послужить шляхом обчислення співвідношення зеленого та червоного до синього, яке включало б "небесні" пікселі.

Що стосується вашої процедури, то, безумовно, якщо ви будете робити фотографії з тими ж налаштуваннями камери, під тим самим освітленням (однакової інтенсивності та кольорової температури), відміряного за загальною базовою лінією, такою як сіра картка на 18%, явно піде довгий шлях до нормалізації результатів. За допомогою цифрових даних будь-які розбіжності можна виправити за допомогою програмного забезпечення для обробки RAW та базового інструменту вибору балансу білого, тому обов'язково знімайте у RAW.


Щоб ще більше зрозуміти, як обчислити "зеленість" ваших фотографій. Очевидно, є прості способи, такі як обчислення ваги зелених байєр-пікселів проти синього та червоного, або обчислення чистоти зеленого по відношенню до чистоти червоного / синього пікселів RGB. У вас може бути більше удачі, якщо ви перетворите на більш відповідний кольоровий простір, наприклад HSV ( відтінок / насиченість / значення , який іноді називають HSB, замінивши значення яскравістю), і обчисліть зелену суму за допомогою кривої в просторі HUE. (ПРИМІТКА: HSL - це інший тип кольорового простору, і, ймовірно, не було б ідеально підраховувати, скільки "зеленого" кольору на фотографії, тому я б використовував HSV. Докладніше про ці кольорові простори можна дізнатися тут.) Чисто-зелений (незалежно від насиченості чи значення) падає під кутом відтінку 120 °, і випадає звідти, рухаючись у напрямку до червоного (під 0 °) або до синього (при 240 °). Між 240 ° і 360 °, в пікселі буде нульова кількість зеленого кольору, незалежно від насиченості або значення.

Сюжетний відтінок - зелена чистота у відтінках відтінку
Рис 1. Ділянка відтінку - Зелена чистота в відтінках відтінку

Ви можете налаштувати фактичну криву зважування відповідно до ваших конкретних потреб, однак проста крива може бути подібною до наступної:

range = 240
period = range * 2 = 240 * 2 = 480
scale = 360/period = 0.75
pureGreen = sin(scale * 120)

Значення для pureGreenмає бути 1,0 . Формула для обчислень greennessможе бути зроблена наступним чином:

             sin(scale * hue)   } 0 > hue > 240
greenness = 
             0                  } 240 <= hue <= 360 || hue == 0

Це hueступінь кольору від значення кольору HSV. Це radiusполовина, periodв якій зелена присутня певною мірою. В scaleпідлаштовується гріх кривої на наш період, таким чином, що sin(scale * hue)піки (повертає 1,0) , де саме ви мали б чистий зелений ( з ігноруванням , що інтенсивність зелень). Оскільки сума greennessдійсна лише в першій половині нашого періоду, розрахунок зеленістю справедливий лише тоді, коли відтінок перевищує 0 ° та менше 240 °, а його нуль для будь-якого іншого відтінку.

Ви можете скоригувати зважування, скоригувавши період, діапазон, в якому ви визначаєте, greenможе бути присутнім (тобто, а не від 0 до 240, ви можете встановити таке обмеження, як 40 > hue > 200натомість), і визначити все, що знаходиться поза цим діапазоном, щоб мати зеленість 0 Слід зазначити, що це буде математично точно, однак це може бути не зовсім перцептивно точно. Ви, звичайно, можете налаштувати формулу, щоб налаштувати точку pure greenбільше до жовтого (що може давати більш сприйнятливі результати), збільшити амплітуду кривої до плато та розширити смугу чистого зеленого до діапазону відтінку, а не одиничного значення відтінку тощо. Для загальної точності сприйняття людини складніший алгоритм обробляється в CIE XYZ та CIE L a b *місця може знадобитися. (ПРИМІТКА. Складність роботи в просторі XYZ та лабораторії різко зростає поза тим, що я описав тут.)

Щоб обчислити зеленість фотографії, ви могли обчислити зеленість кожного пікселя, а потім створити середнє значення. Потім ви можете взяти алгоритм звідти і налаштувати його для ваших конкретних потреб.

Ви можете знайти алгоритми перетворення кольорів у EasyRGB , такі як RGB в HSV:

var_R = ( R / 255 )                     // Red percentage
var_G = ( G / 255 )                     // Green percentage
var_B = ( B / 255 )                     // Blue percentage

var_Min = min( var_R, var_G, var_B )    //Min. value of RGB
var_Max = max( var_R, var_G, var_B )    //Max. value of RGB
del_Max = var_Max - var_Min             //Delta RGB value 

V = var_Max                             //Value (or Brightness)

if ( del_Max == 0 )                     //This is a gray, no chroma...
{
   H = 0                                //Hue (0 - 1.0 means 0° - 360°)
   S = 0                                //Saturation
}
else                                    //Chromatic data...
{
   S = del_Max / var_Max

   del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max
   del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max
   del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max

   if      ( var_R == var_Max ) H = del_B - del_G
   else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B
   else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R

   if ( H < 0 ) H += 1
   if ( H > 1 ) H -= 1
}

1
+1 до технології переробки сировини. Джерело Драґу
прочитайте мій профіль

1
Обробка сировини полегшила б обчислення рівня зеленого кольору, однак зробила б роботу із кольоровим складом значно складнішою.
jrista

3

Проект GLOBE ?

Не використовуйте білий аркуш паперу. Вони містять оптичні відбілювачі, які перетворюють деякий УФ у блакитне світло, викликаючи неправильне опромінення. Ось чому існують комерційні graycards (як це запропонував jrista).

Зйомка всіх фотографій з абсолютно одного місця - це, безумовно, правильний підхід. Що стосується витримки та діафрагми, то вони не повинні мати значення. Швидкість затвора зовсім не змінює колір, діафрагма розмиває зображення, але я думаю, що цей ефект все одно зникає, коли ви підсумовуєте всі значення пікселів. Я б швидше намагався отримати постійне опромінення.

Що стосується різниці між помутнінням та нехмарністю, ви можете просто провести кілька тестів. Якщо справжня кількість зеленого кольору не змінюється швидко (тобто з сьогоднішнього дня до завтра), то не слід робити цього і при вивченні картинок. Можливо, в цьому може допомогти емпіричний підхід (наприклад, якщо ви дізнаєтесь, що зеленість завжди на 10% вище, коли вона помутніла, ви могли б це компенсувати).


це не проект GLOBE, але його можна перетворити на один; дякую, що вказали на цей сайт.
David LeBauer

Можливо, вас зацікавить також: я зараз пишу програму для аналізу відео, наприклад, із веб-камер та виведення статистики (зелена доля тощо). Слід закінчити в найближчі тижні. phenocam.granjow.net
Саймон А. Югстер

це звучить корисно. Чи співпрацювали ви з якимись науковцями?
Девід Лебоуер

Не надто багато, оскільки методи оцінки стануть останньою частиною (і їх також можна легко змінити / додати). Але це проект від ETH Zürich і його також використовуватимуть. (Якщо бути точним, спочатку його використовуватимуть школярі для свого проекту «Глобус»)
Саймон А. Егстер

1
  1. Я б запропонував знімати "RAW" та перетворюватись на 16-бітний TIFF, використовуючи автоматичний баланс білого камери, але без корекції гамми (тобто кольоровий баланс, але лінійний вихід). 16-бітний дозволить краще обчислити співвідношення та індекси у глибоких тінях та світлих тонах (тобто відсутні відсікання). DCRAW може це зробити, але у вашій камері є власне програмне забезпечення, яке, мабуть, простіше у використанні.

  2. Якщо потрібно індекси, RGB - це єдиний корисний кольоровий простір. Ви вже згадали про індекс «зеленої дивергенції» (також його називають «Надлишок зеленого індексу») - це і тісно пов'язаний алгоритм «Зеленого листя». Якщо ви хочете виконати класифікацію пікселів на основі кольорів (тобто veg порівняно з non-veg), я б уважніше подивився на кольоровий простір L a b *, а не HSV / HSI. На веб-сайті Mathworks насправді є досить хороша демонстрація, яка ілюструє L aб * аналіз. Класифікація може бути комбінована зі спектральним аналізом, щоб відповісти на запитання а) скільки зелених пікселів є і б) наскільки вони зелені? Це може бути корисніше, ніж просто індекс зеленості, на який також впливатиме фонова спектральна якість (ґрунт, підстилка тощо), яка також може змінюватися з часом. Ви згадали урожай кукурудзи, тож я припускаю, що ви орієнтуєте камеру вниз, а не вгору?

  3. Якщо у вас було дві камери, то ви могли б поєднувати зображення, що дивляться вниз (вимірювання зеленості), і зображення, спрямовані на вигляд, що вимірюють рослинність. Зображення вгору не підходить для спектрального аналізу, і класифікація пікселів базуватиметься на контрасті між небом / небом, ймовірно, використовуючи лише синій канал зображення RGB.

  4. Якщо ви збираєте (щоденні?) Часові виставки, то ви можете розділити низхідні зображення на зображення "похмурого дня" та "сонячний день" та перевірити наявність упередженості. Ви можете грати з кольоровим балансом під час необробленої обробки, щоб виправити зміщення, якщо вони є, або просто змінити масштаб однієї серії, щоб відповідати іншій (нехай це буде просто), припускаючи, що сонячні та похмурі дні перетинаються.

Весело.


Кольорова плитка з червоними, зеленими та синіми плитками може бути навіть кращою, ніж сіра карта, якщо ви підете цим шляхом.
риб’яче око
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.