BILKO: MENGGUNAKAN FORMULA UNTUK MENJALANKAN KALKULASI CITRA

Tujuan : Untuk memperkenalkan bagaimana cara kerja formula dan beberapa aplikasi formula untuk menampilkan perhitungan / kalkulasi pada citra dalam Bilko

Target : Pada akhir tutorial ini kita akan belajar bagaimana membangun formula sederhana dan mengaplikasikan-nya pada citra.

Data dapat diunduh disini

Formula merupakan tool yang bagus untuk modeling, dan menampilkan manipulasi dan perhitungan citra. Untuk orang yang kurang paham matematika mereka akan terlihat sedikit coba – coba terhadap persamaan matematika yang ada. Tutorial ini dimulai dengan informasi mengenai latarbelakang formula yang akan kita gunakan sebagai referensi perhitungan atau modeling citra. Latarbelakang ini menjelaskan syntax atau aturan yang digunakan dalam formula, memberikan beberapa saran bagaimana cara latihan terbaik menggunakan dokumen formula (menggunakan komentar atau konstanta) , menyediakan referensi operasi matematika dan logika  dan fungsi yang dapat digunakan dalam formula. Untuk kita yang sudah memiliki sedikit pengetahuan menggunakan spreadsheet(contohnya: Excel) atau bahasa pemrograman  akan memudahkan kita memahami bagaimana formula bekerja dan dibentuk. Untuk kita yang tidak memiliki kemampuan tersebut sebelumnya, mungkin akan kesulitan. Informasi di sini dapat juga diperoleh melalui Bilko on-line Help. Selama mempelajari latarbelakang, kita juga akan mencoba menggunakan formula sehingga kita dapat benar – benar mengerti secara aksi nyata.

Latarbelakang

Setiap dokumen formula berisi beberapa pernyataan yang dapat dijalankan, yang setiap pernyataan tersebut diakhiri semi-colon “;”. Citra yang akan dimodelkan atau dihitung diawali dengan simbol @ diikuti dengan angka yang menunjuk pada nomor pada toolbar Selector  pada citra yang saling terhubung (ter-stacking). Kecuali jika hanya bagian tertentu yang ter-seleksi pada citra yang menjadi referensi, dokumen formula akan dioperasikan hanya pada setiap piksel citra yang menjadi referensi.

Tutorial ini akan mengenalkan kita :

  1. menggunakan comments (komentar)

  2. operasi matematika (operator)

  3. fungsi

  4. mengatur konstanta

  5. Conditional statements, dan

  6. Operasi Bit-Wise guna memanfaatkan informasi “flag”

Comment

Comments membuat formula dapat dipahami oleh pengguna lain atau ketika kita membuka kembali formula kita. Comments merupakan kalimat pen-jelas terhadap rumus atau persamaan yang  ada pada formula dan didahului dengan simbol # (warnanya berubah hijau pada dokumen formula). Seluruh comments diabaikan oleh formula ketika dijalankan, hanya sebagai informasi tambahan untuk memperjelas maksud dan tujuan suatu rumus atau persamaan. Berikut adalah contohnya.

Operasi Matematika (Operator)

Dokumen formula memiliki operasi aritmetika, perbandingan (relasional), dan logika untuk manipulasi citra. Berikut adalah operasi yang paling penting.

 

Kita jangan dibingungkan oleh simbol (==) yang merupakan perbandingan yang menyatakan kesamaan, dengan simbol (=) yang digunakan untuk menyatakan konstanta atau pernyataan lainnya. Persamaan dalam dokumen formula memiliki tingkatan atau susunan mana yang lebih dahulu diproses dan mana yang lebih akhir diproses. Seperti operasi pada kurung tutup () dapat mengesampingkan susunan yang telah ada dan diproses paling awal sebelum yang diluar tanda kurung tutup. Dalam kurung tutup susunan operasi tetap dipertahankan. Jika pernyataan dalam dokumen formula berisi operasi lebih dari satu kategori, operasi aritmetika yang pertama, kemudian hubungan relasional, dan yang terakhir logika. Diantara operasi aritmetika, pangkat (^) yang pertama diproses, kemudian perkalian/pembagian (*,/), dan yang terakhir adalah penambahan dan pengurangan (+,-). Jika perkalian dan pembagian ( atau penambahan dan pengurangan ) terjadi bersamaan, maka setiap operasi diproses dari kiri ke kanan ( jadi yang paling kiri didahulukan). Jadi pernyataan formula seperti ini :

0.15 * (@1 – 3.0) ;

Pertama yang akan diproses adalah pengurangan setiap piksel yang disimbolkan atau diwakili @1 dengan 3.0, kemudian dikalikan dengan 0.15 untuk menghasilkan citra baru (dengan nilai piksel sesuai pernyataan). Seperti dijelaskan sebelumnya karena pengurangan terletak didalam tanda kurung tutup maka operasi pengurangan didahulukan. Sedangkan jika persamaan seperti di bawah:

0.15 * @1 – 3.0 ;

Setiap piksel pada @1 dikalikan terlebih dahulu dengan 0.15 kemudian dikurangi 3.0.

Formula sederhana seperti diatas dapat digunakan untuk mengubah nilai piksel 8 bit dari NOAA AVHRR yang telah ter-proses menjadi SST (yang tersedia gratis di internet) menjadi nilai derajat celsius sesuai nilai SST sebenarnya (Catatan: citra output harus disimpan dengan format penyimpanan 32 bit floating point untuk dapat menyimpan nilai derajat celsius). Mari kita mencoba sebelum menjadi bosan.

Buka citra Global_SST_Dec2000.gif , klik kanan pada citra dan pada pilihan Zoom, kemudian pada kotak dialog box Zoom atur menjadi 45%. Sekarang kita dapat melihat seluruh citra. Terlihat bahwa daratan pada citra tersebut berwarna hitam, hal tersebut karena seluruh daratan diatur nilainya menjadi 0, sedangkan laut berwarna abu – abu dengan rentang 0 – 255.

 

Gunakan histogram untuk mengetahui nilai rentang yang sebenarnya ( 1 – 241). Untuk menampilkan histogram seperti gambar di bawah ini. Klik kanan pada histogram ‣ Scale ‣ centang Ignore zero pada dialog box Scale.

 

Buka dokumen formula Pathfinder_SST.frm. Pelajari formula tersebut dan perhatikan karena hanya satu citra yang digunakan dan yang terbuka pada jendela Bilko maka citra ini yang dimaksud menjadi @1.

 

Pernyataan dalam formula (IF (@1 == 0) 0  ELSE  -3.0 + 0.15 * @1 😉 dapat dibaca seperti ini, jika setiap nilai piksel pada @1 (Global_SST_Dec2000.gif)  sama dengan 0 maka nilainya 0, selainnya (ELSE) 0 , maka sesuai dengan persamaan  -3.0 + 0.15 * @1 , yaitu mengubah nilai DN menjadi nilai derajat celsius. Catatan jika terdapat lebih dari satu citra yang terbuka maka kita harus menggabungkan-nya melalui Image, Connect, sehingga program tau mana citra yang menjadi @1.

Gunakan menu Options! (menu ini akan muncul jika formula menjadi jendela yang aktif) untuk mengatur Output Image Type :  menjadi 32 bit floating point, sehingga angka derajat desimal dapat dimunculkan.

 

Sehingga muncul dialog box Formula Option, pilih 32 bit floating point.

 

Sekarang copy formula dan kemudian paste formula ke dalam citra. Dan citra baru akan tercipta dengan nilai piksel yang sama dengan suhu permukaan laut dalam derajat celsius.

 

Klik kanan pada citra baru dan pilih Redisplay.  Pada dialog box Redisplay Image centang Null Values(s): 0  dan pilih Equalize sebagai metode untuk menajamkan citra.

 

Periksa citra baru,  sekarang seluruh daratan dan awan direpresentasikan sebagai “?” pada status bar, dimana area SST menunjukkan derajat celsius.

 

Untuk memeriksa rentang nilai temperatur buka histogram dari citra yang baru.

 

Fungsi

Berikut adalah fungsi yang terdapat pada dokumen formula. “Argument” yang kita harapkan untuk dapat dijalankan harus berada dalam kurung tutup. Untuk fungsi trigonometri (sin, cos, tan and arc tan) argument harus dalam radian (bukan derajat). 180o = π radian, jadi kita dapat mengubah derajat menjadi radian melalui persamaan (Derajat x π)/180

 

Beberapa fungsi yang mungkin dapat berguna dalam penginderaan jauh (sebagai contoh koreksi radiometri atau pemetaan batimetri) dan yang dapat dengan mudah diturunkan dari fungsi dasar adalah terdaftar sebagai berikut :

 

Mengatur Konstanta

Konstanta seperti comments yaitu membuat formula lebih mudah dimengerti (khususnya formula yang kompleks) dan dapat membuat formula lebih mudah untuk diubah, sehingga dapat diaplikasikan pada citra yang berbeda. Pernyataan kosntanta seharusnya dituliskan pada awal dokumen. Bentuk pernyataannya adalah sebagai berikut :

CONST name = value ;

Dimana CONST pada dokumen formula merupakan tanda bahwa pernyataan tersebut dideklarasikan sebagai konstanta. Nama yang digunakan dapat berupa alfabet dan angka (tetapi harus diawali dengan huruf),  yang memberikan gambaran konstanta tersebut sebagai apa; nilai yang dimasukkan dalam konstanta dapat berupa integer atau desimal. Nama konstanta digunakan untuk memasukkan nilai menjadi nama konstanta, sehingga kita dapat menggunakan nama konstanta daripada memasukkan nilainya. Jika konstanta merupakan angka yang panjang seperti -1.0986543 dan sering muncul pada formula menggunakan nama konstanta akan mempermudah. Beberapa contoh kosntanta :

 

Contoh di atas merupakan bentuk pernyataan konstanta yang terkait dengan koreksi radiometrik, nilai Lmin, Lmax dan ESUN berbeda – beda setiap saluran panjang gelombang dan dengan hanya mengganti nilai dari tiga konstanta tersebut, kita dapat menggunakan formula yang sama digunakan untuk saluran yang berbeda, sehingga meminimalkan terjadinya error dalam memasukkan angka atau rumus. Catatan : kita dapat menuliskan lebih dari satu pernyataan dalam satu baris.

Kita juga dapat menggunakan pernyataan konstanta untuk citra. Contohnya  :

 

Jadi kosntanta tersebut jelas menunjukkan bahwa saluran AVHRR_band5 merupakan citra nomer 2 dalam citra yang telah tergabung menggunakan Image, Connect. Menggunakan konstanta membuat kita lebih mengerti susunan dan yang dimaksudkan dalam dokumen formula. konstanta juga membuat kita mudah mengaplikasikan formula yang kompleks pada citra. Nama konstanta dapat terdiri dari huruf besar atau kecil, angka dan underscore, tetapi tidak dapat diawali dengan underscore.

Conditional statements

Untuk mengilustrasikan conditional (IF… ELSE…) statements , kita akan mengamati bagaimana conditional dapat digunakan untuk “ masking daratan” dari citra AVHRR_Mulls#02.bmp. Dengan masking daratan, kita berasumsi bahwa citra hanya terdiri dari satu dan nol (sebuah citra Boolean) dengan nol merupakan daratan dan satu merupakan tubuh air. Jika kita ingin memproses area tubuh air secara terpisah pada AVHRR_Mulls#02.bmp atauAVHRR_Mulls#04.bmp, kita hanya perlu mengalikan citra ini dengan masking daratan untuk mengatur area daratan menjadi nol dan membiarkan nilai piksel tubuh air tetap pada nilainya.

Nilai piksel tubuh air citra AVHRR_Mulls#02.bmp adalah 45 atau kurang ari itu, sedangkan Piksel daratan lebih dari 45. Kita akan menggunakan nilai ambang ini sebagai konstanta dengan nama “Threshold”.

conditional statement yang digunakan dalam pembentukan masking daratan adalah satu tanda persamaan/comparison (==), satu pertidaksamaan (<), dan satu logika (OR) dan dua operasi penetapan (=).

CONST Threshold = 45 ; menetapkan nilai 45 sabagai batas ambang nilai

CONST Mulls2 = @1 ; menetapkan citra @1 pada toolbar Selector sebagai citra input dan menjadi kontanta dengan nama “Mulls2” (citra ini seharusnya AVHRR_Mulls#02.bmp).

CONST Landmask = @3; menetapkan citra @3 pada toolbar Selector sebagai citra hasil masking dan menjadi konstanta dengan nama “Landmask” (ini akan menjadi citra output).

 

Pernyataan tersebut berbunyi : JIKA (IF) nilai piksel pada @1 citra (= AVHRR_Mulls#02.bmp) sama dengan kontanta Threshold (= 45) atau kurang dari kontanta Threshold (< 45), maka nilai satu akan dimasukkan pada piksel @3 (citra kosong yang memiliki nama Landmask) LAINYA (ELSE) masukkan nilai 0 pada citra @3. Jadi seluruh piksel tubuh air (sama atau di bawah nilai ambang) diatur menjadi 1 dan piksel daratan (di atas ambang) diatur menjadi 0).

Buka citra AVHRR_Mulls#02.bmp dan AVHRR_Mulls#04.bmp. Untuk menggabungkan kedua citra, pilih menu Image ‣ Connect ‣ hingga muncul dialog box Connect.

Gabungkan dua citra tersebut dan atur Blank : 2 (untuk menambahkan dua citra kosong yang terhubung dengan kedua citra yang lain). Gunakan toolbar Selector untuk mengatur AVHRR_Mulls#02.bmp sebagai citra 1 (di formula @1), AVHRR_Mulls#04.bmp sebagai citra 2 ( di formula @2) dan dua citra yang kosong merupakan citra 3 dan 4 @3 dan @ 4 pada formula.

Pilih File ‣ New ‣ pilih FORMULA Document

Jika keluar jendela formula, masukkan konstanta dan conditional statement seperti di atas. Gunakan menu Option! Untuk mengatur Output Image Type : menjadi @1, jika diperlukan.

 

Copy dan paste formula ke citra, maka kita kan mendapatkan citra @3 yang kosong menjadi hitam.

 

Gunakan penajaman auto linear pada citra tersebut untuk mendapatkan tampilan yang seharusnya ( jangan lupa seleksi seluruh citra sebelum di tajamkan).

 

Silahkan cek pada status bar bahwa yang hitam akan memiliki nilai 0 dan yang putih 1.

Catatan: untuk modifikasi formula dimana masking dihasilkan sebagai citra baru yang tidak ikut tergabung dalam Selector , maka formula di-modifikasi sebagai berikut :

 

Jadi jika tidak ada citra @n yang menjadi output pada formula, maka akan tercipta citra baru untuk menjadi output-nya.

Selanjutnya adalah mengaplikasikan hasil masking ( yang paling mudah diciptakan dari saluran #2 infra merah dekat, dimana jelas batas daratan dan perairan) dan aplikasikan masking tersebut pada citra  AVHRR_Mulls#04.bmp , sehingga suhu permukaan laut dapat dianalisis. Berikut adalah formulanya :

 

Maka citra akan termasking seperti berikut

 

Kita juga dapat menyederhanakan dua formula di atas hanya menjadi satu formula sebagai berikut :

 

Operasi Bit-Wise guna memanfaatkan informasi “flag”

Citra dari berbagai macam sensor kadang memiliki data yang menemani yaitu  data “flag”, yang biasanya sebuah citra yang berisi dan menjelaskan attribut setiap piksel citra. Contohnya AVHRR (Advance Very High Resolution Radiometer) sensor dari NOAA, dan MERIS (Medium Resolution Imaging Spectrometer) dan AATSR (Advance Along Track Scanning Radiometer) yang merupakan sensor dari   satelit European Space Agency’s ENVISAT. Attribut dari data flag mengindikasikan bahwa piksel tersebut adalah daratan, perairan, awan, garis pantai, sun glint, data invalid, dan sebagainya dalam citra.

Bilko menyediakan dua operasi bit-wise yang dapat memudahkan kita memanfaatkan informasi flag ini. Kunci bit-wise pertama adalah “And” yang merepresentasikan tanda ampersand “&” dan yang kedua adalah bit-wise “Or”. Flag dapat digunakan untuk menghilangkan (masking) area pada citra yang tidak diinginkan karena berbagai alasan ( contohnya ; data yang dicurigai rusak, area yang terlalu cerah (sensor saturation) yang merupakan pengaruh dari awan yang tipis, daratan (bukan perairan) jika mengkaji masalah laut, pengaruh sun glint, dan sebagainya). Peng-implementasian terbaik dalam dokumen formula adalah dengan mengatur setiap konstanta pada setiap flag yang akan kita pakai (misal hanya ingin data flag awan dan laut) untuk dimanfaatkan dan kemudian mengapilkasikan operasi bit-wise antara konstanta flag ( yang telah diatur menjadi kosntanta) dan citra untuk mengidentifikasi area yang terdampak oleh data flag. Secara gampang-nya data “flag” ini merupakan masking yang sudah dibuat oleh provider sehingga kita tinggal mengaplikasikannya, misal ingin memasking laut saja, awan saja , atau laut dan awan, kita tinggal menggunakan citra “flag” untuk melakukan hal tersebut. Untuk lebih lanjut masalah data “flag” ini, kita akan menerjemahkan torurial selanjutnya pada kesempatan yang akan datang.

Sumber :  Introduction to using the Bilko 3 image processing software

*** SEMOGA BERMANFAAT ***

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s