Bir fotoğrafın 'yeşilliğini' ölçmek için SLR'mi nasıl kullanırım?


13

Arka fon

Dijital resimlerim Matlab veya R gibi bir bilgisayar programına amxnx 3 matrisi olarak okunabilir, burada mxn üç (kırmızı, yeşil ve mavi) sensörün her biri tarafından gözlemlenen piksel sayısıdır ve matristeki her hücrenin bir numarası vardır sensör tarafından gözlemlenen parlaklığı yansıtan 1-255 arasında.

Bu bilgiyi bir fotoğrafta nesnel bir yeşillik ölçüsü elde etmek için kullanmak istiyorum, çünkü yeşilliği bitki büyümesiyle ilişkilendirmeye çalışmak istiyorum (bir mısır tarlasında günde bir resim hayal edin).

Bu yöndeki daha önceki çalışmalar , yeşil bir endeksi

  • yeşil% = yeşil / (mavi + kırmızı) veya
  • yeşil ıraksama = 2 * yeşil - kırmızı - mavi

mxn piksellerinin her biri için web kamerası görüntülerinden, ancak diyafram veya olay radyasyonu (güneş açısı) üzerinde herhangi bir kontrol yoktu.

'mutlak' bir yeşillik ölçüsü aramıyorum, sayının ölçeği ve dağılımı önemli değil - sadece tutarlı bir göreceli yeşillik ölçüsü sağlamak zorunda.

Soru

Aşağıdakilerin herhangi biriyle veya hepsiyle değişmeyen sağlam bir yeşillik ölçüsü elde etmek için SLR'mi kullanabilir miyim:

  • Bulut örtüsü?
  • günün zamanı?
  • yılın günü? (bu tek şarttır)
  • arka planda gökyüzü / zemin oranı?

Şu anki durum

Aşağıdaki fikirleri buldum, ancak hangisinin gerekli olacağından veya hangilerinin yeşil / (kırmızı + mavi) oranı üzerinde hiçbir etkisi olmayacağından emin değilim.

  1. beyaz bir parça plastiğin resmini çekin ve diğer değerleri normalleştirmek için bu resmi kullanın
  2. Diyaframı düzelt
  3. Enstantane hızını sabitle
  4. beyaz dengesini beyaz bir kağıt parçası kullanarak ayarlama
  5. Tüm fotoğrafları aynı açıdan çekin
  6. Güneş öğle saatlerinde tüm fotoğrafları çekin

1
Yapay aydınlatmayı düşünebilirsiniz, bu prosedürü basitleştirecektir. Bir flaş yeterli şekilde yapılmalıdır, sadece aynı konumda ve güçte olduğundan emin olun.
Mayıs

@Pearsonarphoto - ilginç bir fikir, gün boyunca fotoğraf çekmeyi düşünüyordum, ancak belki de geceleri ay olmadan yapmak daha mantıklı.
David LeBauer

1
Pearsonartphoto'un tavsiyelerine uyuyorsanız, deklanşör, diyafram açıklığınızı ve ISO'nuzu manuel olarak ayarlamak istersiniz - deklanşörünüzü flaşınızın senkronizasyon hızına (genellikle 1/200 ila 1/320) ayarlayın ve diyafram açıklığınızı ve ISO'nuzu düşük olarak ayarlayın çünkü flaş gücü bitmeden gidebilirler. Bu ortamınızı olabildiğince karanlık hale getirecektir - dolunay sorun olmamalı (gün ortası güneş, diğer yandan ...) Bu durum için, eksen üzerinde flaş en iyi olacaktır, çünkü en az gölgeyi kullanacaktır .
Evan Krall

2
@Evan eksen üzerinde flaş konusunda aynı fikirde değilim. Sebep şudur : photo.stackexchange.com/questions/9531/… —Çok fazla doğrudan yansıma gerektirir. Polarizörleri kullanma dışında, orada açıkladığım gibi - ama sonra dişli aynı kalır ve beyaz dengesi doğru yapılır emin olun. Polarizörler beyaz dengesini değiştirir.
Simon A. Eugster

2
Klorofil, yakın kızılötesinde en parlak olanıdır : yale.edu/ceo/Documentation/rsvegfaq.html Buna dayanarak, NDVI gibi bitki "yeşilliğinin" standart ölçüleri vardır. Böylece, mümkünse, NIR bandını kaydedebilen bir kamera alın.
whuber

Yanıtlar:


12

RAW dosyalarını işleyebiliyorsanız, RGRGRG ve GBGBGB satırlarından (veya muhtemelen RGBGRGBG satırlarından) oluşan bir bayer piksel dizisine sahip olacaksınız. Tüm R ve B piksellerini yoksayabilir, G piksellerini toplayabilir, kare kökünü alabilirsiniz ( çünkü kırmızı veya mavi olanın iki katı yeşil piksel vardır) ve G pikseli sayısının yarısına bölün. Bu, fotoğrafınızdaki "yeşil" için uygun ağırlıklı ortalamayı vermelidir. Daha sonra, kırmızı ve mavi ortalamasını alabilir ve üç yüzdeden de yeşil yüzdenizi hesaplayabilirsiniz.

Daha doğru olmak için, CMOS sensörleri her bir ışık dalga boyunda farklı hassasiyetlere sahip olduğundan, kırmızı, yeşil ve mavi sensör pikselleri için uygun ağırlığı hesaba katmak isteyebilirsiniz. Ağırlıklar genellikle sensöre bağlı olacaktır. Bu basit bir yaklaşım olurdu.

Günün saati, çeşitli yapay aydınlatma türleri, vb.Nedeniyle renk gölgesini hesaba katmak için, önce beyaz dengesini düzeltmek için Lightroom gibi bir araçtaki her fotoğrafı önceden işlemek, ardından hesaplamanızı standart RGB piksel görüntülerde gerçekleştirmek daha uygun olabilir. RAW sensör verilerinin işlenmesinden farklı olarak, hesaplamanızı genel olarak yeşil bileşenin ortalamasından ziyade piksel "yeşil saflığına" göre ağırlıklandırmak istersiniz. Bir piksel ne kadar saf yeşil olursa, ağırlığı o kadar kırmızı veya mavi olan piksellere göre o kadar yüksek olur. İşlemeden önce beyaz dengesini normalleştirmek, bulut örtüsü, günün saati, sezon vb. Gibi on beş faktörü hesaba katmak için tasarlanmış teğetlerle aksi takdirde oldukça basit bir hesaplamayı karmaşıklaştırma ihtiyacını ortadan kaldırmalıdır.

Yine de gökyüzü gibi olay olmayan piksellerin geniş alanlarını hesaba katmak isteyebilirsiniz. Tam olarak neyi başarmaya çalıştığınız hakkında daha fazla bilgi sahibi olmadan o alanda size gerçekten yardımcı olamıyorum. Genel olarak bir "fotoğrafın" yeşilliği, en iyi ihtimalle yeşilin kırmızıya ve maviye oranının hesaplanmasıyla elde edilir ve bu da "gökyüzü" pikselleri içerir.

Prosedürünüze gelince, aynı kamera ayarlarına sahip resimleri aynı aydınlatıcı (aynı yoğunluk ve renk sıcaklığı) altında çekerseniz,% 18 gri kart gibi ortak bir taban çizgisine karşı ölçülen açık bir şekilde sonuçlarınızı normalleştirmek için uzun bir yol. Dijital ile, RAW işleme yazılımı ve temel beyaz dengesi seçici aracıyla herhangi bir tutarsızlık düzeltilebilir, bu nedenle RAW'da çekim yaptığınızdan emin olun.


Fotoğraflarınızın "yeşilliğini" hesaplama konusunda daha fazla bilgi vermek için. Yeşil bayer piksellerinin mavi ve kırmızıya karşı ağırlığının hesaplanması veya RGB piksellerinin kırmızı / mavi saflığına göre yeşil saflığın hesaplanması gibi açık bir şekilde basit yollar vardır. HSV ( Ton / Doygunluk / Değer , bazen HSB olarak adlandırılır, Değeri Parlaklık ile değiştirir) gibi daha uygun bir renk uzayına dönüştürürseniz ve HUE alanında bir eğri kullanarak yeşil miktarınızı hesaplarsanız daha fazla şansınız olabilir . (NOT: HSL renk alanı farklı bir türüdür ve muhtemelen HSV kullanırsınız böylece, bir fotoğrafta ne kadar "yeşil" bilgi işlem için ideal olmaz Bu renk boşluk hakkında daha fazla bilgi edinebilirsiniz. Burada.) Saf yeşil (doygunluk veya değere bakılmaksızın) 120 ° 'lik bir ton açısına düşer ve kırmızıya (0 °' de) veya maviye (240 ° 'de) giderken oradan düşer. 240 ° ve 360 ​​° arasında, doygunluk veya değere bakılmaksızın bir pikselde sıfır miktarda yeşil olur.

Renk Tonu - Renk Tonlarında Yeşil Saflık
Şekil 1. Renk Tonu Grafiği - Renk Tonlarında Yeşil Saflık

Gerçek ağırlık eğrisini özel gereksinimlerinizi karşılayacak şekilde ayarlayabilirsiniz, ancak basit bir eğri aşağıdakine benzer olabilir:

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

Değeri 1.0pureGreen olmalıdır . Daha sonra hesaplama için bir formül aşağıdaki gibi yapılabilir:greenness

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

hueSenin HSV renk değerinden renk derecesidir. Bu radius, periodyeşilin bir dereceye kadar mevcut olduğu yarısıdır . scaleÖyle ki ayarlanabilece¤inden bizim döneme günah eğrisi, sin(scale * hue)saf yeşil (yani yeşillik yoğunluğunu göz ardı) olurdu tam olarak zirveler (döner 1.0). Miktarı greennessyalnızca dönemin ilk yarısında geçerli olduğundan, yeşillik hesaplaması yalnızca renk tonu 0 ° 'den büyük ve 240 °' den az olduğunda ve diğer renkler için sıfır olduğunda geçerlidir.

Ağırlığı, tanımladığınız aralığı green(örneğin, 0'dan 240'a değil, 40 > hue > 200bunun yerine bir kısıtlama ayarlayabilirsiniz ) tanımlayabileceğiniz aralığı ayarlayarak ve bu aralığın dışındaki herhangi bir şeyi yeşilin 0 olması için ayarlayabilirsiniz. Bunun matematiksel olarak doğru olacağına dikkat edilmelidir, ancak tamamen algısal olarak doğru olmayabilir. Tabii ki pure greensarıya doğru daha fazla noktayı ayarlamak için formülü değiştirebilir (daha algısal olarak daha doğru sonuçlar üretebilir), eğrinin platoya genliğini artırabilir ve saf yeşil bandı tek bir renk yerine bir ton aralığına genişletebilirsiniz. ton değeri, vb. Toplam insan algısal doğruluğu için, CIE XYZ ve CIE L a b * 'de işlenen daha karmaşık bir algoritmaalan gerekebilir. (NOT: XYZ ve Lab alanında çalışmanın karmaşıklığı, burada açıkladığımdan çok daha fazla artmaktadır.)

Bir fotoğrafın yeşilliğini hesaplamak için, her pikselin yeşilliğini hesaplayabilir, ardından bir ortalama üretebilirsiniz. Daha sonra algoritmayı oradan alıp özel ihtiyaçlarınıza göre ayarlayabilirsiniz.

Renk dönüşümleri için algoritmaları RGB'den HSV'ye olduğu gibi EasyRGB'de bulabilirsiniz :

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
Ham işleme tekniğine +1. Dcraw
Lütfen Profilim

1
Ham İşleme, yeşil seviyenin hesaplanmasını kolaylaştıracak, ancak renk atımı ile uğraşmayı oldukça daha karmaşık hale getirecektir.
jrista

3

GLOBE projesi ?

Beyaz bir kağıt kullanmayın. Bunlar, UV ışınlarını mavi ışığa dönüştürerek yanlış pozlamaya neden olan optik parlatıcılar içerir. Ticari graycards (jrista tarafından önerildiği gibi) var olmasının nedeni budur.

Tüm fotoğrafları tam olarak aynı yerden çekmek kesinlikle doğru yaklaşımdır. Enstantane hızı ve diyafram ile ilgili olarak, bunlar önemli olmamalıdır. Obtüratör hızı hiç renk değiştirmez, diyafram görüntüyü bulanıklaştırır, ancak tüm piksel değerlerini topladığınızda bu efektin yine de yok olduğunu düşünüyorum. Sürekli maruz kalmayı tercih ederim.

Bulutlu ve bulutsuz arasındaki farkla ilgili olarak, sadece bazı testler yapmak isteyebilirsiniz. Gerçek yeşil miktar hızlı bir şekilde değişmezse (yani bugünden yarına), o zaman resimleri incelerken bunu yapmamalıdır. Belki de ampirik bir yaklaşım yardımcı olabilir (örneğin, yeşilliklerin bulutlandığında her zaman% 10 daha yüksek olduğunu fark ederseniz, bunu telafi edebilirsiniz).


bu bir GLOBE projesi değildir, fakat bir projeye dönüştürülebilir; siteyi işaret ettiğiniz için teşekkürler.
David LeBauer

Belki de ilginizi çekebilir: Şu anda videoları, örneğin web kameralarından ve çıktı istatistiklerinden (yeşil paylaşım vb.) Analiz etmek için bir program yazıyorum. Önümüzdeki haftalarda bitirilmesi gerekiyor. phenocam.granjow.net
Simon A. Eugster

kulağa faydalı geliyor. Herhangi bir bilim adamıyla işbirliği yaptınız mı?
David LeBauer

Değerlendirme yöntemleri son bölüm olacağından çok fazla değil (ve kolayca değiştirilebilir / eklenebilir). Ama ETH Zürih'ten bir proje ve orada da kullanılacak. (Kesin olmak gerekirse, başlangıçta lise öğrencileri tarafından Globe projeleri için kullanılacaktır.)
Simon A. Eugster

1
  1. 'RAW' çekim yapmayı ve kameranın otomatik beyaz dengesini kullanarak 16-bit TIFF'e dönüştürmeyi, ancak gama düzeltmeyi (yani renk dengeli ama doğrusal çıktı) kullanmanızı öneririm. 16-bit, derin gölgeler ve açıktonlarda oranların ve indekslerin daha iyi hesaplanmasını sağlayacaktır (yani kırpma yok). DCRAW bunu yapabilir, ancak kameranız muhtemelen kullanımı daha kolay olan kendi yazılımı ile birlikte gelir.

  2. Endeks istiyorsanız RGB gerçekten kullanışlı tek renk alanıdır. Zaten 'yeşil ıraksama' endeksinden bahsettiniz (Aşırı Yeşil İndeks olarak da adlandırılır) - bu ve yakından ilişkili Yeşil Yaprak Algoritması oldukça iyi çalışıyor. Renk tabanlı piksel sınıflandırması yapmak istiyorsanız (örn. Sebze ve sebze olmayan) , HSV / HSI yerine L a b * renk uzayına yakından bakarım . L göstermektedir Mathworks web sitesinde oldukça iyi bir demo aslında yoktur ab * analizi. Sınıflandırma, a) kaç tane yeşil piksel olduğu ve b) ne kadar yeşil oldukları sorularına cevap vermek için spektral analiz ile düşünülebilir şekilde birleştirilebilir. Bu, zaman içinde de değişebilen arka plan spektral kalitesinden (toprak, çöp vb.) De etkilenecek olan yeşilimsi bir endeksten daha yararlı olabilir. Bir mısır mahsulünden bahsettiniz, bu yüzden kamerayı aşağıya doğru çevirdiğinizi varsayıyorum, yukarı değil mi?

  3. İki kameranız varsa, aşağı bakan görüntüleri (yeşillik ölçümü) bitki örtüsünü ölçen yukarı bakan görüntülerle birleştirebilirsiniz. Yukarı doğru görüntüler spektral analiz için uygun olmaz ve piksel sınıflandırması, muhtemelen RGB görüntüsünün sadece mavi kanalını kullanarak, gökyüzü / gökyüzü dışı arasındaki kontrastı temel alır.

  4. (Günlük?) Zaman çizelgeleri topluyorsanız, aşağı doğru görüntüleri 'bulutlu gün' görüntülerine ve 'güneşli gün' görüntülerine bölebilir ve önyargı olup olmadığını kontrol edebilirsiniz. Ham işleme sırasında varsa, önyargıları düzeltmek için renk dengesi ile oynayabilir veya güneşli ve bulutlu günlerin serpiştirildiği varsayılarak bir diziyi diğerine uyacak şekilde yeniden ölçeklendirebilirsiniz (basit tutun).

İyi eğlenceler.


Kırmızı, yeşil ve mavi çinileri olan bir renk döşemesi, bu yoldan giderseniz gri karttan daha iyi olabilir.
balıkgözü
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.