GDAL kullanarak tarama bantları için renk yorumu nasıl eklenir?


9

3 ayrı 1 bantlı GeoTIFF dosyam var. Bant için renk yorumu gridir. 3 bantlı bir RGB dosyası istiyorum. Gdal_merge.py kullandım

gdal_merge.py -separate file1.tif file2.tif file3.tif -o output_file.tif

Ancak sonuçta ortaya çıkan output_file.tif dosyasının 3 bandı için renk yorumu gri, tanımsız, tanımsızdır. Bunun dışında tüm pikseller 0 .

Pct2rgb.py yürütürsem, bir RGB dosyası alıyorum:

pct2rgb.py output_file.tif output_file_rgb.tif

Ama elbette, pikseller de 0. 3 sorum var:

  • Gdal_merge.py 3 adet 1 bantlı dosyayı bir 3 bantlı RGB dosyasında birleştirmek için doğru araç mı?
  • Bantlar için neden tanımsız renk yorumu alıyorum?
  • Bu renk yorumuyla 3 bantlı dosyaları RGB dosyalarına dönüştürmek için pct2rgb doğru araç mı?

GÜNCELLEME : Rasterlerin renk tablosu yoktur. Sadece renk yorumu: Gri.

Öte yandan, piksel değerleri 0'dan 1023'e gider (bu kasıtlıdır)

Daha fazla veri: döndürülmüş rasterler (kuzeye doğru değil), ancak hepsi aynı jeotransforma sahip.

GÜNCELLEME 2 : Görüntüleri kuzeye çıkarmak, bir VRT oluşturmak ve her bant için ColorInterp eklemek için çarpıtabilirim, ancak yine de çıktı sonucunda gri, tanımsız, tanımsız olarak renk yorumu alıyorum.

Sorun şu ki, en azından ilk bantta bir renk tablosu oluşturmam gerekiyor. Onları oluşturmanın yolunu biliyorum , ama masamın kaç girişi olması gerektiğini bilmiyorum. GDAL Raster SSS örneğinde neden 13 kayıt var? Tüm piksellerin yardımcı olması durumunda 0 ile 1023 arasında değerleri vardır.

GÜNCELLEME 3 : Görünüşe göre, TIFF formatında her bandın renk yorumunu gerçekten belirtmenin bir yolu yok. Bir TIFF dosyasını okurken GDAL'ın renk yorumunu oluşturma biçimi, PHOTOMETRIC ve EXTRASAMPLES etiketinin değerinin birleşimidir .

Bu etiketler hakkında okuma:

  • FOTOĞRAF , görüntü verilerinin renk uzayını temsil eder. 2 değeri, bir piksel değeri bileşenlerinin RGB olduğu anlamına gelir, ancak Bayt pikselleri varsayar ve UInt16 pikselim var (denedim -co "PHOTOMETRIC=rgb"ve bir hata aldım). Bu nedenle, çıktı dosyası için PHOTOMETRIC etiketini belirleyemiyorum.

  • EXTRASAMPLES , her pikselin N ekstra bileşen içerdiğini belirtir. Birleştirilmiş dosyamı oluşturmak için bu etiketi nasıl kullanacağımdan emin değilim. Ya da ihtiyacım olursa.

Yani, güncelleme 2'de bir ColorTable oluşturulmasını öneriyorum, ama nasıl? 3 giriş dosyamda piksel değerleri 0'dan 1023'e gider. Bunları renklerle eşleştirmem gerekiyor mu? 1024 girişli bir ColorTable oluşturmam gerekiyor mu? Nasıl?

Güncelleştirme 3'te, birleştirilmiş dosyayı oluştururken bazı GeoTIFF etiketlerini kullanabileceğim gibi görünüyor, ancak bunları gerçekten kullanıp kullanamayacağımdan veya nasıl kullanacağımdan emin değilim.


1
Bunu deneyin: Yaptığınız gibi gdal_merge kullanın, ardından gdal_translate -co PHOTOMETRIC = RGB, ne olursa olsun gdal_merge -co'yu onurlandırmaz. Bu göründü benim için işe. Hedefinizi yanlış anlasam da.

Tavsiyeniz için teşekkürler! 3 tek bantlı geotiff'i bir 3 bantlı geotiff'de birleştirmek istiyorum. Benim sorunum gdal_merge çıktı aslında boş (piksel = 0). Bu çıktıyı hiçbir şey için kullanamıyorum.
Jorge Arévalo

Verileri bir yere göndermek mümkün mü, bir şey yanlış görünüyor.

Patronuma sordum ve verileri yayınlayamıyorum :-(. Dosyaları bağımsız bir kodla karıştırabilirim, bu da çıktıdaki bant dosyalarını bantla kopyalar. Gdal_merge ile yapmak istiyorum Benim sorunum, gdal_merge ile çıktı dosyası için RGB renk yorumunu ayarlayamıyorum
Jorge Arévalo

Belki de benzer bir sorun yaşadım. Bu rgb2pct.py ile çalışma var. Neden ?, bilmiyorum. Komutun açıklaması: Bu yardımcı program, aşağı örneklenmiş bir RGB histogramında ortalama kesme algoritması kullanarak belirli bir RGB görüntüsü için en uygun sahte renk tablosunu hesaplar. Sonra genişleme rgb ile gdal_translate çalıştırın.

Yanıtlar:


6

gdal_merge.py giriş resimlerinizi 'yığınlamak' için doğru araçtır.

İlk bandınızın geçerli bir renk tablosu olduğunu varsayarsak, şunları kullanabilirsiniz:

gdal_merge.py -separate -pct -o output_file.tif file1.tif file2.tif file3.tif

Not: Komut, -o output_file.tifgirişler listesinden önce yeniden biçimlendirildi .

Dokümanlardan:

-pct: İlk girdi görüntüsünden bir sözde renkli tablo alın ve çıktı için kullanın. Sahte renkli görüntüleri bu şekilde birleştirmek, tüm girdi dosyalarının aynı renk tablosunu kullandığını varsayar.

Çıktınızı gdalinfo -statsdoğru şekilde istiflendiğinden emin olmak için test ediyorum .

OP için güncellendi

Gönderen osgeo listesinde sonuçları incelemek farklı bir biçim deneyin olabilir gibi, görünüşe:

TIFF formatında her bandın renk yorumunu gerçekten belirtmenin bir yolu yoktur. Bir TIFF dosyasını okurken GDAL'ın renk yorumunu oluşturma biçimi, PHOTOMETRIC ve EXTRASAMPLES etiketinin değerinin birleşimidir.

-Evan (poster) GDAL'i içeride ve dışarıda biliyor.


Aslında bunu yaptım, ancak "HATA 6: SetColorTable () çoklu örnek TIFF dosyaları için desteklenmiyor." Ve tüm pikseller için 0 alıyorum. Bu hatanın anlamından emin değilim.
Jorge Arévalo

Tamam, güncellenmiş soru. İlk grup için bir renk tablosuna ihtiyacım var.
Jorge Arévalo

Mmm ... cevap için teşekkürler. Bu seçenekleri deniyorum. Benim veri türü int olmadığı için PHOTOMETRIC = rgb kullanamıyorum daha görünüyor. Ama üzereyim ...
Jorge Arévalo

3

Düşünebileceğim ilk yol bir vrt oluşturmak, düzenlemek ve çevirmektir:

gdalbuildvrt -separate output.vrt file1.tif file2.tif file3.tif

gerektiğinde renk yorumu etiketini ekleyin:

...
<VRTRasterBand dataType="Byte" band="1">
<ColorInterp>Red</ColorInterp>
<NoDataValue>255</NoDataValue>
<ComplexSource>
  <SourceFilename relativeToVRT="1">test.tif</SourceFilename>
  <SourceBand>1</SourceBand>
  <SourceProperties RasterXSize="42" RasterYSize="22" DataType="Byte" BlockXSize="42" BlockYSize="22" />
  <SrcRect xOff="0" yOff="0" xSize="42" ySize="22" />
  <DstRect xOff="0" yOff="0" xSize="42" ySize="22" />
  <NODATA>-32768</NODATA>
</ComplexSource>

ve sonra:

gdal_translate output.vrt output.tif

Denedim ama raster dosyalarım döndürüldü ...
Jorge Arévalo

Yani aynı SRS / jeotransformlara sahip değiller mi?

Hayır, hepsinin aynı jeotransformları vardır, ancak kuzey yukarı rastlayıcıları değildir (dönüş parametreleri 0 değildir). Ve gdalbuildvrt döndürülmüş coğrafi dönüşümleri desteklemez. Onları çarpıtmak istemiyorum.
Jorge Arévalo

Mmmm tamam. Onları kuzeye kadar raster oluşturmak için çarpıtırsam, VRT'yi oluşturabilirim ve gerektiğinde ColorInterp ekleyebilirim, satın al hala gri, tanımsız, tanımsız alıyorum. İlk grup için bir renk tablosu oluşturmam gerekiyor, ama nasıl olduğunu bilmiyorum. Soruyu güncelleyeceğim.
Jorge Arévalo

1

Giriş gri tonlama bandınızın 0 ila 1024 arasında değerleri vardır, ancak RGB her bant için yalnızca 0 ila 255 arasındaki değerlere izin verir.

gdal_translate -scale [src_min src_max [dst_min dst_max]]Kaynak dosyanızı yeniden ölçeklendirmek için kullanabilirsiniz .

İkinci bir çalışmada, üç bandınızı gdal_merge.py ile istifleyebilir ve uygulayabilirsiniz -co "PHOTOMETRIC=rgb".

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.