OLAH CITRA SEDERHANA MENGGUNAKAN DELPHI
1. Komponen Dalam Delphi Yang Support Olah Citra.
Komponen pada Delphi terdiri atas komponen visual dan non visual. Komponen visual akan ditampilkan apa adanya dalam form yang dibuat sesuai dengan penampakannya pada saat kita desain, sedangkan komponen non visual tidak terlihat pada waktu dieksekusi.
Beberapa komponen yang sering digunakan adalah tercantum pada tabel berikut ini.
Tabel 1. Komponen Delphi yang Dapat Digunakan
Komponen
|
Icon
|
Palet
|
Keterangan
|
Label
|
Standard
|
Menuliskan tulisan dalam form
| |
Button
|
Standard
|
Berupa tombol tekan dengan tulisan diatasnya
| |
Edit
|
Standard
|
Kotak isian, untuk mengisikan teks atau angka, biasanya untuk input program
| |
ListBox
|
Standard
|
Kotak berisi daftar tulisan yang dapat kita isikan waktu desain, dapat dipilh sewaktu eksekusi
| |
CheckBox
|
Standard
|
Biasanya untuk pilihan diantara dua hal, misalnya aktif – tidak aktif
| |
RadioButton
|
Standard
|
Untuk memilih di antara beberapa radiobutton dalam grup
| |
Image
|
Additional
|
Untuk menampilkan gambaryang dimuat dari file atau di kopi dari bitmap
| |
TrackBar
|
Win32
|
Untuk mempermudah mengatur nilai parameter
| |
Updown
|
Win32
|
Untuk mempermudah mengatur nilai parameter
| |
Timer
|
System
|
Untuk membuat event yang berulang setiap rentang waktu tertentu
| |
OpenPictureDialog
|
Dialogs
|
Untuk menampilkan kotak dialog untuk memilih file citra yang akan dimuat
| |
SavePictureDialog
|
Dialogs
|
Mirip dengan OpenPictureDialog tetapi untuk memilih file ke mana citra akan di simpan
|
2. Menampilkan Citra.
Dalam Delphi terdapat sebuah komponen yang telah disediakan untuk menampilkan citra, yaitu komponen Image. Komponen ini terdapat dalam palet Additional.
Komponen ini memiliki beberapa properti penting yang sering digunakan dalam menampilkan citra di dalam form, yaitu;
a. Width : lebar komponen Image.
b. Height : tinggi komponen Image.
c. Picture : obyek berisi data citra berbentuk bitmap.
d. AutoSize : untuk mengubah agar ukuran Image secara otomatis mengikuti ukuran citra dalam Picture.
e. Center : untuk mengatur agar posisi citra dalam picture di tengah komponen Image.
f. Strecth : untuk mengatur citra ditampilkan penuh sesuai ukuran Image.
g. Proportional : mempertahankan aspect ratio (perbandingan lebar dan tinggi citra).
3. Tipe Citra yang Digunakan.
Tipe citra yang dapat dimuat dalam properti Picture pada komponen Image dapat berupa file bitmap (*.bmp) atau JPEG (*.jpg). Namun untuk mudahnya penulis menggunakan Image berupa file bitmap (*.bmp), alasannya karena jika menggunakan citra file JPEG (*.jpg) diperlukan tambahan intruksi untuk mengonversinya menjadi bitmap (*.bmp) kemudian baru diolah tiap-tiap pikselnya.
Citra bitmap yang diolah dapat berupa citra skala keabuan (grayscale) atau warna dengan berbagai format sebagaimana tercantum dalam tabel 1. Pada kesempatan ini, penulis menggunakan format pf24bit atau citra warna True Color 24 bit/piksel, dimana ketiga elemen warna (R, G, B) masing-masing berukuran 1 byte. Untuk memudahkan akses data setiap piksel pada citra yang akan diolah.
Untuk mengetahui format citra yang dimuat dalam komponen Image, gunakan properti PixelFormat dari properti bitmap dalam properti Picture. Nilai PixelFormat ini seprti tercantum dalam tabel 1.
Contoh penentuan format citra dalam program adalah sebagai berikut;
if (Image1.Picture.Bitmap.PixelFormat = pf24bit)
then
,,,,,,,,,,,,,,,,,,,,,,,,,,,
Tabel 2. Tabel Format Citra
PixelFormat
|
Keterangan
|
pf1bit
|
Citra biner (1 bit/piksel), dengan palet hitam-putih
|
pf4bit
|
Citra warna berindeks menggunakan palet 16 warna (4 bit/piksel)
|
pf8bit
|
Citra warna berindeks menggunakan palet 256 warna (8 bit/piksel)
|
pf15bit
|
Citra warna True Color 15 bit/piksel (RGB compression)
|
pf16bit
|
Citra warna True Color 16 bit/piksel (bitfield compression)
|
pf24bit
|
Citra warna True Color 24 bit/piksel (R, G, B masing-masing 1 byte)
|
pf32bit
|
Citra warna True Color 32 bit/piksel (RGB compression)
|
4. Mengakses Piksel pada Citra.
Citra yang disimpan dalam komponen Image seringkali tidak hanya ditampilkan saja, tapi juga diolah sehingga diperoleh citra baru. Untuk itu diperlukan cara untuk mengakses data piksel yang ada dalam citra tersebut. Terdapat 2 cara yang dapat digunakan dalam Delphi, yaitu;
a. Menggunakan properti Pixels dari Canvas
b. Menggunakan properti Scanline dari Bitmap
Cara kedua lebih cepat karena pengaksesannya dilakukan langsung terhadap nilai-nilai piksel pada memori citra. Meskipun demikian, cara ini harus dilakukan dengan hati-hati karena dapat merusak data yang ada di memori (dapat berakibat computer hang).
Untuk menggunakan ScanLine, diperlukan variable bertipe PByteArray untuk menunjuk ke alamat memori tempat penyimpanan data piksel citra. Dengan cara ini, selanjutnya kita dapat mengakses data elemen-elemen warna (R, G dan B)dari piksel-piksel tersebut sebagai larik byte. Contoh pendefinisian variable PByteArray;
Var
HS: PByteArray;
Dengan menggunakan properti ScanLine, HS akan menunjuk ke alamat awal dari data piksel untuk setiap barisnya, dimana nomor baris menjadi indeks dari properti tersebut. Jadi perintah berikut akan membuat HS seolah-olah menjadi variable larik byte untuk data piksel baris ke y.
HS := Image1.Picture.Bitmap.ScanLine[y];
Selanjutnya untuk mendapatkan data piksel ke x, gunakan sebagai indeks dari HS. Untuk format citra True Color 24 bit, ketiga elemen warna akan disimpan secara berurutan dengan urutan elemen biru (B), diikuti hijau (G) dan merah (R). Dengan demikian setiap piksel akan mengambil tempat 3 byte. Oleh karena itu, data setiap elemen warna pikselpada kolom x akan menempati indeks larik sebagai berikut:
a. Elemen biru (B), posisi indeks larik 3*x
b. Elemen hijau (G), posisi indeks larik 3*x+1
c. Elemen merah (R), posisi indeks larik 3*x+2
Tidak ada komentar:
Posting Komentar