• Tidak ada hasil yang ditemukan

Modul Praktikum Pengolahan Citra Digital

N/A
N/A
Protected

Academic year: 2021

Membagikan "Modul Praktikum Pengolahan Citra Digital"

Copied!
57
0
0

Teks penuh

(1)

Praktikum Pengolahan Citra Digital 1

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

(2)

Praktikum Pengolahan Citra Digital 2 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

(3)

Praktikum Pengolahan Citra Digital 3 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.

(4)

Praktikum Pengolahan Citra Digital 4

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

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

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

(5)

Praktikum Pengolahan Citra Digital 5 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.

(6)

Praktikum Pengolahan Citra Digital 6 • 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 berturut-turut 3 kali sehingga muncul edit1, edit2 dan edit3 double Klik Label berturut-turut 3 kali sehingga muncul Label1, Label2 dan Label3 Atur semua posisi Simbol sesuai selera

(7)

Praktikum Pengolahan Citra Digital 7 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.

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:

procedure TForm1.Button1Click(Sender: TObject); begin

// tambahkan code berikut

if(opd.Execute)then gb1.Picture.LoadFromFile(opd.FileName); end;

(8)

Praktikum Pengolahan Citra Digital 8

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.

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;

(9)

Praktikum Pengolahan Citra Digital 9 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.

(10)

Praktikum Pengolahan Citra Digital 10

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 :

3 b g r s  

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

(11)

Praktikum Pengolahan Citra Digital 11 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.

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 if (opd.Execute) then begin gb1.Picture.LoadFromFile(opd.FileName); gb2.Picture.LoadFromFile(opd.FileName); end;

(12)

Praktikum Pengolahan Citra Digital 12 implementation

{$R *.dfm}

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.

Gambar 3.4. Code Konversi citra bewarna ke citra Gray Scale type

LogPal = record

lpal: TLogPalette;

entry: array [0..255] of TPaletteEntry; end;

var

Palet: LogPal;

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;

(13)

Praktikum Pengolahan Citra Digital 13 9) jalankan program dan lakukan proses konversi setelah gambar berwarna

di ambil

10) Penjelasan Code akan dilakukan saat praktikum.

(14)

Praktikum Pengolahan Citra Digital 14

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 :

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.

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

(15)

Praktikum Pengolahan Citra Digital 15

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

Gambar 4.1. Code ambil gambar dan pemanggil prosedure histogram 5) Buatlah sebuah prosedure seperti gambar 4.2

5) Buatlah prosedure histogram sebagai berikut

Gambar 4.2. Code Procedure histogram

6) Isikan Code berikut untuk memastikan variabel penampung histogram bernilai 0 procedure histogram; var hasil : string;

br,kl, lop, data, mak , y1 , y2: integer; dbaris : pbytearray;

h : array[0..255] of integer; 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; for lop := 0 to 255 do begin h[lop] := 0; hr[lop] := 0; hg[lop] := 0; hb[lop] := 0; end; if (opd.Execute) then gb1.Picture.LoadFromFile(opd.FileName); histogram;

(16)

Praktikum Pengolahan Citra Digital 16 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.

Gambar 4.4. Code menghitung histogram pada citra gray scale

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;

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;

(17)

Praktikum Pengolahan Citra Digital 17 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.

Gambar 4.6. menampilkan histogram citra gray scale di memo

Gambar 4.7 menampilkan histogram citra gray scale di form2

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;

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;

(18)

Praktikum Pengolahan Citra Digital 18 Gambar 4.8 menampilkan histogram citra Color di form2

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;

(19)

Praktikum Pengolahan Citra Digital 19 Jika program yang dibuat dijalankan dengan benar maka akan diperoleh tampilan seperti gambar 4.9

(20)

Praktikum Pengolahan Citra Digital 20

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.

(21)

Praktikum Pengolahan Citra Digital 21

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.

(22)

Praktikum Pengolahan Citra Digital 22

Langkah Praktikum :

1) Aktifkan program delphi dan buatlah form2 dan form3 dengan cara mengklik tombol new form disebelah kiri tombol run

2) Pilih additional 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.

(23)

Praktikum Pengolahan Citra Digital 23 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.

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;

(24)

Praktikum Pengolahan Citra Digital 24 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.

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

(25)

Praktikum Pengolahan Citra Digital 25 Gambar 6.3 Form tampilan sebelum program dijalankan

(26)

Praktikum Pengolahan Citra Digital 26

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

(27)

Praktikum Pengolahan Citra Digital 27 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 .

(28)

Praktikum Pengolahan Citra Digital 28 Gambar 7.1 Code untuk proses contras

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;

(29)

Praktikum Pengolahan Citra Digital 29 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.

(30)

Praktikum Pengolahan Citra Digital 30 Gambar 7.3 Contoh Program setelah dijalankan

(31)

Praktikum Pengolahan Citra Digital 31

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.

(32)

Praktikum Pengolahan Citra Digital 32 Gambar 8.1. Code untuk proses pengambangan tunggal

Contoh hasil pengambangan terdapat pada gambar 8.2

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;

(33)

Praktikum Pengolahan Citra Digital 33 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

(34)

Praktikum Pengolahan Citra Digital 34 4) Double klik events On Change pada komponen spin edit SEB dan lakukan

perubahan pada code nya seperti gambar 8.4.

Gambar 8.4 Code untuk proses pengambangan ganda pada SEB CHANGE

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;

(35)

Praktikum Pengolahan Citra Digital 35 5) Double klik events On Change pada komponen spin edit SEA dan lakukan

perubahan pada code nya seperti gambar 8.5.

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 procedure TForm1.seaChange(Sender: TObject); begin

seb.Value := seb.Value + 1; seb.Value := seb.Value - 1; end;

(36)

Praktikum Pengolahan Citra Digital 36 Gambar 8.6 Contoh hasil running pengambangan ganda

(37)

Praktikum Pengolahan Citra Digital 37

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

(38)

Praktikum Pengolahan Citra Digital 38

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 disebelah kiri tombol run

5) Pilih additional 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

(39)

Praktikum Pengolahan Citra Digital 39 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.

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

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;

(40)

Praktikum Pengolahan Citra Digital 40 Gambar 10.2 Code proses negasi

Contoh hasil eksekusi proses negasi terdapat pada gambar 10.3

Gambar 10.3 Contoh hasil eksekusi proses negasi

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;

(41)

Praktikum Pengolahan Citra Digital 41

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 disebelah kiri tombol run

8) 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

(42)

Praktikum Pengolahan Citra Digital 42 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.

Gambar 11.1 Code untuk mengambil gambar 1, gambar 2 dan gambar3 open picture dialog

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;

(43)

Praktikum Pengolahan Citra Digital 43 4. Berikut ini adalah coding untuk melakukan proses blending

Gambar 11.2 Code 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;

(44)

Praktikum Pengolahan Citra Digital 44 Contoh hasil eksekusi coding tersebut terdapat pada gambar 11.3.

(45)

Praktikum Pengolahan Citra Digital 45

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 disebelah kiri tombol run

11) 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

(46)

Praktikum Pengolahan Citra Digital 46 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.

Gambar 12.1 Code untuk mengambil gambar 1, gambar 2 dan gambar3 open picture dialog

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;

(47)

Praktikum Pengolahan Citra Digital 47 4. Berikut ini adalah coding untuk melakukan proses pengurangan gambar

Gambar 12.2 Code proses pengurangan gambar dan menghitung total perbedaannya

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;

(48)

Praktikum Pengolahan Citra Digital 48 Contoh hasil eksekusi coding tersebut terdapat pada gambar 12.3.

(49)

Praktikum Pengolahan Citra Digital 49

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 pixel-pixel 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

(50)

Praktikum Pengolahan Citra Digital 50 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

(51)

Praktikum Pengolahan Citra Digital 51 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

Gambar 13.2 Code untuk mendeteksi posisi mouse di gambar dan nilai keabuannya

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;

(52)

Praktikum Pengolahan Citra Digital 52 5. Double Klik form1 dan ketik code berikut

Gambar 13.3 Code untuk inisialisasi

6. Klik gb1 dan pilih events onclik dan letakkan code pada gambar 13.4

Gambar 13.4 Code proses region growing

// 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;

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

(53)

Praktikum Pengolahan Citra Digital 53 Gambar 13.5 Code inisialisasi gambar2 dan gambar3

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

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 ;

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;

(54)

Praktikum Pengolahan Citra Digital 54 // 200= dilihat termasuk anggota dan tetangga sudah dilihat

// jika pada gb3 masih ada yang bernilai 50 lakukan proses region growing

Gambar 13.7 Code untuk proses region growing 1

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;

(55)

Praktikum Pengolahan Citra Digital 55 Gambar 13.8 Code untuk proses region growing 2

Penjelasan dari code 13.6 dan 13.7 akan dilakukan saat praktikum.

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

(56)

Praktikum Pengolahan Citra Digital 56 Gambar 13.8 Hasil eksekusi proses region growing

(57)

Praktikum Pengolahan Citra Digital 57

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.

Gambar

Gambar 1.2 Pemilihan Brightness/contrast pada Adobe Photoshop
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
Gambar 2.2 Form Delphi  2)  Pilih Additional     Double klik Image
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 :
+7

Referensi

Garis besar

Dokumen terkait

Dari 3 buah citra 3x3 piksel dengan kedalaman 3 bit berikut ini, tentukan gambar manakah yang paling mirip dengan gambar c.jpg.. Pada gambar berikut ini, citra berukuran 10x10

Gambar 7 Grafik nilai mean dan entropy tahap pengujian Dari grafik pada Gambar 4.11 tersebut dapat dianalisa tingkat akurasi dari metode yang digunakan yaitu dengan

Gambar 10 Tampilan Python GUI.. Klik Menu File -&gt; New Window lalu ketikkan listing program sebagai berikut. Setelah selesai mengetikkan code, langkah selanjutnya menyimpan

Berdasarkan data hasil pengujian keseluruhan, diperoleh prosentase tingkat keberhasilan terhadap sejumlah obyek pengujian khususnya warna merah sebesar hingga

Rangkaian sistem proteksi power supply dengan metode single voltage regulator with time delay protection and alarm diperlihatkan pada Gambar 7. Terjadi drop

Rangkaian sistem proteksi power supply dengan metode single voltage regulator with time delay protection and alarm diperlihatkan pada Gambar 7. Terjadi drop

Pada gambar 4 yaitu menunjukkan pengujian threshold dengan menggunakan nilai yaitu 150 dari gambar 4 dapat dilihat bahwa pada daerah zebra cross sudah terlihat

Setelah diterapkan sesuai dengan persamaan 1 maka akan diperoleh sisi/edge dari gambar yang hasilnya tidak kalah dengan metode pendeteksian sisi yang lain bahkan dari segi