Dalam analisa citra, warna merupakan deskriptor yang sangat berguna untuk menyederhanakan proses identifikasi dan ekstraksi objek pada citra
Apakah Warna?
Cahaya matahari yang dilewatkan pada prisma menghasilkan spetrum warna.‘warna’ objek yang diterima oleh penglihatan manusia ditentukan oleh cahaya dipantulkan oleh objek tersebut.
Akromatik vs Kromatik
Cahaya akromatik: tidak berwarna, hanya menggunakan
intensitas yang diukur dengan tingkat keabuan. Contoh: TV hitam-putih, citra monokrom yang kita gunakanCahaya kromatik: panjang gelombang 400~700 nm.
Tiga satuan yang digunakan untuk mendeskripsikan kualitas dari sumber cahaya akromatik:
Radiansi:
jumlah energi yang memancar dari sumber cahaya (dalam satuan watt)
Luminasi:
jumlah energi yang diterima oleh observer dari sumber cahaya (dalam satuan lumens, lm). contoh: sinar inframerah
memiliki radiansi yang besar tapi nyaris tidak dapat dilihat oleh observer
Brightness:
Deskriptor yang subjektif, mirip dengan pengertian intensitas pada akromatik, walah satu faktor penentu dalam menggambarkan sensasi warna
Warna primer vs warna sekunder (pada cahaya)
Warna primer: red (R), green (G), blue (B)
perhatikan bahwa komponen RGB saja tidak bisa menghasilkan semua spektrum warna, kecuali jika panjang gelombangnya juga dapat bervariasi
Warna sekunder:Magenta (R+B), cyan (G+B), yellow(R+G)
Campuran 3 warna primer: putih
Cara-cara untuk memberikan warna pada citra monokrom berdasarkan nilai
Keabuan, Tiga cara yang dibahas:
1. Intensity slicing and color coding
Merupakan cara yang paling mudah. Hanya perlu membuat irisan-irisannya, misalkan kita hanya ingin 3 warna:
0-100: warna merah
100-200: warna oranye
200 – 255: warna kuning
2. Gray level to color transformations
Ide: melakukan tiga transformasi independen
terhadap masing-masing komponen warna
3. Dua pendekatan pengolahan
Pengolahan per-warna:
Proses pengolahan dilakukan secara terpisah antara ketiga warna, kemudian baru digabungkan lagi
Pengolahan langsung semua warna:Proses pengolahan dilakukan terhadap vektor [R G B] Kedua pendekatan ini dapat menghasilkan output yang sama
Representasi image kedalam Matrix
Pernahkah terpikir sama temen-temen, gimana sih cara suatu benda optic seperti kamera, baik video ataupun digital menangkap citra atau sebuah objek?
Sebenarnya objek ataupun citra yang kita tangkap itu adalaha hasil pantulan dari bayangan benda itu sendiri. Masih ingatkan pelajaran IPA waktu SD dahulu, mengapa kita tidak dapat melihat dalam gelap? Hal ini karena tidak ada cahaya, dan cahaya yang ditangkap benda tidak ada, sehingga benda tidak dapat memantulkan kembali bentuk nya. Hal ini juga diaplikasikan dalam benda optic, jadi benda optic akan memancarkan cahaya ataupun sinar, untuk men scan benda tersebut, lalu benda tersebut akan diubah posisinya kedalam bentuk matrix. Begitu pula dalam hal pembacaan warna . warna primer yaitu RGB bisa direpresentasikan dengan berbagai cara. Untuk kali ini saya akan merepresentasikannya dalam bentuk matrix 3 dimensi. Sebagai ilustrasi lihat gambar dibawah ini.
Pada gambar samping, komponen red pada lokasi (0,0), bernilai 78, green 200, dan blue 12. Di dalam program, kita dapat menuliskannya sebagai berikut.
1: const int RED = 0;
2: const int GREEN = 1;
3: const int BLUE = 2;
4:
5: f[0][0][RED] = 78;
6: f[0][0][GREEN] = 200;
7: f[0][0][BLUE] = 12;
3 baris pertama dibuat agar code mudah dibaca Nilai dari masing-masing komponen berkisar 0 sampai dengan 255 jika direpresentasikan dengan integer . warna putih didapat ketika kita memberikan nilai 255 pada setiap komponen. Sebaliknya jika kita memberikan nilai 0 pada semua komponen, kita akan mendapatkan warna hitam. teknik mencampur seperti ini sesuai dengan kenyataan. Jika kita mencampur warna merah hijau dan biru sebanyak-banyaknya, maka kita akan mendapatkan warna putih dan, jika warna hitam didapat jika kita tidak mencampur apa-apa.
int atau double?
Seperti yang telah disebutkan kalau nilai dari masing-masing komponen berkisar 0 sampai dengan 255 jika direpresentasikan dalam bentuk integer. Sebenarnya ada represenstasi yang lain, yaitu antara 0 sampai dengan 1 dalam bentuk floating point (bilangan desimal). Penggunaan floating point tentunya memiliki kelebihan dalam presisi ketim
bang memakai nilai yang diskrit. Namun demikian, penggunaanfloating point akan membuat file citra membesar.
Biasanya citra disimpan dalam representasi integer. Representasi floating point dipergunakan pada saat citra dimodifikasi. Bagaimana cara
mengubah dari representasi integer ke floating point? Mudah, tinggal membagi nilai integer dengan angka 255. Sebagai contoh, jika kita ingin mengubah nilai komponengreen.
1: double green_d = green_i / 255;
kegunaan representasi matrix
salah satunya untuk membuat suatu citra menjadi citra abu2x. yaitu dengan merata-rata semua komponen dari setiap pixel. Berikut adalah contoh singkat untuk melakukan hal tersebut.
1: for (int x = 0; x <>
2: for (i
nt y = 0; y <>
3: {
4: double rata = (f[x][y][RED] + f[x][y][GREEN] + f[x][y][BLUE]) / 3.0;
5: f[x][y][RED] = rata;
6: f[x][y][GREEN] = rata;
7: f[x][y][BLUE] = rata;
8: }
ini script yang mengubah dari gambar menjadi Matrik (angka) :
procedure TForm1.Matriks1Click(Sender: TObject);
var F : TextFile;
bowoFile : string;
temp : PByteArray;
i,j : integer;
Image : TBitmap; begin
bowoFile:='M atriks.txt ';
AssignFile(F,bowoFile);
Image := TBitmap.Create; Image.LoadFro mFile(OpenPictureDialog.FileNa me);
Image := Image1.Picture.Bitmap;
Rewr ite(F);
Memo1.Clear;
for j:=0 to Image.Height-1 do
begin
temp := Image.ScanLine[j];
i:=0;
repeat
write(F,inttostr(temp[i])+' ');
i:=i+1;
until i >= 3*Image.Width-1;
end; CloseFile(F);
Memo1.Lines.LoadFromFile(bowoF ile);
Image1.Picture.Bitmap := Image;
end;
sumber:
http://edysoftware.com/delphi/?pilih=lihat&id=208
http://ctalicious.wordpress.com/author/ctalicious/
Tidak ada komentar:
Posting Komentar