Anda di halaman 1dari 57

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

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

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

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

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

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 3) Pilih Standard Double klik Image double Klik Edit berturut-turut 3 kali sehingga muncul berturut-turut 3 kali sehingga

edit1, edit2 dan edit3

double Klik Label

muncul Label1, Label2 dan Label3

Atur semua posisi Simbol sesuai selera

Praktikum Pengolahan Citra Digital

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 terdapat pada form1, klik simbol tersebut dan

Sehingga Simbol ini

ubahlah name pada propertinya menjadi opd. 6) Pilih Standard klik Button yang terdapat pada form1 kemudian

7) Klik satu kali simbol ini

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

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 lokasi gambar grayscale yang ingin ditampilkan. dan cari

Praktikum Pengolahan Citra Digital

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

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 11

Praktikum Pengolahan Citra Digital

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 yang terdapat di kiri sehingga

3) Buat form baru dengan meng klik 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) Buatlah prosedure histogram sebagai berikut tinggi : 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 sebanyak dua kali untuk membuat

double klik image

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 terlalu panjang). 5) Pilih standard klik edit sehingga muncul edit1 Klik scrollbar ubahlah name nya menjadi sb (agar tidak

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 P : Konstanta pengali : 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 caption G. 4) Klik komponen spin edit dan double klik pada events on change dan isikan code seperti yang terdapat pada gambar 7.1 . Klik edit dan beri label keterangan dengan

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]<atas)) then dbaris2[kl] := 255 else dbaris2[kl] := 0; end; end; end; // tampilkan hasilnya dan hitung histogramnya gb2.Repaint; histogram; end;

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 sebanyak dua kali untuk membuat

double klik image

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 := button2.Top := end; end; gb1.Height * 2 + 10 ; gb1.Height * 2 + 10 ;

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 sebanyak tiga kali untuk membuat

double klik image

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 := button2.Top := end; end; gb1.Height * 2 + 10 ; gb1.Height * 2 + 10 ;

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 sebanyak tiga kali untuk membuat

double klik image

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 := button2.Top := end; end; gb1.Height * 2 + 10 ; gb1.Height * 2 + 10 ;

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 49

Praktikum Pengolahan Citra Digital

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

Anda mungkin juga menyukai