Apa Arti Nilai Sel di dalam Raster Komposit?

9

Ketika saya membuat raster komposit di QGIS menggunakan alat GRASS r.composite dan kemudian mengklik sel tertentu saya mendapatkan nilai-nilai ini dalam raster biru / hijau / merah / komposit: biru = 124 hijau = 124 merah = 172 komposit = 15861.

Saya tahu bahwa biru / hijau / merah mewakili nilai kecerahan dari band yang diberikan. Apa yang digambarkan oleh 15861 dan bagaimana cara menghitungnya?

Jim O'Leary
sumber
1
Kemungkinan nilai integer yang mewakili komposit alfa: docstore.mik.ua/orelly/java-ent/jfc/ch04_07.htm
WhiteboxDev
1
QGIS dan Rumput versi apa yang Anda gunakan? Selain itu, sebutkan pengaturan Anda karena berdampak pada operasi (dan karenanya perhitungan r.composite) Menariknya, saya secara konsisten hanya mendapatkan RGB dan tidak ada band komposit di 2.4.
MappaGnosis
Saya menggunakan QGIS 2.2 pada Windows 7 dengan GRUI 6.4.3 GUI. Untuk pengaturan, saya menggunakan 32 untuk jumlah nilai untuk merah, hijau, dan biru. Tutorial yang saya gunakan adalah kursus FOSS4G Academy tentang Penginderaan Jauh. Dokumen tutorialnya ada di foss4geo.files.wordpress.com/2014/08/module-3-lab2.pdf .
Jim O'Leary
2
Silakan baca manual untuk r.composite . Jika Anda menggunakan level intensitas "default" untuk setiap komponen (yaitu 32), Anda harus mendapatkan nilai RGB yang sedikit berbeda dibandingkan dengan "input" RGB. Anda mungkin ingin menggunakan r.what dengan -rparameter ( Output color values as RRR:GGG:BBB) untuk menanyakan kombinasi RGB sel. Juga untuk melihat r.what.color . [Tautan ke GRASS6, karena ini adalah versi yang digunakan OP].
Nikos Alexandris
1
Periksa juga utas ini: lists.osgeo.org/pipermail/grass-user/2015-January/071739.html .
Nikos Alexandris

Jawaban:

1

Angka 124 sebagai byte biner (delapan digit) adalah 01111100. Untuk merepresentasikan RGB rangkap tiga dari tiga byte akan membutuhkan tiga kali delapan, atau 24 bit tersebut. Secara default, r.compositekurangi ini menjadi hanya 15 bit dengan membuang bit paling tidak signifikan di setiap band. Jadi, ini memotong 01111100 ke 01111, yaitu 15. (Sama, itu membagi 124 dengan 8 dan mengabaikan sisanya.) Rupanya tiga hasil lima-bit ini digabungkan dalam urutan B, G, R untuk membentuk angka 15-bit (mewakili nilai antara 0 dan 2 ^ 15-1 = 32767, yang cukup kecil untuk menjaga tabel warna ke ukuran yang dapat dikelola). Oleh karena itu nilai-nilai ini mewakili tiga pita gambar, masing-masing dengan hanya lima bit presisi daripada delapan yang asli.

Dalam contoh pertanyaan, perhitungan dilanjutkan seperti ini:

  1. Biru = 124 dikonversi menjadi 124/8 = 15 (ditambah sisa 4 yang diabaikan). Dalam biner ini adalah 01111.

  2. Hijau = 124 dikonversi menjadi 124/8 = 15 (ditambah sisa 4 yang diabaikan). Dalam biner ini adalah 01111.

  3. Merah = 172 dikonversi ke 172/8 = 21 (ditambah sisa 4 yang diabaikan). Dalam biner ini adalah 10101.

  4. Digit digabungkan menjadi 01111 01111 10101. Angka biner 15 digit ini mewakili nilai 15861 = (15 * 32 + 15) * 32 + 21.

r.composite mungkin melakukan lebih banyak pemrosesan daripada ini, dan itu mungkin melakukannya sedikit berbeda tergantung pada opsi yang Anda berikan, tetapi operasi ini menunjukkan cara dasar di mana byte dapat dikonversi ke nilai lima-bit.

Anda dapat membalikkan prosedur menggunakan divisi berurutan sebanyak 32:

  1. 15861/32 = 495 ditambah sisa 21. (Dikalikan 8, sisanya 21 memberi 168, yang hanya sedikit kurang dari 172 asli untuk pita merah.)

  2. 495/32 = 15 ditambah sisa 15. (Dikalikan 8, sisa 15 memberi 120, yang hanya sedikit kurang dari 124 asli untuk pita hijau.)

  3. Kita dibiarkan dengan 15, yang bila dikalikan 8 memberi 120, yang hanya sedikit kurang dari 124 asli untuk pita biru.

Referensi

r.compositehalaman manual di https://grass.osgeo.org/grass72/manuals/r.composite.html .

whuber
sumber