S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 1 Pengenalan, Pengertian dan Contoh Aplikasi Pengolahan Citra
Tujuan : Mahasiswa mengerti tentang pengolahan citra dan diberikan sebagian contoh-contoh pengolahan citra yang terdapat pada Photoshop misal brightness, Contras, blur, filtering sedangkan contoh yang lain terdapat pada perangkat lunak OCR (untuk mengenali karakter misal huruf), untuk selanjutnya proses tersebut dapat diimplementasikan menggunakan bahasa pemrograman Delphi. Dasar Teori : Gambar atau Citra merupakan fungsi intensitas cahaya dua dimensi yang dapat dinyatakan berupa f(x,y) dengan x dan y terletak pada sistem koordinat spasial sedangkan nilai f pada koordinat x dan y tersebut sebanding dengan tingkat kecerahan dan biasanya dinyatakan dengan tingkat keabuan. Setiap titik f(x,y) di dunia komputer disebut Pixel ( picture element). Pengolahan citra digital bertujuan untuk melakukan proses terhadap sebuah gambar atau citra yang akan menghasilkan keluaran citra yang baru dan lebih sesuai dengan keinginan misalnya jika gambar terlalu terang (kelebihan sinar) maka kecerahannya bisa dikurangi sebaliknya jika gambar terlalu gelap ( kurang sinar) kecerahannya bisa ditambah. Keluaran pengolahan citra digital yang lain adalah dihasilkan sebuah keputusan misalnya dalam proses pengenalan huruf atau pengenalan sebuah obyek. Langkah – langkah Praktikum : 1. Aktifkan program PhotoShop Yaitu : Start
AllProgram
PhotoShop
Maka akan muncul Gambar 1.1
Praktikum Pengolahan Citra Digital
1
S1 Informatika STMIK Bumigora Mataram
Gambar 1.1 Tampilan Pertama Adobe Photoshop 2. Ambil sebuah gambar File
Open
Klik Gambar yang akan di ambil
3. Kemudian untuk melakukan perbaikan gambar misal brightness maupun contrast nya dapat dilakukan dengan cara : 4. Image
Adjustment
brightness/contrast
Kemudian ubah-ubahlah posisi penunjuk brightness maupun contrast
Gambar 1.2 Pemilihan Brightness/contrast pada Adobe Photoshop
Praktikum Pengolahan Citra Digital
2
S1 Informatika STMIK Bumigora Mataram
Gambar 1.3 Setting Brightness/contrast pada Adobe Photoshop
Cobalah pemrosesan citra yang lain misal : invert, equalize, threshold dan posterize. Untuk melihat aplikasi pengenalan karakter dapat menggunakan program OCR.
Praktikum Pengolahan Citra Digital
3
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 2 Format citra, skala keabuan dan akses matrik/frame citra melalui bahasa pemrograman delphi
Tujuan : Mahasiswa mengerti tentang representasi sebuah citra / gambar, Pixel dan mengerti cara mengakses pixel citra menggunakan bahasa delphi. Dasar Teori : Gambar / Citra Gambar adalah kumpulan dari titik-titik dengan gradasi warna tertentu yang membentuk pola tertentu, di komputer titik-titik tersebut berbentuk kotak bujur sangkar dan disebut pixel (picture element) dan disebut juga dot. Titik-titik tersebut terletak pada bidang dua dimensi yang dapat dinyatakan berupa f(x,y) dengan x dan y terletak pada sistem koordinat spasial sedangkan nilai f pada koordinat x dan y tersebut sebanding dengan tingkat kecerahan. Citra yang tampak
Citra yang terdapat di memori
0 1 0 4 3 1 0 1 2 0 4 3 2 0 2 0 5 0 4 0 5 0 5 0 4 Gambar 2.1 Ilustrasi citra dan data yang disimpan di memori
Pada gambar 2.1 warna hitam diilustrasikan dengan angka 0, biru angka 1 dan kuning angka 3, jumlah warna yang mungkin dapat dimiliki oleh sebuah gambar disebut Bit Depth (Kedalaman Warna), pixel depth atau color depth dan dinyatakan dalam bit. contoh untuk jumlah warna 16 disebut memiliki kedalaman 4 bit atau
Praktikum Pengolahan Citra Digital
4
S1 Informatika STMIK Bumigora Mataram 24 = 16, untuk gambar dengan 256 warna disebut memiliki kedalaman 8 bit atau 28= 256. Pada gambar 2.1 citra memiliki baris 5 dan kolom 5 sehingga berjumlah 25 pixel, citra ini disebut juga memiliki resolusi 5x5, jadi resolusi sebuah gambar / citra adalah jumlah pixel yang terdapat dalam satu gambar dan bisa dinyatakan dengan satu angka untuk contoh pada gambar 2.1 memilki resolusi 25 pixel atau berupa pasangan angka resolusinya 5x5 pixel. Format File Citra Format file citra adalah bagaimana citra itu direpresentasikan dalam sebuah file kondisinya bisa dalam keadaan terkompres atau pada posisi terenkripsi. Antara satu format dengan format yang lain memiliki kelebihan dan kelemahan. Setiap format file dapat di bedakan dari extensi filenya yaitu diakhiri titik dengan tiga huruf tambahan. Macam-macamnya : • Format file Bitmap/bmp adalah standar file bitmap / raster biasanya mempunyai ukuran file yang relatif besar tidak terkompres dan tidak mendukung gambar transparansi maupun animasi. • Format file GIF (Graphics Interchange Format) menggunakan maksimal 8 bit warna (28 = 256 warna) gambar ini menggunakan kompresi dengan LZW compression yang merupakan kompresi loseless yang berarti tidak ada data yang dibuang. Format ini juga mendukung gambar transparansi dan animasi. • Format file JPEG/JPG (Joint Photographic Experts Group) menggunakan 24 bit warna (224 = 16 juta warna) dan melakukan kompresi dengan cara membuang data yang dianggap tidak penting pada gambar (bersifat lossy compression). Semakin kecil file yang diinginkan semakin banyak data yang akan dibuang sehingga kualitasnya akan semakin menurun. Format ini tidak mendukung transparansi dan animasi. • Format file PNG-8 terdiri 8 bit warna, mempunyai hasil kompresi yang lebih kecil dari format GIF. • Format file PNG-24 menggunakan 24 bit warna, mempunyai ukuran yang lebih besar dan warna yang lebih banyak dari pada PNG-8.
Praktikum Pengolahan Citra Digital
5
S1 Informatika STMIK Bumigora Mataram • Format file PDF (Portable Document Format) digunakan untuk keperluan dokumen lintas sistem dan lintas program aplikasi dan mempunya ukuran file relatif kecil. Ada 2 jenis yaitu Photoshop PDF dan Generic PDF . Langkah Praktikum : Bukalah Program Delphi dengan cara 1) Start
AllProgram
Borland Delphi6
delphi 6
Gambar 2.2 Form Delphi 2) Pilih Additional
Double klik Image
3) Pilih Standard
double Klik Edit
edit1, edit2 dan edit3
berturut-turut 3 kali sehingga muncul
double Klik Label
muncul Label1, Label2 dan Label3
Praktikum Pengolahan Citra Digital
berturut-turut 3 kali sehingga
Atur semua posisi Simbol sesuai selera
6
S1 Informatika STMIK Bumigora Mataram Gambar 2.3 Object Inspector, properties dan events 4) Klik simbol image yang terdapat pada form dan ubah propertynya Autosize diset true Center diset true Name diubah gb1 (singkatan gambar 1) Proportional diset true Dengan cara yang sama ubahlah property caption label1, label2 dan label 3 menjadi baris, kolom dan nilai warna. 5) Pilih Dialog
klik OpenPictureDialog
Sehingga Simbol ini
terdapat pada form1, klik simbol tersebut dan
ubahlah name pada propertinya menjadi opd. 6) Pilih Standard
klik Button
7) Klik satu kali simbol ini
yang terdapat pada form1 kemudian
ubahlah caption pada propertinya menjadi “ambil gambar” dan akan menjadi Kemudian lakukan double klik pada simbol ”ambil gambar”, sehingga keluar Source codenya seperti berikut. procedure TForm1.Button1Click(Sender: TObject); begin // tambahkan code berikut if(opd.Execute)then gb1.Picture.LoadFromFile(opd.FileName); end;
Gambar 2.4. Code Untuk mengambil gambar dengan open picture dialog 8) Klik gb1 pada form1
pada object inspector klik Events
Double klik events
OnMouseMove sehingga keluar code sebagai berikut:
Praktikum Pengolahan Citra Digital
7
S1 Informatika STMIK Bumigora Mataram
procedure TForm1.gb1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var dbaris : pbytearray; begin // tambahkan code berikut edit1.Text := inttostr(y); edit2.Text := inttostr(x); // Mengambil nilai warna pada posisi x,y dan ditampilkan di edit3 dbaris := gb1.Picture.Bitmap.ScanLine[y]; edit3.Text := inttostr(dbaris[x]); end;
Gambar 2.5.Code untuk menampilkan nilai warna pada posisi x,y Pada Gambar 2.5 informasi posisi dari penunjuk mouse pada gambar terdapat pada x dan y code : edit1.Text := inttostr(y); adalah code untuk menampilkan posisi mouse y pada edit1 edit2.Text := inttostr(x); adalah code untuk menampilkan posisi mouse x pada edit2 dbaris := gb1.Picture.Bitmap.ScanLine[y]; edit3.Text := inttostr(dbaris[x]); adalah code untuk menampilkan nilai warna atau keabuan pixel pada koordinat x,y 9) Jalankan Program dengan menekan F9 lalu klik
dan cari
lokasi gambar grayscale yang ingin ditampilkan.
Praktikum Pengolahan Citra Digital
8
S1 Informatika STMIK Bumigora Mataram
Gambar 2.6. Hasil program untuk menampilkan nilai warna pada posisi x,y
Pada gambar 2.6. saat program dijalankan dan saat mouse digerakkan di area gb1 maka nilai baris, nilai kolom dan nilai warna akan berubah-ubah sesuai dengan posisi penunjuk mouse pada koordinat x,y sedangkan nilai warna akan berubah ubah sesuai dengan warna gambar yang ditunjuk, saat warna hitam bernilai 0, saat warna putih bernilai 255, saat warnanya antara hitam dan putih (abu-abu) nilainya akan beruba-ubah antara 0 dan 255. Untuk menampilkan nilai warna untuk gambar berwarna akan dijelaskan saat praktikum.
Praktikum Pengolahan Citra Digital
9
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 3 Kuantisasi, implementasi konversi RGB to Gray Scale dan implementasi konversi Gray to Biner
Tujuan : Mahasiswa mengerti cara memprogram untuk melakukan teknik kuantisasi pada konversi model citra Dasar Teori : gray-scale atau skala keabuan seperti yang terdapat pada contoh gambar 2.1 memiliki satu lapisan/layer dengan nilai 0 sampai 255, pada image processing proses awal yang dilakukan terhadap citra berwarna adalah mengubah menjadi citra gray-scale, hal tersebut dilakukan agar model citranya menjadi lebih sederhana. Citra berwarna memiliki tiga lapisan/layer yaitu lapisan merah (R-Layer), Lapisan Hijau ( G-Layer) dan Lapisan biru (B-Layer). Sehingga jika ingin melakukan proses pengolahan citra terhadap citra berwarna harus melibatkan tiga lapisan warna tersebut dan tentunya perhitungan yang dilakukan tiga kali lebih banyak dari pada citra gray-scale untuk itu konversi citra berwarna kecitra gray-scale perlu dilakukan dengan cara mengubah jumlah layer yang tadinya 3 layer menjadi 1 layer, Pada citra gray-scale tidak ada lagi warna yang ada hanyalah skala keabuan. Konversi dapat dilakukan dengan cara mengambil nilai rata-rata dari nilai r, g dan b yaitu : s
r g b 3
Langkah Praktikum : 1) Aktifkan program delphi
pada form1
pilih standard double klik button
Kemudan pada button yang muncul ubah propertinya caption di ubah menjadi ambil gambar. 2) Double klik lagi button lalu ubah captionnya menjadi Konversi Color ke Gray Praktikum Pengolahan Citra Digital
10
S1 Informatika STMIK Bumigora Mataram Scale. 3) Pilih additional
double klik image
kemudian ubah propertinya :
Autosize diset true Center diset true Name diisi gb1 (singkatan gambar 1) Proportional diset true 4) Ulangi langkah 3 khusus untuk name diisi gb2 kemudia atur semua posisi object sesuai selera. 5) Pilih Dialog
Double klik open picture dialog kemudian name pada
propertinya Diubah menjadi OPD (Agar tidak terlalu panjang).
Gambar 3.1.Tampilan form konversi Color ke GrayScale 6) double klik button ambil gambar sehingga keluar source codenya dan tambahan code pada gambar 3.2.
if (opd.Execute) then begin gb1.Picture.LoadFromFile(opd.FileName); gb2.Picture.LoadFromFile(opd.FileName); end;
Gambar 3.2 Code Untuk menampilkan gambar 1 dan gambar 2 7) Pada form1 double klik button konversi Color ke gray Scale kemudian tambahkan code pada gambar 3.3 pada posisi paling atas dari code setelah
Praktikum Pengolahan Citra Digital
11
S1 Informatika STMIK Bumigora Mataram implementation {$R *.dfm} type LogPal = record lpal: TLogPalette; entry: array [0..255] of TPaletteEntry; end; var Palet: LogPal; Gambar 3.3 Deklarasi tipe data baru berisi array sebanyak 256 8) pada form1 double klik button konversi Color ke gray Scale sekali lagi Tambahkan code pada gambar 3.4. procedure TForm1.Button2Click(Sender: TObject); var i, j: integer; d_w, d_G: PByteArray; begin Palet.lPal.palVersion := $300; Palet.lPal.palNumEntries := 256; for i := 0 to 255 do begin Palet.entry[i].peRed := i; Palet.entry[i].peGreen := i; Palet.entry[i].peBlue := i; end; Form1.gb2.Picture.Bitmap.PixelFormat := pf8bit; Form1.gb2.Picture.Bitmap.Palette := CreatePalette(Palet.lpal); for i:= 0 to Form1.gb1.Picture.Height-1 do begin d_w := Form1.gb1.Picture.BitMap.ScanLine[i]; d_G := Form1.gb2.Picture.BitMap.ScanLine[i]; for j:= 0 to Form1.gb1.Picture.Width-1 do d_G[j] := Round((d_w[3*j]+d_w[3*j+1]+d_w[3*j+2])/3); end; gb2.Repaint; end; Gambar 3.4. Code Konversi citra bewarna ke citra Gray Scale
Praktikum Pengolahan Citra Digital
12
S1 Informatika STMIK Bumigora Mataram 9) jalankan program dan lakukan proses konversi setelah gambar berwarna di ambil 10) Penjelasan Code akan dilakukan saat praktikum.
Gambar 3.5. Contoh Konversi citra bewarna ke citra Gray Scale
Praktikum Pengolahan Citra Digital
13
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 4 Histogram, implementasi Histogram pada gray level Dan implementasi Histogram pada citra berwarna
Tujuan : Mahasiswa
mengetahui
cara
membuat
program
histogram
dan
mengimplementasikan pada citra berwarna maupun citra gray scale Histogram Histogram merupakan sebuah fungsi yang menjelaskan berapa kali sebuah nilai keabuan muncul dalam sebuah gambar. Histogram ini digunakan Untuk menyatakan distribusi data dari nilai derajat keabuan. Misal terdapat gambar dengan code warna sebagai berikut :
0 1 0 4 3 1 0 1 2 0 4 3 2 0 2 0 5 0 4 0 5 0 5 0 4 Maka Histogramnya adalah : X = 10 3 3 2 4 3 Artinya angka 0 muncul 10 kali, angka 1 muncul 3 kali, angka 2 muncul 3 kali, angka 3 muncul 2 kali, angka 4 muncul 4 kali dan angka 5 muncul 2 kali, total kemunculan adalah 25 kali atau sebanyak jumlah pixel.
Praktikum Pengolahan Citra Digital
14
S1 Informatika STMIK Bumigora Mataram Langkah Praktikum : 1) Lakukan langkah-langkah seperti pada praktikum pertemuan 2, image, button dan open picture dialog, atur juga propertinya. 2) Pilih Standard
Double klik memo
3) Buat form baru dengan meng klik
yang terdapat di kiri
sehingga
muncul form2. 4) Double klik button ambil gambar dan tulis code berikut if (opd.Execute) then gb1.Picture.LoadFromFile(opd.FileName); histogram;
Gambar 4.1. Code ambil gambar dan pemanggil prosedure histogram 5) Buatlah sebuah prosedure seperti gambar 4.2 procedure histogram; var hasil : string; br,kl, lop, data, mak , y1 , y2: integer; dbaris : pbytearray; h : array[0..255] of integer; 5)tinggi Buatlah prosedure histogram sebagai berikut : integer; begin // Letakkan code Hapus nilai histogram disini // Letakkan code untuk mengakses semua pixel pada gambar disini // sekaligus hitung nilai histogramnya dan nilai tertingginya // Letakkan code Tampilkan nilai histogram pada form2 dan memo end;
Gambar 4.2. Code Procedure histogram 6) Isikan Code berikut untuk memastikan variabel penampung histogram bernilai 0
for lop := 0 to 255 do begin h[lop] := 0; hr[lop] := 0; hg[lop] := 0; hb[lop] := 0; end;
Praktikum Pengolahan Citra Digital
15
S1 Informatika STMIK Bumigora Mataram Gambar 4.3. Code Hapus nilai histogram Code pada Gambar 4.3. untuk memastikan nilai histogram untuk gray scale, layer R, layer G dan layer B bernilai 0 sebelum proses perhitungan yang sebenarnya dilakukan. 7) Untuk mengakses semua pixel dan menghitung nilai histogramnya pada gray scale dapat dilakukan menggunakan code pada gambar 4.4 sedangkan untuk citra color dilakukan menggunakan code pada gambar 4.5. if (form1.gb1.Picture.Bitmap.PixelFormat = pf8bit) then begin mak := 0; for br := 0 to form1.gb1.Width-1 do begin for kl := 0 to form1.gb1.Height-1 do begin //ambil data (br,kl) letakkan di data dbaris := form1.gb1.Picture.Bitmap.ScanLine[br]; data := dbaris[kl]; h[data] := h[data] + 1; // hitung histogram if (h[data]>mak) then mak := h[data]; end;//kl end; //br end;
Gambar 4.4. Code menghitung histogram pada citra gray scale if (form1.gb1.Picture.Bitmap.PixelFormat = pf24bit) then begin makr := 0; makg := 0; makb := 0; for br := 0 to form1.gb1.height-1 do begin for kl := 0 to form1.gb1.width-1 do begin //ambil data (br,kl) dbaris := form1.gb1.Picture.Bitmap.ScanLine[br]; // hitung histogram layer blue data := dbaris[3*kl]; hb[data] := hb[data] + 1; if (hb[data]>makb) then makb := hb[data]; // hitung histogram layer green data := dbaris[3*kl+1]; hg[data] := hg[data] + 1; if (hg[data]>makg) then makg := hg[data]; // hitung histogram layer red data := dbaris[3*kl+2]; hr[data] := hr[data] + 1; if (hr[data]>makr) then makr := hr[data]; end;//kl end; //br end;
Praktikum Pengolahan Citra Digital
16
S1 Informatika STMIK Bumigora Mataram Gambar 4.5. Code menghitung histogram pada citra Color 8) Dari hasil yang diperoleh langkah 7 agar histogram kelihatan dilayar maka dapat ditambahkan beberapa code pada gambar 4.6 untuk menampilkan di memo,
gambar 4.7 menampilkan histogram citra gray scale pada
sebuah form dan gambar 4.8. menampilkan histogram citra berwarna. if (form1.gb1.Picture.Bitmap.PixelFormat = pf8bit) then begin for lop := 0 to 255 do begin hasil := inttostr(lop) + ' = ' + inttostr(h[lop]); form1.memo1.Lines.Add(hasil); end; end; Gambar 4.6. menampilkan histogram citra gray scale di memo if (form1.gb1.Picture.Bitmap.PixelFormat = pf8bit) then begin for lop := 0 to 255 do begin form2.Canvas.Pen.Color := clBlack; y1 := Round(h[lop]/mak*tinggi); // di skala tinggi/mak y2 := Round(h[lop+1]/mak*tinggi);/ / agar tidak keluar area y1 := tinggi- y1 ; // gambar histogram dibalik y2 := tinggi- y2; // gambar histogram dibalik form2.Canvas.MoveTo(0+lop, y1); form2.Canvas.LineTo(1+lop, y2); end; end;
Gambar 4.7 menampilkan histogram citra gray scale di form2
Praktikum Pengolahan Citra Digital
17
S1 Informatika STMIK Bumigora Mataram
if (form1.gb1.Picture.Bitmap.PixelFormat = pf24bit) then begin for lop := 0 to 255 do begin // histogram R Layer form2.Canvas.Pen.Color := clRed; y1 := Round(hr[lop]/makr*tinggi); // histogram di skala tinggi/mak y2 := Round(hr[lop+1]/makr*tinggi); //skala di buat agar tidak keluar area y1 := tinggi- y1 ; // gambar histogram dibalik y2 := tinggi- y2; // gambar histogram dibalik form2.Canvas.MoveTo(0+lop, y1); form2.Canvas.LineTo(1+lop, y2); // histogram G Layer form2.Canvas.Pen.Color := clGreen; y1 := Round(hg[lop]/makg*tinggi); // histogram di skala tinggi/mak y2 := Round(hg[lop+1]/makg*tinggi); //dibuat agar tidak keluar area y1 := tinggi- y1 ; // gambar histogram dibalik y2 := tinggi- y2; // gambar histogram dibalik form2.Canvas.MoveTo(0+lop, y1); form2.Canvas.LineTo(1+lop, y2); // histogram B Layer form2.Canvas.Pen.Color := clBlue; y1 := Round(hb[lop]/makb*tinggi); // histogram di skala tinggi/mak y2 := Round(hb[lop+1]/makb*tinggi); //dibuat agar tidak keluar area y1 := tinggi- y1 ; // gambar histogram dibalik y2 := tinggi- y2; // gambar histogram dibalik form2.Canvas.MoveTo(0+lop, y1); form2.Canvas.LineTo(1+lop, y2); end; end; Gambar 4.8 menampilkan histogram citra Color di form2
Praktikum Pengolahan Citra Digital
18
S1 Informatika STMIK Bumigora Mataram Jika program yang dibuat dijalankan dengan benar maka akan diperoleh tampilan seperti gambar 4.9
Gambar 4.9 Hasil program penampil histogram dalam angka dan grafis
Praktikum Pengolahan Citra Digital
19
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 5 Praktikum 5 Tugas atau kuis
Tugas : 1) Berilah Contoh macam-macam pengolahan citra yang terdapat pada photoshop maupun paint brush. 2) Kembangkan akses pixel pada praktikum 2 untuk menampilkan nilai baris, kolom dan nilai warna pada citra berwarna untuk semua layer (Red, Green dan Blue). 3) Tunjukkan ukuran citra baik baris maupun kolom pada sebuah tampilan edit. 4) Soal untuk kuis diberikan saat kuis.
Praktikum Pengolahan Citra Digital
20
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 6 Operasi titik, Brightness dan implementasi Pergeseran histogram
Tujuan : Mahasiswa mengetahui cara membuat program Operasi titik, Brightness dan implementasi Pergeseran histogram Dasar Teori : Pencerahan gambar ( Image Brightness) merupakan suatu cara agar sebuah citra menjadi tambah terang atau menjadi tambah gelap,
citra hasil
dapat diperoleh dengan menambah sebuah bilangan/konsanta pada citra asli. CH = CA + B Dengan : CH : Citra Hasil CA : Citra Asal B
: Bilangan bulat Untuk Bilangan negative akan dihasilkan citra yang lebih gelap,
sedangkan untuk bilangan positip akan dihasilkan citra yang lebih terang. Proses image brightness ini akan menyebabkan histogram citra hasil berbeda dengan histogram citra Asal. Setelah proses penjumlahan dilakukan ada kemungkinan data bernilai lebih besar dari 255 atau lebih kecil dari 0 untuk itu perlu dilakukan clipping kenilai keabuan terdekat misal 0 untuk yang bernilai negatif atau 255 untuk yang bernilai diatas 255.
Praktikum Pengolahan Citra Digital
21
S1 Informatika STMIK Bumigora Mataram Langkah Praktikum : 1) Aktifkan program delphi dan buatlah form2 dan form3 dengan cara mengklik tombol new form 2) Pilih additional
disebelah kiri tombol run
double klik image
sebanyak dua kali untuk membuat
image1 dan image2 kemudian ubahlah propertinya Pada image 1 Autosize diset true Center diset true Name diubah gb1 (singkatan gambar 1) Proportional diset true Pada image 2 Autosize diset true Center diset true Name diubah gb2 (singkatan gambar 2) dan Proportional diset true 3) Buatlah button pada form1 dan captionnya diubah menjadi Ambil gambar, lakukan langkah seperti langkah pada praktikum 2 untuk menampilkan gambar pada gb1 dan gb2 tambahkan satu baris code sehingga hasilnya seperti yang terdapat pada gambar 6.1.
Praktikum Pengolahan Citra Digital
22
S1 Informatika STMIK Bumigora Mataram
procedure TForm1.Button1Click(Sender: TObject); begin // Tambahkan code berikut if(opd.Execute)then gb1.Picture.LoadFromFile(opd.FileName); if(opd.Execute)then gb2.Picture.LoadFromFile(opd.FileName); end;
Gambar 6.1 Code untuk mengambil dua gambar yang sama dengan open picture dialog 4) Pilih standard
Klik scrollbar
ubahlah name nya menjadi sb (agar tidak
terlalu panjang). 5) Pilih standard
klik edit
sehingga muncul edit1
6) klik scrollbar yang telah berada di form1 dan pada object inspector (terdapat properti dan events), klik events kemudian double klik OnChange sehingga keluar codenya, dan tambahkan beberapa code sehingga menjadi seperti gambar 6.2.
Praktikum Pengolahan Citra Digital
23
S1 Informatika STMIK Bumigora Mataram procedure TForm1.sbChange(Sender: TObject); var br , kl : integer; dbaris1 , dbaris2 : pbytearray; begin edit1.Text := inttostr(sb.Position); for br := 0 to gb1.Height-1 do begin for kl := 0 to gb1.Width-1 do begin dbaris1 := gb1.Picture.Bitmap.ScanLine[br]; dbaris2 := gb2.Picture.Bitmap.ScanLine[br]; //Geser nilai gb2 sebesar nilai posisi sb Untuk gray if (form1.gb1.Picture.Bitmap.PixelFormat = pf8bit) then begin if(dbaris1[kl] + sb.Position > 255 ) then dbaris2[kl] := 255 else dbaris2[kl] := dbaris1[kl] + sb.Position ; if ((dbaris1[kl]+sb.Position)<0) then dbaris2[kl] := 0 ; end;// if form1.gb1.Picture.Bitmap.PixelFormat = pf8bit end; // end for kl end; // end for br //Tampilkan hasilnya dan hitung histogramnya gb2.Repaint; histogram; end; // prosedure
Gambar 6.2 Code Events OnChange pada Scrollbar 7) Lakukan perbaikan pada prosedure Histogram untuk menampilkan histogram gambar2. Code berikut yang terdapat ada gambar 6.2 if(dbaris1[kl] + sb.Position > 255 ) then dbaris2[kl] := 255 else dbaris2[kl] := dbaris1[kl] + sb.Position ; if ((dbaris1[kl]+sb.Position)<0) then dbaris2[kl] := 0 ;
Berfungsi untuk memastikan hasil brightness pada gambar 2 tidak nilai keabuannya tidak melebihi 255 dan tidak kurang dari 0.
Praktikum Pengolahan Citra Digital
24
S1 Informatika STMIK Bumigora Mataram
Gambar 6.3 Form tampilan sebelum program dijalankan
Praktikum Pengolahan Citra Digital
25
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 7 Operasi titik Kontras dan implementasi Pergeseran histogram
Tujuan : Mahasiswa mengetahui cara membuat program Kontras dan histogram kemudian mengimplementasikan pada citra berwarna maupun citra gray scale Dasar Teori : Kontras atau disebut juga Contrast stretching adalah suatu teknik untuk membuat suatu citra baru memiliki kontras yang lebih baik dari citra asal, Untuk mengubah kontras dapat dilakukan dengan cara mengatur range interval dari dua buah nilai derajat keabuan dan dapat didefinisikan sebagai berikut : CH = CA x K Dimana : CH : Citra Hasil CA : Citra Asli K
: Konstanta pengali
Cara yang lain adalah : CH = (CA-P) * G + P Dimana: CH : Citra Hasil CA : Citra Asli G
: Konstanta pengali
P
: konstanta pengurang
Praktikum Pengolahan Citra Digital
26
S1 Informatika STMIK Bumigora Mataram Langkah Praktikum :
1) Lakukan langkah praktikum seperti langkah praktikum 6 yaitu langkah 1, 2 dan 3 2) Tambahkan Spin Edit pada form1 dengan cara Pilih Samples double klik Spin Edit
kemudian ubahlah isi properti name menjadi
SE dan beri sebuah label keterangan dengan caption P 3) Pilih standard
Klik edit
dan beri label keterangan dengan
caption G. 4) Klik komponen spin edit dan double klik pada events on change dan isikan code seperti yang terdapat pada gambar 7.1 .
Praktikum Pengolahan Citra Digital
27
S1 Informatika STMIK Bumigora Mataram procedure TForm1.seChange(Sender: TObject); var br , kl , temp : integer; p,g : real; dbaris1 , dbaris2 : pbytearray; begin p := se.Value ; g := strtofloat(edit1.Text); for br := 0 to gb1.Height-1 do begin for kl := 0 to gb1.Width-1 do begin dbaris1 := gb1.Picture.Bitmap.ScanLine[br]; dbaris2 := gb2.Picture.Bitmap.ScanLine[br]; // gambar gray scale if (form1.gb1.Picture.Bitmap.PixelFormat = pf8bit) then begin temp := round( (dbaris1[kl]-p)*g + p); if temp>255 then temp := 255; if temp<0 then temp := 0; dbaris2[kl] := temp; end; // gambar Color if (form1.gb1.Picture.Bitmap.PixelFormat = pf24bit) then begin // layer B temp := round( (dbaris1[3*kl]-p)*g + p); if temp>255 then temp := 255; if temp<0 then temp := 0; dbaris2[3*kl] := temp; // layer G temp := round( (dbaris1[3*kl+1]-p)*g + p); if temp>255 then temp := 255; if temp<0 then temp := 0; dbaris2[3*kl+1] := temp; // layer R temp := round( (dbaris1[3*kl+2]-p)*g + p); if temp>255 then temp := 255; if temp<0 then temp := 0; dbaris2[3*kl+2] := temp; end; end; end; // tampilkan hasilnya dan hitung histogramnya gb2.Repaint; histogram; end;
Gambar 7.1 Code untuk proses contras
Praktikum Pengolahan Citra Digital
28
S1 Informatika STMIK Bumigora Mataram Form tampilan sebelum gambar dijalankan terdapat pada gambar 7.2 yang didalamnya berisi form1, image1, image2, spin edit dan edit.
Gambar 7.2 Program sebelum dijalankan
Button gambar adalah untuk mengambil gambar yang akan diproses dan diletakkan pada image1 atau gb1, edit1 berisi berapa besar gambar akan dikalikan sedangkan spin edit berisi nilai pengurangan yang akan dilakukan terhadap gambar tersebut sebelum dikalikan.
Contoh hasil eksekusi program brightness terdapat pada gambar 7.3.
Praktikum Pengolahan Citra Digital
29
S1 Informatika STMIK Bumigora Mataram
Gambar 7.3 Contoh Program setelah dijalankan
Praktikum Pengolahan Citra Digital
30
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 8 Operasi titik, Pengambangan
Tujuan : Mahasiswa
mengetahui
cara
membuat
program
pengambangan
dan
mengimplementasikan pada citra berwarna maupun citra gray scale Praktikum ini akan membuat sebuah citra yang tadinya memiliki variasi nilai keabuan dari 0 sampai dengan 255 atau sebanyak 256 variasi akan diubah menjadi 0 atau 255, dengan syarat jika nilai pada gambar pertama lebih besar dari nilai ambang maka nilai piksel gambar kedua diset 255 jika tidak maka nilai pixel gambar 2 diset 0. Langkah Praktikum Pengambangan tunggal :
5) Lakukan langkah praktikum seperti langkah praktikum 6 yaitu langkah 1, 2 dan 3 6) Tambahkan Spin Edit pada form1 dengan cara Pilih Samples double klik Spin Edit
kemudian ubahlah isi properti name menjadi
SE dan beri sebuah label keterangan dengan caption P 7) Double klik events On Change pada komponen spin edit dan lakukan perubahan pada code nya seperti gambar 8.1.
Praktikum Pengolahan Citra Digital
31
S1 Informatika STMIK Bumigora Mataram procedure TForm1.seChange(Sender: TObject); var br , kl , temp : integer; p,g : real; dbaris1 , dbaris2 : pbytearray; begin p := se.Value ; for br := 0 to gb1.Height-1 do begin for kl := 0 to gb1.Width-1 do begin dbaris1 := gb1.Picture.Bitmap.ScanLine[br]; dbaris2 := gb2.Picture.Bitmap.ScanLine[br]; // gambar gray scale if (form1.gb1.Picture.Bitmap.PixelFormat = pf8bit) then begin temp := dbaris1[kl] ; if (dbaris1[kl]>p) then dbaris2[kl] := 255 else dbaris2[kl] := 0; end; // gambar Color if (form1.gb1.Picture.Bitmap.PixelFormat = pf24bit) then begin // layer B if (dbaris1[3*kl]>p) then dbaris2[3*kl] := 255 else dbaris2[3*kl] := 0; // layer G if (dbaris1[3*kl+1]>p) then dbaris2[3*kl+1] := 255 else dbaris2[3*kl+1] := 0; // layer R if (dbaris1[3*kl+2]>p) then dbaris2[3*kl+2] := 255 else dbaris2[3*kl+2] := 0; end; end; end; // tampilkan hasilnya dan hitung histogramnya gb2.Repaint; histogram; end;
Gambar 8.1. Code untuk proses pengambangan tunggal Contoh hasil pengambangan terdapat pada gambar 8.2
Praktikum Pengolahan Citra Digital
32
S1 Informatika STMIK Bumigora Mataram
Gambar 8.2. Contoh hasil running pengambangan dengan nilai ambang 128 Langkah Praktikum Pengambangan ganda :
1) Lakukan langkah praktikum seperti langkah praktikum 6 yaitu langkah 1, 2 dan 3 2) Tambahkan Spin Edit pada form1 dengan cara Pilih Samples double klik Spin Edit
kemudian ubahlah isi properti name menjadi
SEB dan beri sebuah label keterangan dengan caption B Bawah 3) Tambahkan Spin Edit pada form1 dengan cara Pilih Samples double klik Spin Edit
kemudian ubahlah isi properti name menjadi
SEA dan beri sebuah label keterangan dengan caption B Atas Praktikum Pengolahan Citra Digital
33
S1 Informatika STMIK Bumigora Mataram
4) Double klik events On Change pada komponen spin edit SEB dan lakukan perubahan pada code nya seperti gambar 8.4. procedure TForm1.sebChange(Sender: TObject); var br , kl , temp : integer; bawah,atas: real; dbaris1 , dbaris2 : pbytearray; begin bawah := seb.Value ; atas := sea.Value ; for br := 0 to gb1.Height-1 do begin for kl := 0 to gb1.Width-1 do begin dbaris1 := gb1.Picture.Bitmap.ScanLine[br]; dbaris2 := gb2.Picture.Bitmap.ScanLine[br]; // gambar gray scale if (form1.gb1.Picture.Bitmap.PixelFormat = pf8bit) then begin if ((dbaris1[kl]>bawah) and (dbaris1[kl]
Gambar 8.4 Code untuk proses pengambangan ganda pada SEB CHANGE
Praktikum Pengolahan Citra Digital
34
S1 Informatika STMIK Bumigora Mataram 5) Double klik events On Change pada komponen spin edit SEA dan lakukan perubahan pada code nya seperti gambar 8.5.
procedure TForm1.seaChange(Sender: TObject); begin seb.Value := seb.Value + 1; seb.Value := seb.Value - 1; end;
Gambar 8.5 Code untuk proses pengambangan ganda pada SEA CHANGE Code pada langkah 5 ini boleh dipakai boleh tidak dipakai, jika tidak dipakai maka jika terjadi perubahan nilai pada spin edit batas atas, code yang terdapat di spin edit batas bawah tidak langsung dieksekusi sehingga perubahan pada gambar hasil tidak langsung kelihatan. Contoh hasil pengambangan ganda terdapat pada gambar 8.6
Praktikum Pengolahan Citra Digital
35
S1 Informatika STMIK Bumigora Mataram
Gambar 8.6 Contoh hasil running pengambangan ganda
Praktikum Pengolahan Citra Digital
36
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 9 Tugas atau uts
Tugas : 1) Buatlah program brightness untuk citra berwarna 2) Buatlah program Contras untuk citra berwarna 3) Buatlah program pengambangan tunggal untuk citra berwarna 4) Buatlah program pengambangan ganda untuk citra berwarna
Praktikum Pengolahan Citra Digital
37
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 10 Operasi titik, Negasi
Tujuan : Mahasiswa mengetahui cara membuat program operasi titik Negasi dan mengimplementasikan pada citra berwarna maupun citra gray scale Keterangan: Praktikum ini akan membuat sebuah citra dengan output bernilai 255 dikurangi nilai input, sehingga timbul efek gambar negatif . CH = 255 – CA Dengan : CH : Citra Hasil CA : Citra Asal Langkah Praktikum Negasi : 4) Aktifkan program delphi dan buatlah form2 dan form3 dengan cara mengklik tombol new form 5) Pilih additional
disebelah kiri tombol run
double klik image
sebanyak dua kali untuk membuat
image1 dan image2 kemudian ubahlah propertinya Pada image 1 Autosize diset true Center diset true Name diubah gb1 (singkatan gambar 1) Proportional diset true Pada image 2 Praktikum Pengolahan Citra Digital
38
S1 Informatika STMIK Bumigora Mataram
Autosize diset true Center diset true Name diubah gb2 (singkatan gambar 2) dan Proportional diset true 6) Buatlah button pada form1 dan captionnya diubah menjadi Ambil gambar, lakukan langkah seperti langkah pada praktikum 2 untuk menampilkan gambar pada gb1 dan gb2 tambahkan beberapa baris code sehingga hasilnya seperti yang terdapat pada gambar 10.1. procedure TForm1.Button1Click(Sender: TObject); begin if (opd.Execute) then begin gb1.Picture.LoadFromFile(opd.FileName); gb2.Picture.LoadFromFile(opd.FileName); gb2.Top := gb1.Height + 5 ; histogram; button1.Top :=
gb1.Height * 2 + 10 ;
button2.Top :=
gb1.Height * 2 + 10 ;
end; end;
Gambar 10.1 Code untuk mengambil gambar yang sama dengan picture dialog 4. Buatlah button pada form1 dan captionnya diubah menjadi negasi, kemudian double klik button tersebut dan isikan code yang terdapat pada gambar 10.2
Praktikum Pengolahan Citra Digital
39
S1 Informatika STMIK Bumigora Mataram procedure TForm1.Button2Click(Sender: TObject); var br , kl : integer; dbaris1 , dbaris2 : pbytearray; begin for br := 0 to gb1.Height-1 do begin for kl := 0 to gb1.Width-1 do begin dbaris1 := gb1.Picture.Bitmap.ScanLine[br]; dbaris2 := gb2.Picture.Bitmap.ScanLine[br]; dbaris2[kl] := 255 - dbaris1[kl]; end; end; // tampilkan hasilnya dan hitung histogramnya gb2.Repaint; histogram; end;
Gambar 10.2 Code proses negasi
Contoh hasil eksekusi proses negasi terdapat pada gambar 10.3
Gambar 10.3 Contoh hasil eksekusi proses negasi
Praktikum Pengolahan Citra Digital
40
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 11 Operasi titik, penggabungan gambar(image blending)
Tujuan : Mahasiswa
mengetahui
cara
membuat
program
operasi
titik,
penggabungan gambar (image blending) dan mengimplementasikan pada citra berwarna maupun citra gray scale. Keterangan: Praktikum ini akan menggabung dua gambar sehingga diperoleh . CH = w1 x C1 – w2 x C2 Dengan : CH : Citra Hasil C1 : Citra pertama C2 : Citra kedua W1 dan w2 : bobot Langkah Praktikum image blending : 7) Aktifkan program delphi dan buatlah form2 dan form3 dengan cara mengklik tombol new form 8) Pilih additional
disebelah kiri tombol run
double klik image
sebanyak tiga kali untuk membuat
image1, image2 dan image3 kemudian ubahlah propertinya Pada image 1 Autosize diset true Center diset true Name diubah gb1 (singkatan gambar 1) Praktikum Pengolahan Citra Digital
41
S1 Informatika STMIK Bumigora Mataram Proportional diset true Pada image 2 Autosize diset true Center diset true Name diubah gb2 (singkatan gambar 2) dan Proportional diset true Pada image 3 Autosize diset true Center diset true Name diubah gb3 (singkatan gambar 3) dan Proportional diset true 9) Buatlah button pada form1 dan captionnya diubah menjadi Ambil gambar, lakukan langkah seperti langkah pada praktikum 2 untuk menampilkan gambar pada gb1 dan gb2 tambahkan beberapa baris code sehingga hasilnya seperti yang terdapat pada gambar 10.1. procedure TForm1.Button1Click(Sender: TObject); begin if (opd.Execute) then begin gb1.Picture.LoadFromFile(opd.FileName); gb2.Picture.LoadFromFile(opd.FileName); gb3.Picture.LoadFromFile(opd.FileName); gb2.Top := gb1.Height + 5 ; histogram; button1.Top :=
gb1.Height * 2 + 10 ;
button2.Top :=
gb1.Height * 2 + 10 ;
end; end;
Gambar 11.1 Code untuk mengambil gambar 1, gambar 2 dan gambar3 open picture dialog
Praktikum Pengolahan Citra Digital
42
S1 Informatika STMIK Bumigora Mataram 4. Berikut ini adalah coding untuk melakukan proses blending
procedure TForm1.sbChange(Sender: TObject); var br , kl , tinggi , lebar: integer; dbaris1 , dbaris2, dbaris3 : pbytearray; begin sb.Max := 100; sb.Min := 0; edit1.Text := inttostr(sb.Position); if ( gb1.Height < gb2.Height) then tinggi := gb1.Height else tinggi := gb2.Height; if ( gb1.Width < gb2.Width) then lebar := gb1.Width else lebar := gb2.Width; for br := 0 to tinggi-1 do begin for kl := 0 to lebar-1 do begin dbaris1 := gb1.Picture.Bitmap.ScanLine[br]; dbaris2 := gb2.Picture.Bitmap.ScanLine[br]; dbaris3 := gb3.Picture.Bitmap.ScanLine[br]; if (form1.gb1.Picture.Bitmap.PixelFormat = pf8bit) then begin dbaris3[kl] := round ((sb.Position/100)*dbaris1[kl] + ((100 - sb.Position) / 100 )* dbaris2[kl]); end; end; end; // tampilkan hasilnya dan hitung histogramnya gb3.Repaint; histogram; end;
Gambar 11.2 Code proses blending
Praktikum Pengolahan Citra Digital
43
S1 Informatika STMIK Bumigora Mataram
Contoh hasil eksekusi coding tersebut terdapat pada gambar 11.3.
Gambar 11.3 Contoh hasil eksekusi proses blending
Praktikum Pengolahan Citra Digital
44
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 12 Operasi titik, pengurangan gambar(Untuk aplikasi Motion detection)
Tujuan : Mahasiswa mengetahui cara membuat program operasi titik, pengurangan gambar (Contoh untuk deteksi gerak) dan mengimplementasikan pada citra berwarna maupun citra gray scale. Keterangan: Praktikum ini akan mengurangkan dua gambar sehingga diperoleh . CH = C1 – C2 Dengan : CH : Citra Hasil C1 : Citra pertama C2 : Citra kedua Langkah Praktikum pengurangan gambar : 10) Aktifkan program delphi dan buatlah form2 dan form3 dengan cara mengklik tombol new form 11) Pilih additional
disebelah kiri tombol run
double klik image
sebanyak tiga kali untuk membuat
image1, image2 dan image3 kemudian ubahlah propertinya Pada image 1 Autosize diset true Center diset true Name diubah gb1 (singkatan gambar 1) Proportional diset true Praktikum Pengolahan Citra Digital
45
S1 Informatika STMIK Bumigora Mataram Pada image 2 Autosize diset true Center diset true Name diubah gb2 (singkatan gambar 2) dan Proportional diset true Pada image 3 Autosize diset true Center diset true Name diubah gb3 (singkatan gambar 3) dan Proportional diset true 12) Buatlah button pada form1 dan captionnya diubah menjadi Ambil gambar, lakukan langkah seperti langkah pada praktikum 2 untuk menampilkan gambar pada gb1 dan gb2 tambahkan beberapa baris code sehingga hasilnya seperti yang terdapat pada gambar 12.1. procedure TForm1.Button1Click(Sender: TObject); begin if (opd.Execute) then begin gb1.Picture.LoadFromFile(opd.FileName); gb2.Picture.LoadFromFile(opd.FileName); gb3.Picture.LoadFromFile(opd.FileName); gb2.Top := gb1.Height + 5 ; histogram; button1.Top :=
gb1.Height * 2 + 10 ;
button2.Top :=
gb1.Height * 2 + 10 ;
end; end;
Gambar 12.1 Code untuk mengambil gambar 1, gambar 2 dan gambar3 open picture dialog
Praktikum Pengolahan Citra Digital
46
S1 Informatika STMIK Bumigora Mataram 4. Berikut ini adalah coding untuk melakukan proses pengurangan gambar
procedure TForm1.sbChange(Sender: TObject); var br , kl , tinggi , lebar , total : integer; dbaris1 , dbaris2, dbaris3 : pbytearray; begin sb.Max := 100; sb.Min := 0; edit1.Text := inttostr(sb.Position); if ( gb1.Height <= gb2.Height) then tinggi := gb1.Height else tinggi := gb2.Height; if ( gb1.Width <= gb2.Width) then lebar := gb1.Width else lebar := gb2.Width; total := 0; for br := 0 to tinggi-1 do begin for kl := 0 to lebar-1 do begin dbaris1 := gb1.Picture.Bitmap.ScanLine[br]; dbaris2 := gb2.Picture.Bitmap.ScanLine[br]; dbaris3 := gb3.Picture.Bitmap.ScanLine[br]; if (form1.gb1.Picture.Bitmap.PixelFormat = pf8bit) then begin if (dbaris1[kl]> dbaris2[kl]) then total := total + dbaris1[kl]- dbaris2[kl] else total := total + dbaris2[kl]- dbaris1[kl]; dbaris3[kl] := dbaris1[kl]- dbaris2[kl]+ 100; end; end; end; // tampilkan hasilnya dan hitung histogramnya edit1.Text := inttostr(total); gb3.Repaint; histogram; end;
Gambar 12.2 Code proses pengurangan gambar dan menghitung total perbedaannya
Praktikum Pengolahan Citra Digital
47
S1 Informatika STMIK Bumigora Mataram Contoh hasil eksekusi coding tersebut terdapat pada gambar 12.3.
Gambar 12.3 Contoh hasil eksekusi proses pengurangan gambar
Praktikum Pengolahan Citra Digital
48
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 13 Region Growing
Tujuan : Mahasiswa mengetahui cara membuat program Region growing pada citra berwarna maupun citra gray scale. Keterangan: Praktikum ini akan membuat sebuah aplikasi yang dapat menelusuri pixelpixel dengan nilai keabuan yang hampir sama dan bertetangga, contoh aplikasinya adalah untuk mengetahui apakah suatu area berhubungan dengan area yang lain misal pada foto satelit suatu sungai apakah berhubungan dengan sungai yang lain .
Langkah Praktikum pengurangan gambar : 13) Buatlah komponen seperti yang terdapat pada form1 di gambar 13.1
Gambar 13.1 Tampilan form yang akan dibuat
Praktikum Pengolahan Citra Digital
49
S1 Informatika STMIK Bumigora Mataram
14) Pilih additional
double klik image
sebanyak tiga kali untuk membuat
image1, image2 dan image3 kemudian ubahlah propertinya Pada image 1 Autosize diset true Center diset true Name diubah gb1 (singkatan gambar 1) Proportional diset true Pada image 2 Autosize diset true Center diset true Name diubah gb2 (singkatan gambar 2) dan Proportional diset true Pada image 3 Autosize diset true Center diset true Name diubah gb3 (singkatan gambar 3) dan Proportional diset true 15) Buatlah button pada form1 dan captionnya diubah menjadi Ambil gambar, lakukan langkah seperti langkah pada praktikum 2 untuk menampilkan gambar pada gb1, gb2 dan gb3 16) Kemudian buatlah beberapa edit dengan menekan standard an klik edit yaitu edit1, edit2, edit3, edit4, edit5 dan edit6 Edit1 untuk menunjukkan posisi x dari mouse pada gambar Edit2 untuk menunjukkan posisi y dari mouse pada gambar Edit3 untuk menunjukkan nilai keabuan gambar pada posisi mouse
Praktikum Pengolahan Citra Digital
50
S1 Informatika STMIK Bumigora Mataram Edit4 untuk menunjukkan nilai keabuan setelah di klik pada koordinat yang ditunjuk oleh mouse. Edit5 untuk menunjukkan berapa nilai ambang yang akan dipakai sebagai acuan apakah pixel tetangga bisa dianggap sebagai anggota. 4. klik gb1 dan pilih events on mousemove kemudian ketik coding yang terdapat pada gambar 13.2
procedure TForm1.gb1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var dbaris : pbytearray; begin if gb_ok = 1 then begin edit1.Text := inttostr(x) ; edit2.Text := inttostr(y) ; dbaris := gb1.Picture.Bitmap.ScanLine[y]; edit3.Text := inttostr(dbaris[x]); end; end;
Gambar 13.2 Code untuk mendeteksi posisi mouse di gambar dan nilai keabuannya
Praktikum Pengolahan Citra Digital
51
S1 Informatika STMIK Bumigora Mataram 5. Double Klik form1 dan ketik code berikut
// buat deklarasi variabel global disini var Form1: TForm1; nama : string ; h : integer; gb_ok : integer; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin gb_ok := 0; edit5.Text := '10'; end;
Gambar 13.3 Code untuk inisialisasi
6. Klik gb1 dan pilih events onclik dan letakkan code pada gambar 13.4 procedure TForm1.gb1Click(Sender: TObject); var x , y , i,j,k ,l , pixel : integer; a1,a2, thr , ada2 : integer; dbaris1 , dbaris2 , dbaris3 : pbytearray; begin h := 0 ; l5.Caption := 'proses'; edit4.Text := edit3.Text ; thr := strtoint( edit5.Text) ; // letakkan disini code inisialisasi gambar2 dan gambar3 // letakkan disini code untuk mencatat posisi awal region // dan dimapping digb3 // letakkan disini code proses region growing
Gambar 13.4 Code proses region growing
Praktikum Pengolahan Citra Digital
52
S1 Informatika STMIK Bumigora Mataram
for i := 0 to gb2.Height-1 do begin for j := 0 to gb2.Width-1 do begin dbaris2 := gb2.Picture.Bitmap.ScanLine[i]; dbaris3 := gb3.Picture.Bitmap.ScanLine[i]; dbaris2[j] := 255; dbaris3[j] := 0; end; end; gb2.Repaint ;
Gambar 13.5 Code inisialisasi gambar2 dan gambar3
x := strtoint(edit1.Text); // posisi awal x region y := strtoint(edit2.Text); // posisi awal y region dbaris3 := gb3.Picture.Bitmap.ScanLine[y]; dbaris3[x] := 50;// mapping posisi awal di gambar 3 ada2 := 1; a1 := strtoint(edit4.Text) - thr; a2 := strtoint(edit4.Text) + thr;
Gambar 13.6 Code untuk menandai awal region growing
X dan y merupakan posisi yang ditunjuk mouse, ada2 adalah variabel yang menunjukkan bahwa masih ada area
yang tetangganya belum diuji apa
termasuk region atau bukan. a1 dan a2 merupakan batas bawah dan batas atas untuk menguji apakah sebuah pixel merupakan anggota. Sedang kan 50 artinya pixel tersebut adalah anggota dan tetangganya masih belum diuji. Berikut ini adalah angka dan artinya yang diletakkan pada gambar 3 atau gambar mapping.
// pada gb3 // 0 = belum dilihat // 25 = dilihat bukan anggota // 50 = dilihat termasuk anggota dan tetangga belum dilihat Praktikum Pengolahan Citra Digital
53
S1 Informatika STMIK Bumigora Mataram // 200= dilihat termasuk anggota dan tetangga sudah dilihat // jika pada gb3 masih ada yang bernilai 50 lakukan proses region growing while ada2 = 1 do begin ada2 := 0 ; // cari pada gb3 apa ada yang bernilai 50 for i := 1 to gb3.Height-2 do begin for j := 1 to gb3.Width-2 do begin // ambl pixel pada posisi i,j dbaris3 := gb3.Picture.Bitmap.ScanLine[i]; if ( i = 0 ) then dbaris3[j] := 1; if ( i = gb3.Height-1 ) then dbaris3[j] := 1; pixel := dbaris3[j]; // nilai pixel pada posisi i,j // uji apa pixel bernilai 2 if pixel = 50 then begin ada2 := 1 ; edit1.Text := inttostr(i); edit2.Text := inttostr(j); dbaris1 := gb1.Picture.Bitmap.ScanLine[i]; dbaris3 := gb3.Picture.Bitmap.ScanLine[i]; if ((dbaris1[j-1] >= a1) and (dbaris1[j-1] <= a2) and (dbaris3[j-1]<> 200)) then begin dbaris3[j-1] := 50 ; end; if ((dbaris1[j+1] >= a1) and (dbaris1[j+1] <= a2) and (dbaris3[j+1]<> 200)) then begin dbaris3[j+1] := 50 ; end; dbaris1 := gb1.Picture.Bitmap.ScanLine[i-1]; dbaris3 := gb3.Picture.Bitmap.ScanLine[i-1]; if ((dbaris1[j] >= a1) and (dbaris1[j] <= a2) and (dbaris3[j]<> 200)) then begin dbaris3[j] := 50 ; end; if ((dbaris1[j+1] >= a1) and (dbaris1[j+1] <= a2) and (dbaris3[j +1]<> 200)) then begin dbaris3[j+1] := 50 ; end;
// Letakkan disini code region growing 2 Gambar 13.7 Code untuk proses region growing 1
Praktikum Pengolahan Citra Digital
54
S1 Informatika STMIK Bumigora Mataram if ((dbaris1[j-1] >= a1) and (dbaris1[j-1] <= a2) and (dbaris3[j-1]<> 200)) then begin dbaris3[j-1] := 50 ; end; dbaris1 := gb1.Picture.Bitmap.ScanLine[i+1]; dbaris3 := gb3.Picture.Bitmap.ScanLine[i+1]; if ((dbaris1[j] >= a1) and (dbaris1[j] <= a2) and (dbaris3[j]<> 200)) then begin dbaris3[j] := 50 ; end; if ((dbaris1[j+1] >= a1) and (dbaris1[j+1] <= a2) and (dbaris3[j+1]<> 200)) then begin dbaris3[j+1] := 50 ; end; if ((dbaris1[j-1] >= a1) and (dbaris1[j-1] <= a2) and (dbaris3[j-1]<> 200)) then begin dbaris3[j-1] := 50 ; end; // copy kan data posisi i,j di gb1 ke posis i,j //di gb2 dan set 200 pada gb3 dbaris1 := gb1.Picture.Bitmap.ScanLine[i]; dbaris2 := gb2.Picture.Bitmap.ScanLine[i]; dbaris3 := gb3.Picture.Bitmap.ScanLine[i]; dbaris2[j] := dbaris1[j]; dbaris3[j] := 200; end; // end if pixel = 50 end; end;// end while gb2.Repaint; gb3.Repaint; edit6.Text := inttostr (k); end; // end prosedure
Gambar 13.8 Code untuk proses region growing 2
Penjelasan dari code 13.6 dan 13.7 akan dilakukan saat praktikum.
Praktikum Pengolahan Citra Digital
55
S1 Informatika STMIK Bumigora Mataram
Gambar 13.8 Hasil eksekusi proses region growing
Praktikum Pengolahan Citra Digital
56
S1 Informatika STMIK Bumigora Mataram PRAKTIKUM 14 Tugas atau quis
1. Buatlah program negasi untuk citra berwarna 2. Buatlah program image blending untuk citra berwarna 3. Buatlah program motion detection untuk citra berwarna 4. Buatlah program region growing untuk citra berwarna
Untuk praktikum 15 dan seterusnya akan dilakukan berupa tugas membuat program pengolahan citra diantaranya template matching, pencerminan, low pass filter, high pass filter dan lain-lain.
Praktikum Pengolahan Citra Digital
57