Tugas :
1) Buatlah program brightness untuk citra berwarna 2) Buatlah program Contras untuk citra berwarna
3) Buatlah program pengambangan tunggal untuk citra berwarna 4) Buatlah program pengambangan ganda untuk citra berwarna
Praktikum Pengolahan Citra Digital 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
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;
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;
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
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;
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;
Praktikum Pengolahan Citra Digital 44 Contoh hasil eksekusi coding tersebut terdapat pada gambar 11.3.
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)
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;
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;
Praktikum Pengolahan Citra Digital 48 Contoh hasil eksekusi coding tersebut terdapat pada gambar 12.3.
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
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
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;
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
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;
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;
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
Praktikum Pengolahan Citra Digital 56 Gambar 13.8 Hasil eksekusi proses region growing
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,