Normalisasikan nilai raster ke 0-255

8

Saya perlu menormalkan nilai yang diperoleh dari rasio band ke 0-255. Saya menggunakan QGIS. Bagaimana saya melakukan ini? Ada ide?

vascobnunes
sumber
1
Karena rasio, hati-hati! Misalnya, jika rasio dua gambar 0-255 dengan histogram yang disamakan, maka setengah rasio akan berada di antara 0 dan 1 sedangkan setengah lainnya akan antara 1 dan 255 (dan beberapa akan tidak terdefinisi): itu adalah perbedaan besar dalam rentang ! Bergantung pada tujuan Anda, logaritma rasio mungkin merupakan jumlah yang lebih baik untuk dihitung; lebih baik lagi, hitung log ((1 + band1) / (1 + band2)) untuk menghindari jumlah yang tidak ditentukan. Paling tidak ini akan menghasilkan peta yang lebih mudah dibaca.
whuber

Jawaban:

11

Anda dapat menggunakan utilitas gdal_translate. Gunakan opsi-skala [src_min src_max [dst_min dst_max]] dengan src_min dan src_max sebagai nilai min / max saat ini dari data Anda dan 0,255 sebagai dst_min, dst_max. Tanpa tanda kurung.

Jika Anda telah menginstal QGIS dengan paket OSGeo4W, Anda mungkin memiliki program terminal yang disebut 'MSYS'. Buka itu dan gunakan saja perintah gdal_translate. Jika tidak, dari dalam QGIS pilih Raster -> Conversion -> Translate. Pilih file dan opsi Anda. Di bagian bawah jendela perintah gdal_translate lengkap akan ditampilkan. Klik edit dan tambahkan opsi -scale.

spatialthoughts
sumber
16

Berikut ini akan meregangkan data Anda menjadi 8-bit (0-255).

smin=0; smax=255

( x - min(x) ) * (smax - smin) / ( max(x) - min(x) ) + smin

Seharusnya cukup mudah untuk menerjemahkan ini ke sintaks aljabar raster pada perangkat lunak pilihan Anda. Anda hanya perlu tahu apa nilai min dan maks dalam raster Anda. Jika raster adalah hasil dari rasio band maka aman untuk mengasumsikan -1 to 1 dan sintaks seharusnya terlihat seperti ini.

NewRaster = ( OldRaster - -1 ) * 255 / ( 1 - -1 ) + 0
Jeffrey Evans
sumber
1
+1: Jawaban umum (sintaksis independen) memiliki aplikasi luas. Selamat datang di situs kami, Jeffrey!
whuber
smaxIstilah pertama benar-benar harus smax - smin- dalam contoh (0-255) tidak masalah, tetapi di mana smin! = 0
Simbamangu