Modul Praktikum Pengolahan Citra Digital

57
S1 Informatika STMIK Bumigora Mataram 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

description

PCD

Transcript of Modul Praktikum Pengolahan Citra Digital

Page 1: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Page 2: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Gambar 1.2 Pemilihan Brightness/contrast pada Adobe Photoshop

Page 3: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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.

Page 4: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Page 5: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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.

Page 6: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Page 7: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 8: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 9: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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.

Page 10: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

bgrs

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

Page 11: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 12: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 13: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

Praktikum Pengolahan Citra Digital

13

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

Page 14: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Page 15: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 16: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 17: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

end;

Page 18: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

end;

Page 19: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

Praktikum Pengolahan Citra Digital

19

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

Page 20: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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.

Page 21: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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.

Page 22: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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.

Page 23: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 24: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Page 25: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

Praktikum Pengolahan Citra Digital

25

Gambar 6.3 Form tampilan sebelum program dijalankan

Page 26: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Page 27: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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 .

Page 28: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 29: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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.

Contoh hasil eksekusi program brightness terdapat pada gambar 7.3.

Page 30: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

Praktikum Pengolahan Citra Digital

30

Gambar 7.3 Contoh Program setelah dijalankan

Page 31: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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.

Page 32: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 33: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Page 34: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 35: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 36: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

Praktikum Pengolahan Citra Digital

36

Gambar 8.6 Contoh hasil running pengambangan ganda

Page 37: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Page 38: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Pada image 2

Page 39: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 40: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 41: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Name diubah gb1 (singkatan gambar 1)

Page 42: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 43: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 44: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

Praktikum Pengolahan Citra Digital

44

Contoh hasil eksekusi coding tersebut terdapat pada gambar 11.3.

Gambar 11.3 Contoh hasil eksekusi proses blending

Page 45: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Page 46: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 47: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 48: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

Praktikum Pengolahan Citra Digital

48

Contoh hasil eksekusi coding tersebut terdapat pada gambar 12.3.

Gambar 12.3 Contoh hasil eksekusi proses pengurangan gambar

Page 49: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Gambar 13.1 Tampilan form yang akan dibuat

Page 50: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Edit3 untuk menunjukkan nilai keabuan gambar pada posisi mouse

Page 51: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 52: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

// letakkan disini code proses region growing

Page 53: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

Page 54: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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;

// Letakkan disini code region growing 2

Page 55: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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

Page 56: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

Praktikum Pengolahan Citra Digital

56

Gambar 13.8 Hasil eksekusi proses region growing

Page 57: Modul Praktikum Pengolahan Citra Digital

S1 Informatika STMIK Bumigora Mataram

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.