Modul Praktikum Pengolahan Citra Digital
-
Upload
dhe-vhue-tra -
Category
Documents
-
view
713 -
download
38
description
Transcript of 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
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
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.
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
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.
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
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;
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;
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.
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
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;
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;
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
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
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;
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;
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;
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;
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
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.
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.
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.
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;
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
S1 Informatika STMIK Bumigora Mataram
Praktikum Pengolahan Citra Digital
25
Gambar 6.3 Form tampilan sebelum program dijalankan
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
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 .
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;
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.
S1 Informatika STMIK Bumigora Mataram
Praktikum Pengolahan Citra Digital
30
Gambar 7.3 Contoh Program setelah dijalankan
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.
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;
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
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;
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;
S1 Informatika STMIK Bumigora Mataram
Praktikum Pengolahan Citra Digital
36
Gambar 8.6 Contoh hasil running pengambangan ganda
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
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
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;
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;
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)
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;
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;
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
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
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;
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;
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
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
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
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;
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
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;
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
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
S1 Informatika STMIK Bumigora Mataram
Praktikum Pengolahan Citra Digital
56
Gambar 13.8 Hasil eksekusi proses region growing
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.