GRASS'ta pan-keskinleştirilmiş Landsat görüntülerinin yanlış kompozitlerini nasıl dengeleriz?


9

Ben kullanarak ÇİMLER bazı Landsat görüntüleri kaydırmak-keskinleştirme kompozitler deneyin zaman i.pansharpen, i.fusion.broveyya IHS yöntemi keskinleştirme, çıkış aşağıdaki özelliklerden bazılarını veya hepsini sahip olacaktır:

  • bileşik renk, keskinleştirilmemiş kompozitle karşılaştırıldığında farklı bir renk tonundadır
  • parlaklık seviyesi bozuldu
  • Kompozitin tamamı tamamen beyaz / tamamen siyah oldu (atmosferin tepesine yansıtma veya yüzey yansıtma düzeltmelerine önceden işlenmiş görüntüler kullanılırken i.landsat.toar)

Ayrıca aşağıdakilerin hepsini denedim ; ancak renkler / parlaklık aynı kaldı veya daha da kötüleşti:

  • Uygulamalı i.landsat.rgb, öncesi ve sonrası pan-bileme işlemi
  • -fVeya -pbayrağıyla oynandıi.landsat.rgb
  • r.colorsRenk tablosunu gri / grey255 / grey.eq olarak düzenlemeye çalıştım
  • Güvenilir i.pansharpentüm Brovey / IHS / PCA yöntemleri kullanılarak
  • Mavi kanalı yeniden dengelemek için -lbayrakla oynandıi.pansharpen

ÇİM CBS kılavuzu pan-keskinleştirme ve renk dengeleme nasıl gerçekleştirileceği açıklanmıştır, ama ben bir eşzamanlı iş akışında iki yöntemi birbiriyle kombine anlamaya olamaz. Bunun GRASS'taki renk tabloları, renk histogramı vb. Konusundaki zayıf anlayışımdan kaynaklandığından şüphelendim.

Peki, birisi bana açıklayabilir mi - GRASS'ta görüntü işlemeden sonra Landsat görüntüleri ile uğraşırken renk dengeleme problemlerini nasıl çözersiniz? Favori iş akışınızı / yöntemlerinizi benimle paylaşabilir misiniz?

Herhangi bir geri bildirim için çok teşekkürler!

Yanıtlar:


6

genel bakış

Pan keskinleştirme işleminden sonra kabul edilebilir bir renk dengeli kompozit görüntü elde etmek için GRASS-GIS sürüm 7 içinde bir çalışma yaklaşımı

  1. giriş verilerinin 8 bitlik aralıklarla değişip değişmediğini kontrol edin [0, 255]
  2. eğer veriler [0, 255] içindeyse yatay keskinleştirme ( i.pansharpen) işlemine devam edin
  3. veriler [0, 255] içinde değilse, bu aralığa yeniden ölçeklendirin ( r.rescale)
  4. öne çıkan yöntemlerden herhangi biriyle pan keskinleştirin (Brovey, IHS, PCA)
  5. i.landsat.rgbmodülü kullanarak veya ilgili bantların renk tablolarını manuel olarak ayarlayarak otomatik olarak renk dengesi

Ayrıntılar ve örnek talimatlar

Yatay Keskinleştirme / Füzyon

GRASS 7 , bileme i.pansharpeniçin üç teknik olan Brovey dönüşümü , klasik IHS yöntemi ve PCA tabanlı bir pan-özelleştirme modülüne sahiptir .

i.pansharpengiriş olarak 8 bit tarama haritalarıyla iyi çalışır. İşlenecek veriler bu aralığın dışındaysa, yani bu dışındaysa, [0, 255]GRASS r.rescalemodülü kullanılarak bu aralığa sığacak şekilde yeniden ölçeklendirilebilirler .

Aralarında bir dizi 11 bit spektral bant (örneğin, Mavi, Yeşil, Kırmızı, NIR ve Pan) [0, 2047]verildiğinde, örneğin Mavi bandı sorgulamak geri dönecektir

r.info Blue_DNs -r
min=0
max=2047

Blue bandını, [0, 255]

r.rescale in=Blue_DNs out=Blue_DNs_255 from=0,2047 to=0,255

Aynı adım, hem çok-spektral bantların geri kalanı hem de ilgilenilen Panchromatic bandı için geçerlidir.

GRASS ile çalışırken her zamanki gibi, ilgilenilen bölgeyi ayarlamak, yani bant (lar) ın veya başka bir şeyin boyutuna uymak gerekir. Bu özel durumda özünürlük modül tarafından dikkate alınır ve ortaya çıkan pan-bilenmiş tarama haritaları, Pankromatik bant ile aynı yüksek (er) çözünürlüğe sahip olacaktır.g.regionrast=Blue_DNs_255

IHS tabanlı Pan Keskinleştirme eylemi için örnek bir komut,

i.pansharpen pan=Pan_DNs_255 ms1=Blue_DNs_255 ms2=Green_DNs_255 ms3=Red_DNs_255 output=sharptest255 sharpen=ihs

Renk Dengeleme

İşlem tamamlandıktan sonra modül çıkışı

...
The following pan-sharpened output maps have been generated:
sharptest255_red
sharptest255_green
sharptest255_blue

To visualize output, run: g.region -p rast=sharptest255.red
d.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue

Normalde, pan keskinleştirmeden sonra, örneğin i.landsat.rgb modülünü veya bir RGB görüntüsü oluşturacak üç bandın her birinin manuel ayarını kullanarak renkleri yeniden dengelemek yeterli olmalıdır .

Ekran görüntüleri

... eklenecek


Daha iyi bir yol olması gerektiğini biliyordum! Şimdi i.sharpen modülünü özgürce kullanabilirim. R.rescale modülünü işaret ettiğiniz için teşekkür ederiz. Harika iş Nikos!

Haziq, 11-bit veri setleri 8-bit dönüştürülürken "ince" ayrıntıların kaybolup kaybolmadığından ve ne kadar emin değilim. Örneğin QuickBird görüntüleri 11 bitlik bir sensördür. Hem 8 bit hem de 16 bit formatlarında mevcuttur. Ne yapacağına karar vermek kullanıcıya bağlıdır. Her i.pansharpentürlü formatı işlemek kesinlikle iyi olurdu . Lütfen ilgili bir "bilet" e göz atın: Ticket # 2048: i.pansharpen 8 bitlik görüntülerle sınırlıdır . Öte yandan, ben sadece şeyler anlamayabilir ve bu nedenle, i.pansharpen düzgün kullanmak mümkün değil ...?
Nikos Alexandris

7

Yüksek ve alçak aradım ve sanırım sorunların kökenini keşfettim. Şimdi onlar için bir çözüm bulduğuma inanıyorum - ama biraz dağınık. Eminim onları çözmenin daha iyi yolları vardır. Daha kolay bir yol biliyorsanız paylaşın!

SORUNUN KÖKLERİ:

  1. Çıktısı i.landsat.toar kayan noktadır . Herhangi bir pan keskinleştirme yönteminde kayan nokta rasterlerini kullandığımda renklerin karışacağını fark ettim. Bu algoritma bir şekilde orijinal tamsayı formundaki rasterleri tercih etti.
  2. Pan-Bileme gibi modüller i.pansharpen ve i.fusion.brovey modüller karışıklık çekim renkler olacak . Bu modüllerde kullandıkları algoritmaları tam olarak anlamadım - ancak bir şekilde renk tabloları etkilenecek ve sonuçta ortaya çıkan pan-keskinleştirilmiş görüntüleri bozacak.

ÇÖZÜM:

  1. i.landsat.toar Kullanarak çıktıyı float'tan int'e dönüştürünr.recode .
  2. IHS pan keskinleştirme yönteminde ( i.rgb.hisve i.his.rgb) rasterleri giriş olarak kullanın . Ben kullanarak uzak tutmak i.pansharpenve i.fusion.brovey.

İŞ AKIŞI:

  1. İşlenen raster bantlarının DN min ve maks değerlerini almak r.info için -r bayrakla birlikte kullanıni.landsat.toar . Örneğin:

    > r.info -r BAND1
    min=0.01
    max=0.370064120902708
    

    Gördüğümüz gibi, değerler orijinal değerlerden oldukça farklı olan 0-1 arasındadır (0-255 arasında). Bu, pan keskinleştirmeden elde edilen çıktının neden boş olduğunu açıklamaktadır, çünkü kullanılan değer aralığı çok düşüktür (1'in altında).

  2. Raster bandını kullanarak dönüştürün r.recode . 0-255 arasında yeni bir aralığa dönüştürmek için adım 1'den elde edilen minimum ve maksimum değerleri kullanın. Örnek bir kod snippet'i:

    r.recode input=BAND1 output=NEWBAND1 rules=- << EOF
    0.01:0.370064120902708:0:255
    EOF
    

    Yeni dönüştürülmüş değerleri şunlarla kontrol edebiliriz r.info:

    > r.info -r NEWBAND1
    min=1
    max=254
    

    Değerler 0-255 arasındadır: şimdi pan-bileme işlemi için kullanılabilir.

  3. İle dönüştürülmüş banda gri tonlama renk tablosu uygulayın r.colors .

    r.colors NEWBAND1 color=grey
    

    Şimdiye kadar, gri renk tablosunu kullanarak en iyi sonuçları elde ediyorum - orijinal kompozitlerle yakından eşleşen pan-keskinleştirilmiş kompozitler. Diğer alternatifler ise gri renk tablosunu bayrağını color=grey.eqveya -ebayrağını kullanarak eşitlemektir color=grey. Veya i.landsat.rgbyerine modül kullanabiliriz r.colors..

  4. Pan raster (bant 8) dahil olmak üzere kompozit olarak kullanmayı düşündüğümüz diğer raster bantları ile adım 1-3'ü tekrarlayın . Komut dosyalarının kullanımı burada çok takdir edilecektir.

  5. Daha sonra işlenmiş rasterleri IHS yatay bileme yönteminde girdi olarak kullanın . Örneğin, 7,4,2 bandının kompozitini yaparken:

    i.rgb.his r=NEWBAND7 g=NEWBAND4 b=NEWBAND2 hue=HUE int=INT sat=SAT
    

    Böylece 3 katman elde edilir: renk tonu katmanı HUE, yoğunluk katmanı INTve ayrıca doygunluk katmanı SAT. Daha sonra yoğunluk katmanını INTpan raster bandı NEWBAND8ile değiştireceğiz i.his.rgb:

    i.his.rgb hue=HUE sat=SAT int=NEWBAND8 r=COMP742_red g=COMP742_green b=COMP742_blue
    

    Sonuçta çıkan COMP742_red , COMP742_green , COMP742_blue kırmızı kanalları daha sonra d.rgbveya kullanılarak birleştirilebilir r.composite.

ÖNCE VE SONRASI ÖRNEK:

Yatay keskinleştirme öncesinde:

Önce

Pan keskinleştirmeden sonra:

Sonra

Belki de bu kadar küçük görüntülerden bakarken keskinleştirme farklılıklarını söylemek zor . Ancak önemli olan, pan ile keskinleştirilmiş görüntünün rengi kompozitle orijinalden eşleşiyor. Görev tamamlandı!

DİĞER NOTLAR:

  • Yapma r.recode termal bantları (kuşak 6) . i.landsat.toarbu termal bantları Kelvin sıcaklık değerlerinde (DN değerleri ile ilgisi yoktur) çıktılar. r.recodeRutini normal çok spektral ve pan bantları üzerinde tutun (bantlar 1-5,7,8).
  • Hiç kullanmıyorsak i.landsat.toar , ancak ortaya çıkan kompozitler gerçekten yanlış görünüyorsa , bunun nedeni genellikle pan keskinleştirme işleminden önce ve sonra renk tablolarının uyumsuzluğudur. r.colors RASTER color=greyPan keskinleştirmeden önce orijinal tarama bantlarına ve pan keskinleştirmeden sonra ortaya çıkan kanallara renklerin yakın eşleşmesini sağlamak için uyguladım .
  • Yanlış renkli kompozit Sorunun rastlanan durum : Orijinal raster bantları bulunmaktadır color=grey255, çıkış i.landsat.rgbiçindedir color=grey.eq. İkisinin de farklı göründüğüne şaşmamalı!
  • Landsat görüntülerin kullanım için işlenmesi gerçekten zaman alıcı bir etkinlik olabilir . Her şeyin işlenmesini beklerken bir şeyler yapsanız iyi olur, ya da en azından işteyken gülünç miktarda kahve ve iyi müzik dinleyebilirsiniz;)

Umarım bu birisine fayda sağlar: yanlış olanı bulmak için günlerimi aldı ..


1
Araştırmalarınız ve çabalarınız için teşekkürler, bu sorunu svn'den yeni GRASS 7'de de yaşadım. Şimdi pansharpened görüntünün renkleri tamam. =)
Vladimir

Oh evet, hangi GRASS sürümünü çalıştırdığımı söylemeyi unuttum - hatırlattığınız için @VladimirNaumov'a teşekkürler! GRASS 7svn kullanıyorum; Bu sorunun tüm GRASS sürümlerinde (başka sürümleri denemedim) gerçekleşmeyecek bir şey olabileceğini fark

Buna geri dönün: r.mapcalcentegre int()işlevi ile birlikte kayan nokta tarama haritalarını tam sayı tarama haritalarına dönüştürebilirsiniz . Bence r.recodebaşvurunuz bağlamında kullanılması amaçlanmamıştır.
Nikos Alexandris

1
Bence genel "sorun" i.pansharpengirdi olarak 8-bit raster haritaları beklemek olduğunu, yani giriş değerleri 0 ila 255 arasında olmalıdır.
Nikos Alexandris

Ayrıca, i.pansharpenyalnızca grass7_trunk içinde olduğunu unutmayın . Bu geliştirme sürümüdür ... :-)
Nikos Alexandris
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.