Modul Praktikum Pengolahan Citra Digital
MODUL I MENGENAL PEMROGRAMAN DELPHI I.
TUJUAN
1. Mahasiswa dapat mengenal Elemen IDE Delphi 2. Mahasiswa mampu mengenal komponen Delphi 3. Mahasiswa mampu membuat aplikasi sederhana 4. Mahasiswa mampu menambahkan komponen kedalam form
II.
TEORI
Delphi adalah suatu program berbasis bahasa Pascal yang berjalan dalam lingkungan Windows. Delphi juga merupakan sebuah perangkat lunak pengembangan program yang terintegrasi, yang meliputi fungsi untuk penulisan program, kompilasi sampai dengan pelacakan kesalahan (debugging ). ). Delphi adalah suatu bahasa pemrograman yang telah memanfaatkan metode pemrograman Object Oriented Programming (OOP). Secara default elemen IDE (Integrated Development Environment) terdiri atas beberapa bagian sebagaimana terlihat pada gambar 1.1, yaitu Menu Bar, Tool Bar, Component Palette, Object Treeview, Object Inspector, Form Designer, dan Code Editor.
Tool Bar
Menu bar Component Palette
Object TreeView
Code Explorer
Form Designer
Object Ins Ins ecto ectorr
Gambar 1.1 IDE Delphi 1. Menu Bar digunakan untuk memilih perintah (Command ) yang diberikan kepada Delphi
untuk
melakukan
suatu
pekerjaan
tertentu,
misalnya
menyimpan
file,menampilkan elemen tertentu, menginstal komponen baru dan lain-lain. Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 1
Modul Praktikum Pengolahan Citra Digital 2. Tool Bar berisi icon (gambar kecil) yang mengilustrasikan mengilustrasi kan perintah yang yang diberikan, misalnya icon disket untuk perintah menyimpan file, icon buku untuk perintah bantuan( Help). 3. Component Palette berisi icon yang menunjukan komponen yang dapat ditambahkan ke dalam form yang kita buat, baik komponent visual seperti button (tombol), text box, combo box dan lain-lain. lain -lain. 4. Form Designer merupakan jendela untuk mendesain tampilan aplikasi yang kita buat. Bentuk dasar dari tampilan program yang dibuat menggunakan Delphi ini adalah berbentuk form. Didalam form ini in i dapat ditempatkan komponen-komponen komp onen-komponen visual vi sual dan non visual. 5. Code Explorer digunakan untuk menambahkan dan mengedit program yang kita buat. Dalam Delphi, beberapa bagian program akan dibuat secara otomatis ketika kita memulai membuat sebuah proyek. Ada juga bagian program yang akan dibuat otomatis ketika kita buat suatu event pada komponent yang ditambahkan ke form. 6. Object TreeView berisi daftar komponen (disebut juga objek) yang kita tambahkan dalam form yang dibuat di Form Editor. 7. Object Inspector Berisi daftar property dan event dari komponen yang sedang dipilih di form editor. Object Inspector mempunyai 2 buah tab yaitu tab Properties dan Events. Property komponen dapat diubah dengan mengetikan pada bagian kanan dari object inspector. Setiap komponen dapat memiliki event untuk menentukan perilakunya apabila dilakukan di lakukan hal tertentu pada pa da komponen tersebut. tersebu t.
Komponen pada Delphi terdiri atas komponen visual dan komponen non visual. Komponen visual akan ditampilkan apa adanya dalam form yang dibuat, sedangkan komponen visual tidak terlihat pada waktu dieksukusi. Beberapa komponen yang sering digunakan adalah: Tabel 1.1. Tabel Komponen Komponen
Icon
Palet
Keterangan
Label
Standar
Menambahkan tulisan dalam form
Button
Standar
Berupa tombol tekan dengan tulisan diatasnya
Edit
Standar
Kotak isian untuk mengisikan teks atau angka biasanya untuk input program
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 2
Modul Praktikum Pengolahan Citra Digital Image
Additional
Untuk menampilkan gambar yang dimuat dari file
Timer
System
Untuk membuat event yang berulang setiap rentang waktu tertentu.
OpenPictureDialog
Dialogs
Untuk menampilkan kotak dialog untuk memilih file citra yang akan dimuat di muat
III. PRAKTEK Praktek 1
1. Buka Program Aplikasi Delphi 2. Untuk memulai Proyek baru pilih Menu File – New New – Application Application 3. Rancanglah Form seperti gambar dibawah ini
Gambar 1.2. Form Haloo 4. Pada label1 (Klik label1), pada Object Inspector Tab properties nilai Caption ganti dari label1 menjadi Masukan Nama anda 5. Pada Button1 (Klick Button1), pada Object Inspector Tab properties nilai Caption juga ganti menjadi Ok 6. Pada Form (Klik Bagian Form yang kosong), pada Object Inspector Tab properties nilai caption ganti menjadi Haloo 7. Setelah selesai Coba Jalankan Programnya dengan cara tekan F9 atau pada Menu Run | Run atau pilih tombol Run pada menu SpeedBar 8. Simpanlah Project anda dengan cara klik Menu File - Save Project As – Beri Beri Nama Project1.dpr
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 3
Modul Praktikum Pengolahan Citra Digital
Praktek 2
1. Bukalah File Project 1.dpr dengan cara klik Menu File – Open Open Project [atau bisa juga tekan ctrl+F11] – pilih pilih Project1.dpr 2. Pada tombol Ok klik2 kali sehingga muncul source code sebagai berikut:
3. Pada baris ke 3 tambahkan kode program “Panel1.Caption =’Haloo Apa Kabar’+edit1.text”. Pada baris 1,2 dan 4 biarkan seadanya.
4. Setelah selesai Coba Jalankan Programnya dengan cara tekan F9 atau pada Menu Run | Run atau pilih tombol Run pada menu SpeedBar 5. Simpanlah Project anda dengan cara klik Menu File - Save Project As – Beri Beri Nama Project2.dpr TUGAS
Buatlah sebuah form aplikasi seperti gambar dibawah ini: Setelah anda masukan Nim, Nama dan Jurusan dan begitu anda Clik tombol Ulangi maka Form Nim, Nama dan Jurusan menjadi Kosong kembali.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 4
Modul Praktikum Pengolahan Citra Digital
MODUL II MEMAHAMI PENGGUNAAN EVENT HANDLER I. TUJUAN
1. Mahasiswa dapat memahami tentang event handler 2. Mahasiswa mampu mengenal komponen Delphi 3. Mahasiswa mampu membuat aplikasi sederhana 4. Mahasiswa mampu menambahkan komponen kedalam form
II. TEORI
Event Handler adalah mekanisme pemicuan yag dilakukan oleh sistem operasi (dalam hal ini windows) untuk menjalankan procedure tertentu apabila komponen mengalami sesuatu kejadian (event). Setiap komponen memiliki event tertentu yang dapat dibuatkan event handlernya. Misalnya, komponen Button memiliki event di antaranya adalah OnClick, OnEnter, OnExit, OnKeyDown, OnKeyPress, OnMouseDown dan lain-lain.
Cara melihat event apa saja yang dimiliki oleh suatu komponen adalah dengan mengklik komponen yang hendak dicek, lalu pilih tab event pada Object Inspector. Di bawahnya akan muncul daftar daf tar event yang dimiliki oleh o leh komponen tersebut.
Praktek 1
1. Buka Program Aplikasi Delphi 2. Untuk memulai Proyek baru pilih Menu File – New New – Application Application Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 5
Modul Praktikum Pengolahan Citra Digital 3. Rancanglah Form seperti gambar dibawah ini
Komponen Form
Properti
Nilai
Name
Form1
Caption
Hitung
Width
340
Height
135
Name
ButtonTambah
Caption
Tambah
Name
ButtonKurang
Caption
Kurang
Label
Caption
Angka 1 =
Label
Caption
Angka 2 =
Label
Caption
Hasil =
Label
Name
LabelZ
Caption
10
Name
EditX
Text
4
Name
EditY
Text
6
Button
Button
Edit
Edit
4. Masukan kode Program di bawah ini: unit Unit1;
interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm) Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 6
Modul Praktikum Pengolahan Citra Digital Label1: TLabel; Label2: TLabel; EditX: TEdit; EditY: TEdit; ButtonTambah: TButton; Label3: TLabel; LabelZ: TLabel; ButtonKurang: TButton; procedure ButtonTambahClick(Sender: TObject); procedure ButtonKurangClick(Sender: TObject); private
{ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1; X, Y, Z: double;
implementation
{$R *.dfm}
procedure TForm1.ButtonTambahClick(Sender: TObject); begin
X := StrToFloat(EditX.Text); Y := StrToFloat(EditY.Text); Z := X+Y; LabelZ.Caption := FloatToStr(Z); end;
procedure TForm1.ButtonKurangClick(Sender: TObject); begin
X := StrToFloat(EditX.Text); Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 7
Modul Praktikum Pengolahan Citra Digital Y := StrToFloat(EditY.Text); Z := X-Y; LabelZ.Caption := FloatToStr(Z); end; end.
5. Jalankan kode program dengan menekan tombol F9
Catatan : Fungsi StrToFloat mengubah nilai string (karena properti text pada komponen edit adalah bertipe string) menjadi bilangan riil (double atau real). Sebaliknya fungsi FloatToStr mengubah bilangan riil menjadi string (karena properti caption pada komponen label bertipe string juga)
TUGAS
1. Buatlah aplikasi sederhana untuk perkalian dan pembagian seperti gambar form dibawah ini:
2. Buatlah aplikasi sederhana untuk penjualan seperti gambar form dibawah ini:
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 8
Modul Praktikum Pengolahan Citra Digital
MODUL III MENAMPILKAN CITRA I. TUJUAN
1. Mahasiswa dapat mengenal komponen yang digunakan untuk menampilkan citra 2. Mahasiswa mampu menjelaskan cara mengakses data citra 3. Mahasiswa mampu menjelaskan cara mengolah citra menggunakan Delphi 4. Mahasiswa mampu membuat aplikasi menampilkan citra
II. TEORI
Dalam Delphi terdapat sebuah komponen yang telah disediakan untuk menampilkan citra, yaitu komponen Image. Image. Komponen ini terdapat dalam palet Additional. Komponen ini memiliki beberapa properti penting yang sering digunakan dalam menampilkan citra di dalam form, yaitu: Width
: Lebar Komponen Image
Height
: Tinggi Komponen Image
Picture
: Objek berisi data citra berbentuk bitmap
AutoSize
: Untuk mengubah agar ukuran image secara otomatis mengikuti
ukuran citra dalam picture Center
: Untuk mengatur agar posisi citra dalam Picture di tengah komponen
Image Proportional
: Mempertahankan aspect ratio (Perbandingan lebar dan tinggi citra)
III. PRAKTEK Praktek 1
1. Buka Program Aplikasi Delphi 2. Untuk memulai Proyek baru pilih Menu File – New New – Application Application 3. Persiapkan form seperti gambar dibawah ini:
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 9
Modul Praktikum Pengolahan Citra Digital
4. Klik tab palet Additional – double klik Image
maka di dalam form akan
terdapat komponen Image.
5. Untuk memuat citra ke komponen Image pada waktu desain, klik pada komponen Image. Kemudian pada object inspector, klik pada tombol berisi elipses (.....) di sebelah kanan properti picture. 6. Maka akan muncul kotak dialog picture editor
7. Selanjutnya tekan tombol load picture dan muncul dialog Load Picture – pilih salah satu gambar – open. open. 8. Maka focus akan kembali ke Picture Editor 9. Lalu tekan Ok – jalankan jalankan dengan menekan F9 10. Save File dengan nama menampilkancitra.dpr
Praktek 2
1. Buka Program Aplikasi Delphi 2. Untuk memulai Proyek baru pilih Menu File – New New – Application Application Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 10
Modul Praktikum Pengolahan Citra Digital 3. Persiapkan form seperti gambar dibawah ini:
4. Klik tab palet Additional – double klik Image
maka di dalam form akan
terdapat komponen Image.
5. Pada Object Object Inspector rubahlah Properti Stretch menjadi True
6. Double klik didalam form maka akan muncul Source code tambahkan code Image1.Picture.LoadFromFile('AA.bmp');
7. Jalankan dengan menekan F9 8. Simpan project dengan nama menampilkancitra2.dpr
Praktek 3 Program Penampil Citra
1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama TampilCitra.dpr Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 11
Modul Praktikum Pengolahan Citra Digital 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Komponen Form
Properti
Nilai
Name
Form1
Caption
Tampil Citra
Name
ButtonMuatCitra
Caption
Muat citra
Name
CheckBoxCenter
Caption
Center
Name
CheckBoxStretch
Caption
Stretch
Name
CheckBoxProportional
Caption
Proportional
Name
CheckBoxAutoSize
Caption
AutoSize
Name
ButtonUkuranSemula ButtonUkuranSemula
Caption
Ukuran semula
Image
Name
Image1
OpenPictureDialog
Name
OpenPictureDialog1
Filter
Bitmaps(*.bmp) | *.bmp
InitialDir
-
Button
CheckBox
CheckBox
CheckBox
CheckBox
Button
4. Definisikan variabel yang diperlukan dan tuliskan di bagian pendefinisan variabel( dibawah Form1:TForm1). var
Form1: TForm1; LebarSemula: integer; TinggiSemula: integer; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 12
Modul Praktikum Pengolahan Citra Digital 5. Diperlukan event handler OnCreate pada Form1 untuk menyimpan nilai lebar dan tinggi semula Image1 kedalam variabel diatas. Buatlah event handler seperti kode program dibawah ini: procedure TForm1.FormCreate(Sender: TObject); begin
LebarSemula := Image1.Width; TinggiSemula := Image1.Height; end;
6. Kemudian
buatlah
event
handler
untuk
menangani
event
OnClick
dari
ButtonMuatCitra. Double Klik ButtonMuatCitra dan masukan kode program dibawah ini: procedure TForm1.ButtonMuatCitraClick(Sender: TObject); begin
(OpenPictureDialog1.Execute) then if (OpenPictureDialog1.Execute) begin
Image1.Picture.LoadFromFile( OpenPictureDialog1.FileName); end end;
7. Kemudian untuk mengetahui efek dari properti Center, Stretch, Stretch, Proportional, dan AutoSize maka buatlah event handler OnClick untuk keempat Check Box dalam Form1 sebagai berikut: procedure TForm1.CheckBoxCenterClick(Sender: TObject); begin
Image1.Center := CheckBoxCenter.Checked; end;
procedure TForm1.CheckBoxStretchClick(Sender: TObject); begin
Image1.Stretch := CheckBoxStretch.Checked; end;
procedure TForm1.CheckBoxProportionalClick(Sender: TObject); begin Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 13
Modul Praktikum Pengolahan Citra Digital Image1.Proportional := CheckBoxProportional.Checked; end;
procedure TForm1.CheckBoxAutoSizeClick(Sender: TObject); begin
Image1.AutoSize := CheckBoxAutoSize.Checked; end;
8. Selanjutnya apabila tombol ButtonUkuranSemula diklik maka ukuran Image1 akan dikembalikan ke nilai semula. Tambahkan kode program: procedure TForm1.ButtonUkuranSemulaClick(Sender: TObject); begin
Image1.AutoSize := false; CheckBoxAutoSize.Checked := false; Image1.Width := LebarSemula; Image1.Height := TinggiSemula; end;
9. Jalankan Program di atas dengan menekan tombol Run/F9
TUGAS
Berikan kesimpulan dan amati kode program yang telah anda kerjakan.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 14
Modul Praktikum Pengolahan Citra Digital
MODUL IV OPERASI PENGOLAHAN CITRA I. TUJUAN
1. Mahasiswa dapat memahami bagaimana cara mengakses data piksel dalam sebuah citra 2. Mahasiswa mampu memahami tentang citra keabuan 3. Mahasiswa mampu memahami tentang citra negatif 4. Mahasiswa mampu membuat aplikasi pengolahan citra
II. TEORI
Citra yang disimpan dalam komponen Image Image seringkali tidak hanya ditampilkan saja, tetapi juga diolah sehingga diperoleh citra baru. Terdapat 2 cara di dalam Delphi untuk mengakses data piksel yang ada dalam citra tersebut, yaitu: 1. Menggunakan Properti Pixels dari canvas 2. Menggunakan Properti ScanLine dari Bitmap Dalam modul praktek kali ini akan dijabarkan penggunaan ScanLine. Untuk menggunakan ScanLine diperlukan
variabel bertipe PbyteArray yang yang digunakan untuk
menunjuk ke alamat memori tempat penyimpanan data piksel citra. Pendeklarasian: var
PC: PbyteArray
Dengan menggunakan properti ScanLine, PC akan menunjuk ke alamat awal dari data piksel untuk setiap barisnya, di d i mana nomor baris b aris menjadi me njadi indeks dari properti p roperti tersebut. Jadi perintah berikut akan membuat PC seolah-olah akan menjadi variabel larik byte untuk data piksel baris ke y. PC := Image1.Picture.Bitmap.ScanLine[y]; Selanjutnya untuk sumbu x, gunakan sebagai indeks dari PC. Untuk format citra 24 bit maka: Elemen biru (B), posisi indeks larik 3*x Elemen hijau (G), posisi indeks larik 3*x+1 Elemen merah (R), posisi indeks larik 3*x+2
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 15
Modul Praktikum Pengolahan Citra Digital III. PRAKTEK Praktek 1
1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama ElemenWarna.dpr 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Komponen Form
Properti
Nilai
Name
Form1
Caption
Elemen Warna
Name
ButtonMuatCitra
Caption
Muat citra
Name
LabelPosisi
Caption
Posisi
Caption
Merah (R)
Name
EditR
ReadOnly
True
Caption
Hijau(G)
Name
EditG
ReadOnly
True
Caption
Biru (B)
Name
EditB
ReadOnly
True
Image
Name
Image1
OpenPictureDialog
Name
OpenPictureDialog1
Filter
Bitmaps(*.bmp) | *.bmp
InitialDir
-
Button
Label
Label
Edit
Label
Edit
Label
Edit
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 16
Modul Praktikum Pengolahan Citra Digital 4. Selanjutnya double klikpada tombol ButtonMuatCitra dan masukan kode program dibawah ini: procedure TForm1.ButtonMuatCitraClick(Sender: TObject); begin
(OpenPictureDialog1.Execute) then if (OpenPictureDialog1.Execute) begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); end end;
5. Selanjutnya buat juga event handler untuk OnMouseDown (yaitu event yang terjadi ketika tombol mouse ditekan ketika mouse berada di atas Image1. Tambahkan kode program ini dibawah kode program pro gram diatas: procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var
PC: PbyteArray; R, G, B: byte; begin
(Image1.Picture.Bitmap.PixelFormat = pf24bit) then if (Image1.Picture.Bitmap.PixelFormat begin
PC := Image1.Picture.Bitmap.ScanLine[Y]; R := PC[3*X+2]; G := PC[3*X+1]; B := PC[3*X]; LabelPosisi.Caption := 'Posisi: ('+IntToStr(X)+','+IntToStr(Y)+')'; EditR.Text := IntToStr(R); EditG.Text := IntToStr(G); EditB.Text := IntToStr(B); end end;
6. Jalankan Program di atas dengan menekan tombol Run/F9
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 17
Modul Praktikum Pengolahan Citra Digital
Praktek 2 Konversi ke Citra Keabuan
1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama Keabuan.dpr 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Komponen Form
Properti
Nilai
Name
Form1
Caption
Konversi True Color ke Skala Keabuan
Button
Button
Image
Image
OpenPictureDialog
Name
ButtonMuatCitra
Caption
Muat citra
Name
ButtonRerata
Caption
Keabuan rerata
Name
Image1
Stretch
True
Name
Image2
Stretch
True
Name
OpenPictureDialog1
Filter
Bitmaps(*.bmp) | *.bmp
InitialDir
-
4. Selanjutnya double klik pada tombol ButtonMuatCitra dan masukan kode program dibawah ini: Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 18
Modul Praktikum Pengolahan Citra Digital procedure TForm1.ButtonMuatCitraClick(Sender: TObject); begin
(OpenPictureDialog1.Execute) then if (OpenPictureDialog1.Execute) begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); Image2.Picture := Image1.Picture; end end;
5. Selanjutnya Double klik pada tombol ButtonRerata dan masukan kode program di bawah ini: procedure TForm1.ButtonRerataClick(Sender: TObject); var
PC, PH: PByteArray; x, y: integer; R, G, B, K: byte; begin for y:=0 to Image1.Picture.Height-1 do begin
PC := Image1.Picture.Bitmap.ScanLine[y]; PH := Image2.Picture.Bitmap.ScanLine[y]; for x:=0 to Image1.Picture.Width-1 do begin
R := PC[3*x+2]; G := PC[3*x+1]; B := PC[3*x]; K := Round((R+G+B)/3); PH[3*x+2] := K; PH[3*x+1] := K; PH[3*x] := K; end; end;
Image2.Refresh; 6. Jalankan Program di atas dengan menekan tombol Run/F9
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 19
Modul Praktikum Pengolahan Citra Digital
Praktek 3
1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama CitraNegatif.dpr 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Komponen Form
Button
Image
Image
OpenPictureDialog
Properti
Nilai
Name
Form1
Caption
Citra Negatif
Name
ButtonMuatCitra
Caption
Muat citra
Name
Image1
Stretch
True
Name
Image2
Stretch
True
Name
OpenPictureDialog1
Filter
Bitmaps(*.bmp) | *.bmp
InitialDir
-
4. Selanjutnya buat event handler untuk event OnClick pada tombol ButtonMuatCitra procedure TForm1.ButtonMuatCitraClick(Sender: TObject); var
PC, PH: PByteArray; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 20
Modul Praktikum Pengolahan Citra Digital x, y: integer; begin
if (OpenPictureDialog1.Execute) then begin
Image1.Picture.LoadFromFile( OpenPictureDialog1.FileName); Image2.Picture := Image1.Picture; for y:=0 to Image1.Picture.Height-1 do begin
PC := Image1.Picture.Bitmap.ScanLine[y]; PH := Image2.Picture.Bitmap.ScanLine[y]; for x:=0 to Image1.Picture.Width-1 do begin
PH[3*x+2] := 255-PC[3*x+2]; PH[3*x+1] := 255-PC[3*x+1]; PH[3*x] := 255-PC[3*x]; end; end;
Image2.Refresh; end end;
5. Jalankan Program dengan menekan tombol F9
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 21
Modul Praktikum Pengolahan Citra Digital
MODUL V OPERASI KECEMERLANGAN DAN PENGHALUSAN I. TUJUAN
1. Mahasiswa dapat memahami bagaimana cara mengubahnilai ketiga elemen warna 2. Mahasiswa mampu memahami operasi penghalusan
II. TEORI
Modifikasi kecemerlangan (brightness) adalah salah satu operasi dasar pengolahan citra. Operasi ini digunakan untuk mengubah nilai ketiga elemen warna menggunakan persamaan berikut ini: R o = R i + CR Go = Gi + CG Bo = Bi + CB Di mana CR , CG , CB adalah konstanta yang digunakan untuk memodifikasi elemen warna merah, hijau dan biru. Konstanta ini bernilai antara -255 sampai dengan 255. Nilai negatif konstanta ini akan menyebabkan citra menjadi lebih gelap
sedangkan nilai positif
menyebabkan citra menjadi lebih cemerlang. Perlu diingat bahwa nilai piksel adalah dari 0 sampai dengan 255 untuk format 8 bit tiap elemen warna sehingga tidak pernah negatif.
III. PRAKTEK Praktek 1
1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama Kecemerlangan.dpr 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 22
Modul Praktikum Pengolahan Citra Digital Komponen
Properti
Form
Nilai
Name
Form1
Caption
Modifikasi Kecemerlangan
Name
ButtonMuatCitra
Caption
Muat citra
Label
Caption
Merah
Label
Caption
Hijau
Label
Caption
Biru
TrackBar
Name
TrackBarMerah
Min
-250
Max
250
Frequency
50
Name
TrackBarHijau
Min
-250
Max
250
Frequency
50
Name
TrackBarBiru
Min
-250
Max
250
Frequency
50
Name
CheckBoxSeragam
Caption
Seragam
Name
Image1
Stretch
True
Name
Image2
Stretch
True
Name
OpenPictureDialog1
Filter
Bitmaps(*.bmp) | *.bmp
InitialDir
-
Button
TrackBar
TrackBar
CheckBox
Image
Image
OpenPictureDialog
4. Selanjutnya
buatlah
event
handler
untuk
event
OnClick
pada
tombol
ButtonMuatCitra. Masukan kode program di bawah ini: procedure TForm1.ButtonMuatCitraClick(Sender: TObject); begin
(OpenPictureDialog1.Execute) then if (OpenPictureDialog1.Execute) begin Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 23
Modul Praktikum Pengolahan Citra Digital Image1.Picture.LoadFromFile( OpenPictureDialog1.FileName); Image2.Picture := Image1.Picture; TrackBarMerah.Position := 0; TrackBarHijau.Position := 0; TrackBarBiru.Position := 0; end end;
5. Selanjutnya karena event handler untuk ketiga komponen TrackBar adalah sama yaitu menghitung nilai semua piksel dalam citra untuk setiap kali ada perubahan posisi thumb pada komponen tersebut. Tambahkan deklarasi fungsi Proses dalam pendefinisian kelas Tform1, Tfo rm1, di bagian deklarasi privat: p rivat: private
procedure Proses; { Private declarations } 6. Selanjutnya tambahkan prosedur Tform1.Proses di bagian awal implementasi sebagai berikut: implementation
{$R *.dfm}
procedure TForm1.Proses; var
PC, PH: PByteArray; x, y, cR, cG, cB, Ro, Go, Bo: integer; begin
cR := TrackBarMerah.Position; cG := TrackBarHijau.Position; cB := TrackBarBiru.Position; for y:=0 to Image1.Picture.Height-1 do begin
PC := Image1.Picture.Bitmap.ScanLine[y]; PH := Image2.Picture.Bitmap.ScanLine[y]; for x:=0 to Image1.Picture.Width-1 do Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 24
Modul Praktikum Pengolahan Citra Digital begin
Ro := PC[3*x+2]+cR; if (Ro<0) then Ro := 0; if (Ro>255) then Ro := 255; Go := PC[3*x+1]+cG; if (Go<0) then Go := 0; if (Go>255) then Go := 255; Bo := PC[3*x]+cB; if (Bo<0) then Bo := 0; if (Bo>255) then Bo := 255; PH[3*x+2] := Ro; PH[3*x+1] := Go; PH[3*x] := Bo; end; end;
Image2.Refresh; end;
7. Selanjutnya buat event
handler
untuk event OnChange pada komponen
TrackBarMerah , masukan kode dibawah ini: procedure TForm1.TrackBarMerahChange(Sender: TObject); begin
if CheckBoxSeragam.Checked then begin
TrackBarHijau.Position := TrackBarMerah.Position; TrackBarBiru.Position := TrackBarMerah.Position; end;
Proses; end; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 25
Modul Praktikum Pengolahan Citra Digital 8. Selanjutnya buat juga event handler
OnChange untuk TrackBarHijau dan
TrackBarBiru, masukan kode program dibawah ini: procedure TForm1.TrackBarHijauChange(Sender: TObject); begin
if CheckBoxSeragam.Checked then begin
TrackBarMerah.Position := TrackBarHijau.Position; TrackBarBiru.Position := TrackBarHijau.Position; end;
Proses; end;
procedure TForm1.TrackBarBiruChange(Sender: TObject); begin
if CheckBoxSeragam.Checked then begin
TrackBarMerah.Position := TrackBarBiru.Position; TrackBarHijau.Position := TrackBarBiru.Position; end;
Proses; end;
9. Jalankan dengan menekan tombol F9
Praktek 2
1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama Penghalusan.dpr 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 26
Modul Praktikum Pengolahan Citra Digital
Komponen Form
Properti
Nilai
Name
Form1
Caption
Penghalusan Seragam
Name
ButtonMuatCitra
Caption
Muat citra
Label
Caption
N
Edit
Name
EditN
Text
1
ReadOnly
True
Name
UpDownN
Min
1
Max
9
Associate
EditN
Name
Image1
Stretch
True
Name
Image2
Stretch
True
Name
OpenPictureDialog1
Filter
Bitmaps(*.bmp) | *.bmp
InitialDir
-
Button
UpDown
Image
Image
OpenPictureDialog
4. Selanjutnya tambahkan deklarasi procedure Proses di dalam deklarasi kelas Tform1 di bagian private. private procedure Proses;
5. Selanjutnya tambahkan procedure Proses di bagian awal implementasi (di bawah {$R*.dfm}) Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 27
Modul Praktikum Pengolahan Citra Digital
implementation
{$R *.dfm}
procedure TForm1.Proses; var
x, y, w, h, N, i, j: integer; PC, PH: PByteArray; Ri, Gi, Bi, Ro, Go, Bo: array of array of byte; sumR, sumG, sumB, bobot: double; begin
N := StrToInt(EditN.Text); bobot := 1/((2*N+1)*(2*N+1)); 1/((2*N+1)*(2 *N+1)); w := Image1.Picture.Width; h := Image1.Picture.Height; SetLength(Ri, w, h); SetLength(Gi, w, h); SetLength(Bi, w, h); SetLength(Ro, w, h); SetLength(Go, w, h); SetLength(Bo, w, h); for y := 0 to h-1 do begin
PC := Image1.Picture.Bitmap.ScanLine[y]; for x := 0 to w-1 do begin
Ri[x,y] := PC[3*x+2]; Gi[x,y] := PC[3*x+1]; Bi[x,y] := PC[3*x]; end; end;
for y := N to h-1-N do for x := N to w-1-N do Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 28
Modul Praktikum Pengolahan Citra Digital begin
sumR := 0; sumG := 0; sumB := 0; for j := -N to N do for i := -N to N do begin
sumR := sumR+Ri[x+i,y+j]; sumG := sumG+Gi[x+i,y+j]; sumB := sumB+Bi[x+i,y+j]; end;
Ro[x,y] := Round(bobot*sumR); Go[x,y] := Round(bobot*sumG); Bo[x,y] := Round(bobot*sumB); end;
for y := 0 to h-1 do begin
PH := Image2.Picture.Bitmap.ScanLine[y]; for x := 0 to w-1 do begin
PH[3*x+2] := Ro[x,y]; PH[3*x+1] := Go[x,y]; PH[3*x] := Bo[x,y]; end; end;
Ri := nil; Gi := nil; Bi := nil; Ro := nil; Go := nil; Bo := nil; Image2.Refresh; end;
6. Selanjutnya
buatlah
event
handler
untuk
event
OnClick
pada
tombol
ButtonMuatCitra. procedure TForm1.ButtonMuatCitraClick(Sender: TObject); begin
if (OpenPictureDialog1.Execute) then begin Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 29
Modul Praktikum Pengolahan Citra Digital Image1.Picture.LoadFromFile( OpenPictureDialog1.FileName); Image2.Picture := Image1.Picture; Proses; end end;
7. Terakhir tambahkan event handler OnChanging untuk komponen UpDownN yang hanya berisi perintah memanggil procedure Proses. procedure TForm1.UpDownNChanging(Sender: TObject;
var AllowChange: Boolean); begin
Proses; end;
8. Jalankan Program
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 30
Modul Praktikum Pengolahan Citra Digital
MODUL VI INSTALASI PAKET KOMPONEN JHVIDEOCAP I. TUJUAN
1. Mahasiswa dapat memahami komponen untuk menangkap citra/frame dari kamera 2. Mahasiswa mampu menginstal paket komponen JHVideoCap
II. TEORI
Komponen standar dari Delphi tidak dapat digunakan untuk mengakses kamera digital atau webcam. Oleh karenaitu diperlukan komponen tambahan untuk menangkap citra atau frame dari webcam, baik itu untuk penangkapan citra secara tunggal maupun dalam bentuk citra dinamik. Pada modulmpraktikum kali ini akan digunakan komponen JHVideoCap. Paket ini dibuat oleh J Huebler dari jerman. Produk ini bersifat freeware danboleh digunakan untuk sembarang aplikasi tanpa harus membayar. Paket JHVideoCap terdiri atas 2 komponen yaitu: 1. TVideoCap, yang digunakan untuk menangkap frame langsung dari webcam. 2. TvideoDisp, yang digunakan untuk menampilkan frame bitmap. Paket
JHVideoCap
dapat
diunduh
secara
bebas
di
http://www.torry.net/vcl/mmedia/video/jhvideocap.. Untuk mendapatkannya bisa meminta ke http://www.torry.net/vcl/mmedia/video/jhvideocap Aslab atau ke Dosen Pengampu.
III. PRAKTEK Praktek 1 Menginstal Paket JHVideoCap
Sebelum menginstal JHVideoCap, perlu diperhatikan hal berikut ini. Jika pada Delphi yang digunakan terdapat komponen GLScene, yaitu sebuah paket komponen yang digunakan untuk menampilkan gambar 3 dimensi, maka paket JHVideoCap tidak dapat diinstal karena pada paket GLScene memiliki unit yang memiliki nama yang sama dengan yang terdapat dalam Tvideo yaitu unit vfw. Oleh karena itu paket GLScene harus dinonaktifkan dahulu. 1. Klik Menu Component – Install Install Packages.. 2. Muncul kotak dialog Default Project Options, Hilangkan centangan pada GLScene
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 31
Modul Praktikum Pengolahan Citra Digital
3. Centang pada CheckBox default 4. Ok Menginstal Paket JHVideoCap
1. Extract File Component.zip yang telah anda download/yang telah anda copy dari Dosen ke folder untuk menginstal paket JHVideoCap, disarankan di folder tempat mengintal delphi.Contoh di C:\Program Files\Delphi7SE\Imports
2. Untuk Delphi versi 6 atau 7 gunakan gunakan file videocap5.dpk. double click saya filenya. Maka akan muncul kotak konfirmasi untuk mengkonversi paket ke versi lebih baru tekan tombol yes.
3. Kemudian akan muncul jendela paket JHVideoCap. Untuk Delphi 7 unit drvedit.pas harus dihilangkan karena akan menimbulkan error ketika dicompile.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 32
Modul Praktikum Pengolahan Citra Digital
4. Klik drvedit.pas – klik klik remove 5. Munculkotak dialog remove from project, klik drvedit dan tekan ok
6. Tekan tombol yes untuk menghapus unit yang dipilih tadi dari paket. 7. Setelah unit drvedit sudah dihapus, tekan icon compile
8. Setelah itu tekan Install
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 33
Modul Praktikum Pengolahan Citra Digital 9. Selamat JHVideoCap telah terinstal, Informasi diatas menandakan paket JHVideoCap telah berhasil diinstal dan siap untuk digunakan. Maka akan muncul palet baru dalam palet komponen, yaiut palet video, dengan 2 buah komponen didalamnya,yaitu VideoCap dan VideoDisp
Praktek 2 Setting Proyek Menggunkan TVideoCap
Setelah diinstal JHVideoCap, untuk dapat menggunakan komponen TVideoCap dalam proyek perlu disettin g dahulu. 1. Pilih Menu Project – Options Options 2. Muncul kotak dialog Project Options pilih tab Directories /Conditionals
3. Pada search path isikan folder dimana videocap.pas berada (dalam contoh ini ada di, C:\Program Files\Borland\Delphi7\Imports\jhvideocap\component) 4. Tekan OK
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 34
Modul Praktikum Pengolahan Citra Digital
MODUL VII PENGAKSESAN KAMERA I. TUJUAN
1. Mahasiswa dapat memahami program untuk menangkap citra/frame dari kamera 2. Mahasiswa mampu memahami cara pembuatan program untuk penyimpanan frame tunggal
II. TEORI
Ada beberapa cara untuk menampilkan frame yang ditangkap dari kamera, yaitu: 1. Menggunakan video preview 2. Menggunakan Video stream 3. Menggunakan singleframe yang yang ditangkap dengan fungsi GrabFrame
III. PRAKTEK Praktek 1. MenampilkanPreview MenampilkanPreview Frame dari Kamera
1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama TampilPreview.dpr 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Komponen Form
Button
Properti
Nilai
Name
Form1
Caption
Tampil Preview Kamera
Name
ButtonPreview
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 35
Modul Praktikum Pengolahan Citra Digital
Button
Button
Label
Label
CheckBox
CheckBox
Edit
UpDown
VideoCap
Caption
Preview
Name
ButtonFormat
Caption
Format
Name
ButtonDisplay
Caption
Display
Name
LabelDriverKamera
Caption
Driver Kamera:
Name
LabelFormatVideo
Caption
Format Video:
Name
CheckBoxScale
Caption
PreviewScale to Window
Name
CheckBoxProportional
Caption
PreviewScale Proportional
Name
EditFps
Text
15
Read Only
True
Name
UpDownFps
Min
1
Max
30
Position
15
Asociate
EditFps
Name
VideoCap1
Width
320
Height
240
VideoPreview
false
4. Tambahkan deklarasi variabel yang yang diperlukan yaitu: LebarVideo, TinggiVideo, Bpp, Ukuran Video. Masukan kode program dibawah ini: var
Form1: TForm1; LebarVideo, TinggiVideo, Bpp, UkuranVideo: integer; 5. Tambahkan deklarasi procedure Info didalam deklarasi kelas Tform1 di bagian private. private procedure Info;
6. Tambahkan procedure Info di bagian awal implementasi (dibawah {$R*.dfm}) Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 36
Modul Praktikum Pengolahan Citra Digital
implementation
{$R *.dfm}
procedure TForm1.Info; begin
LebarVideo := VideoCap1.BitMapInfoHeader.biWidth; TinggiVideo := VideoCap1.BitMapInfoHeader.biHeight; Bpp := VideoCap1.BitMapInfoHeader.biBitCount; UkuranVideo := VideoCap1.BitMapInfoHeader.biSizeImage; LabelFormatVideo.Caption := 'Format video: '+ IntToStr(LebarVideo)+'x'+IntToStr(TinggiVideo)+ ', '+IntToStr(Bpp)+' bit ('+IntToStr(UkuranVideo)+ ' byte/frame)'; end;
7. Procedure Info diatas akan dipanggil setiap kali terjadi perubahan status, yaitu dengan terjadinya event OnStatus. Tambahkan kode program dibawah ini: procedure TForm1.VideoCap1Status(Sender: TObject); begin
Info; end;
8. Selanjutnya buatlah event handler untuk event OnCreate pada Form1. Caranya tambahkan kode program berikut ini: procedure TForm1.FormCreate(Sender: TObject); begin
VideoCap1.DriverIndex := 0; LabelDriverKamera.Caption := 'Driver kamera: '+ VideoCap1.DriverName; VideoCap1.DriverOpen := true; Info; end;
9. Selanjutnya tambahkan kode program dibawah ini kedalam ButtonPreview. Double click ButtonPreview masukan kode program berikut: procedure TForm1.ButtonPreviewClick(Sender: TObject); Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 37
Modul Praktikum Pengolahan Citra Digital begin
VideoCap1.VideoPreview := not VideoCap1.VideoPreview; end;
10. Selanjutnya tambahkan kode program dibawah ini kedalam ButtonFormat. Double click ButtonFormat masukan kode program berikut: procedure TForm1.ButtonFormatClick(Sender: TObject); begin
(VideoCap1.HasDlgFormat) then if (VideoCap1.HasDlgFormat) VideoCap1.DlgVFormat else
ShowMessage('Driver tidak memiliki dialog Format'); end;
11. Selanjutnya tambahkan kode program dibawah ini kedalam ButtonDisplay. Double click ButtonDisplay masukan kode program berikut: procedure TForm1.ButtonDisplayClick(Sender: TObject); begin
(VideoCap1.HasDlgDisplay) then if (VideoCap1.HasDlgDisplay) VideoCap1.DlgVDisplay else
ShowMessage('Driver tidak memiliki dialog Display'); end; procedure TForm1.FormResize(Sender: TObject); begin
VideoCap1.Width := Width-VideoCap1.Left-18; VideoCap1.Height := Height-VideoCap1.Top-42; end;
12. Selanjutnya
untuk
melihat
efek
dari
Properti
PreviewScaletoWindow
dan
PreviewScaleProportional tambahkan event handler untuk event OnClick pada komponen CheckBoxScale dan CheckBoxProportional. Kode programnya dibawah ini: procedure TForm1.CheckBoxScaleClick(Sender: TObject); begin
VideoCap1.PreviewScaleToWindow := CheckBoxScale.Checked; end; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 38
Modul Praktikum Pengolahan Citra Digital
procedure TForm1.CheckBoxProportionalClick(Sender: TObject); begin
VideoCap1.PreviewScaleProportional := CheckBoxProportional.Checked; end;
13. Terakhir tambahkan event handler OnChanging untuk komponen UpDownFps yang digunakan untuk mengatur banyaknya frame tiap detik yang akan di preview. Kode programnya dubawah ini: ini : procedure TForm1.UpDownFpsChanging(Sender: TObject;
var AllowChange: Boolean); begin
VideoCap1.PreviewRate := StrToInt(EditFps.Text); end;
14. Jalankan dengan menekan tombol F9
Praktek 2 Menyimpan Frame ke file
Seringkali frame yang ditangkap oleh kamera perludisimpan kedalam file sehingga dapat digunakan/dianalisis pada kesempatan yang lain. Pada modul praktikum kali ini akan dibahas cara menyimpan frame tunggal ke dalam file bitmap menggunakan fungsi SaveAsDIB. 1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama SimpanFrame.dpr 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 39
Modul Praktikum Pengolahan Citra Digital Komponen Form
Button
Button
Label
OpenPictureDialog
VideoCap
Properti
Nilai
Name
Form1
Caption
Penyimpanan Frame Tunggal
Name
ButtonNamaFile
Caption
Nama file
Name
ButtonSimpan
Caption
Simpan
Name
LabelNamaFile
Caption
Frame.bmp
Name
SavePictureDialog1
Filter
Bitmap(*.bmp)|*.bmp
InitialDir
-
DefaultExt
bmp
Name
VideoCap1
Width
320
Height
240
VideoPreview
False
Color
clWhite
4. Pertama-tama buatlah event handler untuk event OnCreate pada Form1, kode programnya sebagi berikut: berik ut: procedure TForm1.FormCreate(Sender: TObject); begin
VideoCap1.DriverIndex := 0; VideoCap1.DriverOpen := true; VideoCap1.VideoPreview := true; end;
5. Tombol ButtonNamaFile digunakan untuk mengganti atau memilih nama file yang akan digunakan untuk menyimpan frame. Double click ButtonNamaFile, masukan kode program dibawah ini: procedure TForm1.ButtonNamaFileClick(Sender: TObject); begin
(SavePictureDialog1.Execute) then if (SavePictureDialog1.Execute) LabelNamaFile.Caption := SavePictureDialog1.FileName; end; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 40
Modul Praktikum Pengolahan Citra Digital 6. Tombol ButtonSimpan digunakan untuk menyimpan frame ke file dengan nama file seperti tercantum pada LabelNamaFile.Double click ButtonSimpan, masukan kode program dibawah ini: procedure TForm1.ButtonSimpanClick(Sender: TObject); begin
VideoCap1.SingleImageFile := LabelNamaFile.Caption; VideoCap1.GrabFrameNoStop; VideoCap1.SaveAsDIB then if VideoCap1.SaveAsDIB ShowMessage('Frame tersimpan') else
ShowMessage('Gagal menyimpan') end;
7. Kompile dan jalankan program tersebut.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 41
Modul Praktikum Pengolahan Citra Digital
MODUL VIII PENGAKSESAN KAMERA2 I. TUJUAN
1.
Mahasiswa dapat memahami program untuk menangkap citra/frame dari kamera
2.
Mahasiswa mampu memahami cara pembuatan program untuk penyimpanan file video stream
II. TEORI
Frame yang ditangkap oleh driver kamera dapat pula disimpan dalam bentuk file video. Untuk membuatnya, properti komponen TVideoCap yang diperlukan antara lain adalah BufferFileSize,
CapIndexSize, CapTimeLimit, CapToFile, FrameRate,
dan
VideoFileName.
III. PRAKTEK Praktek 1
1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama SimpanVideo.dpr 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Komponen Form
Properti
Nilai
Name
Form1
Caption
Penyimpanan
Video
dari
Kamera
Button
Width
510
Name
ButtonNamaFile
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 42
Modul Praktikum Pengolahan Citra Digital
Button
Button
Button
Edit
Edit
Label
SavePictureDialog
VideoCap
Image
Caption
Nama file
Name
ButtonSimpan
Caption
Simpan
Name
ButtonFormat
Caption
Format
Name
ButtonKompresi
Caption
Kompresi
Name
EditLama
Text
0
Name
EditIndeks
Text
0
Name
LabelNamaFile
Caption
Video.bmp
Name
SavePictureDialog1
Filter
Video(*.avi)|*.avi
InitialDir
-
DefaultExt
Avi
Name
VideoCap1
Width
320
Height
240
VideoPreview
False
Color
clWhite
Frame rata
30
Cap to File
True
Name
Image1
Width
320
Height
240
4. Masukan kode program seperti dibawah ini: unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 43
Modul Praktikum Pengolahan Citra Digital Dialogs, ComCtrls, StdCtrls, ExtCtrls, Videocap, vfw, ExtDlgs;
type TForm1 = class(TForm) VideoCap1: TVideoCap; ButtonSimpan: TButton; ButtonNamaFile: TButton; LabelNamaFile: TLabel; SavePictureDialog1: TSavePictureDialog; ButtonKompresi: TButton; ButtonFormat: TButton; Label1: TLabel; EditLama: TEdit; EditIndeks: TEdit; Label2: TLabel; procedure FormCreate(Sender: TObject); procedure ButtonNamaFileClick(Sender: TObject); procedure ButtonSimpanClick(Sender: TObject); procedure ButtonKompresiClick(Sender: TObject); procedure ButtonFormatClick(Sender: TObject); procedure VideoCap1StatusCallback(Sender: TObject; nID: Integer;
status: String); private
{ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1;
implementation
{$R *.dfm} Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 44
Modul Praktikum Pengolahan Citra Digital
procedure TForm1.FormCreate(Sender: TObject); TObject) ; begin
VideoCap1.DriverIndex := 0; VideoCap1.DriverOpen := true; VideoCap1.VideoPreview := true; end;
procedure TForm1.ButtonNamaFileClick(Sender: TObject); begin
if (SavePictureDialog1.Execute) then LabelNamaFile.Caption := SavePictureDialog1.FileName; end;
procedure TForm1.ButtonSimpanClick(Sender: TObject); begin
VideoCap1.VideoFileName := LabelNamaFile.Caption; if VideoCap1.CapInProgess then begin
VideoCap1.StopCapture; ButtonSimpan.Caption := 'Simpan'; end
else begin
VideoCap1.CapTimeLimit := StrToInt(EditLama.Text); VideoCap1.CapIndexSize := StrToInt(EditIndeks.Text); VideoCap1.StartCapture; ButtonSimpan.Caption := 'Stop'; end end;
procedure TForm1.ButtonFormatClick(Sender: TObject); var
lebar: integer; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 45
Modul Praktikum Pengolahan Citra Digital begin
if VideoCap1.HasDlgFormat then begin
VideoCap1.DlgVFormat; VideoCap1.Width := VideoCap1.BitMapInfoHeader.biWidth; VideoCap1.Height := VideoCap1.BitMapInfoHeader.biHeight; lebar := VideoCap1.Left+VideoCap1.Width+18; if lebar>510 then Width := lebar else Width := 510; Height := VideoCap1.Top+VideoCap1.Height+42; end; end;
procedure TForm1.ButtonKompresiClick(Sender: TObject); begin
VideoCap1.DlgVCompression; end;
procedure TForm1.VideoCap1StatusCallback(Sender: TObject; nID: Integer;
status: String); begin
if nID = IDS_CAP_End then ButtonSimpan.Caption := 'Simpan'; end; end.
5. Jalankan dengan menekan tombol F9 6. Lihat hasil video penyimpanan
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 46
Modul Praktikum Pengolahan Citra Digital
MODUL IX& X ANALISIS CITRA DENGAN FEATURE EXTRACTION I. TUJUAN
1.
Mahasiswa dapat memahami analisis citra
2.
Mahasiswa mampu memahami cara pembuatan program feature extraction
II. PRAKTEK
1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama SimpanVideo.dpr 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
4. Masukan kode program dibawah ini: unit image1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, StdCtrls, ExtDlgs;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 47
Modul Praktikum Pengolahan Citra Digital type
TForm1 = class(TForm) GroupBox1: TGroupBox; SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
Image1: TImage; OpenPictureDialog1: TOpenPictureDialog; BitBtn1: TBitBtn; SpeedButton9: TSpeedButton; procedure SpeedButton1Click(Sender: SpeedButton1 Click(Sender: TObject); procedure SpeedButton2Click(Sender: SpeedButton2 Click(Sender: TObject); procedure SpeedButton3Click(Sender: SpeedButton3 Click(Sender: TObject); procedure SpeedButton4Click(Sender: SpeedButton4 Click(Sender: TObject); procedure SpeedButton5Click(Sender: SpeedButton5 Click(Sender: TObject); procedure SpeedButton6Click(Sender: SpeedButton6 Click(Sender: TObject); procedure SpeedButton7Click(Sender: SpeedButton7 Click(Sender: TObject); procedure SpeedButton8Click(Sender: SpeedButton8 Click(Sender: TObject); procedure BitBtn1Click(Sender: BitBtn1Click(Sender : TObject); procedure SpeedButton9Click(Sender: SpeedButton9 Click(Sender: TObject); procedure FormCreate(Sender: TObject); TObje ct); private
{ Private declarations } public
{ Public declarations } end; var
Form1: TForm1; gambar:Tbitmap; mampat:Tbitmap; akhir:Tbitmap; implementation
{$R *.dfm} procedure TForm1.SpeedButton1Click(Sender: TObject);
{begin Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 48
Modul Praktikum Pengolahan Citra Digital Form2.show;} var temp : PByteArray;
i,j : integer;
x
: byte;
digit : byte;
begin
gambar := TBitmap.Create; gambar.LoadFromFile(OpenPictureDialog1.filename); Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename); if gambar.PixelFormat gambar.PixelFormat <> pf24bit then gambar.PixelFormat := Pf24bit; Image1.Picture.Bitmap := gambar; gambar.SaveToFile('Gray_Scale.bmp'); for j:=0 to gambar.Height-1 do begin
temp := gambar.ScanLine[j]; i:=0; repeat x :=round((0.11*temp[i])+(0.59*temp[i+1])+(0.3*temp[i+2])); for digit:=0 to 2 do temp[i+digit]:=x; inc(i,3); until i >= 3*gambar.Width-1; end;
Image1.Picture.Bitmap := gambar; end; procedure TForm1.SpeedButton2Click(Sender: TObject);
const sobel : array[0..1,0..2,0..2] of smallint = (((-1,0,1),(-2,0,2),(-1,0,1)), ((-1,-2,-1),(0,0,0),(1,2,1))); prewitt : array[0..1,0..2,0..2] of smallint small int = (((-1,0,1),(-1,0,1),(-1,0,1)), ((-1,-1,-1),(0,0,0),(1,1,1)));
var row
: array[0..8] of pbytearray;
col
: pbytearray;
x,y
: smallint;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 49
Modul Praktikum Pengolahan Citra Digital i,j,k,p
: smallint;
image
: tbitmap;
sum,jum
: longint;
begin P:=-120; SpeedButton1.Click; image := tbitmap.Create; Image.Assign(gambar); for y:=1 to gambar.Height-2 do begin for i:=-1 to 1 do row[i+1]:= Image.ScanLine[y+i]; col := gambar.ScanLine[y]; x:=3; repeat sum := 0; for i:=-1 to 1 do for j:=-1 to 1 do sum:=sum+(sobel[0,i+1,j+1]*row[i+1,x+j*3]); jum:=0; for i:=-1 to 1 do for j:=-1 to 1 do jum:=jum+(sobel[1,i+1,j+1]*row[i+1,x+j*3]); jum:=jum+(sobel[1,i+1 ,j+1]*row[i+1,x+j*3]); sum := (sum + jum)+p; if sum>255 then sum:=255; if sum<0 then sum:=0; for k:=0 to 2 do col[x+k]:=sum; inc(x,3); until x>=3*(gambar.Width-4); end; Image1.Picture.bitmap := gambar; gambar.SaveToFile('Sobel1.bmp'); Image.free; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 50
Modul Praktikum Pengolahan Citra Digital end;
procedure TForm1.SpeedButton3Click(Sender: TForm1.SpeedButton3Cli ck(Sender: TObject); {begin Form3.Show;} const konvolusi : array[0..1,0..2,0..2] of smallint = (((1,0,-1),(2,8,2),(1,0,-1)), ((0,0,0),(0,0,0),(0,0,0)));
var row
: array[0..8] of pbytearray;
col
: pbytearray;
x,y
: smallint;
i,j,k,p
: smallint;
image
: tbitmap;
sum,jum
: longint;
begin P:=-120; image := tbitmap.Create; Image.Assign(gambar); for y:=1 to gambar.Height-2 do begin for i:=-1 to 1 do row[i+1]:= Image.ScanLine[y+i]; col := gambar.ScanLine[y]; x:=3; repeat sum := 0; for i:=-1 to 1 do for j:=-1 to 1 do sum:=sum+(konvolusi[0,i+1,j+1]*row[i+1,x+j*3]); jum:=0; for i:=-1 to 1 do for j:=-1 to 1 do Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 51
Modul Praktikum Pengolahan Citra Digital jum:=jum+(konvolusi[1,i+1,j+1]*row[i+1,x+j*3] jum:=jum+(konvolusi [1,i+1,j+1]*row[i+1,x+j*3]); ); sum := (sum + jum)+p; if sum>255 then sum:=255; if sum<0 then sum:=0; for k:=0 to 2 do col[x+k]:=sum; inc(x,3); until x>=3*(gambar.Width-4); end; Image1.Picture.bitmap := gambar; gambar.SaveToFile('Konvolusi1.bmp'); Image.free; end;
procedure TForm1.SpeedButton4Click(Sender: TForm1.SpeedButton4Cli ck(Sender: TObject); {begin Form4.show;} const konvolusi : array[0..1,0..2,0..2] of real = (((0.25,0,0.25),(0.75,1.25,0.75),(0.25,0,0.25)), ((0.5,0,-0.5),(0.75,1.25,-0.75),(0.5,0,-0.5)));
var row
: array[0..8] of pbytearray;
col
: pbytearray;
x,y
: smallint;
i,j,k,p
: smallint;
image sum,jum
: tbitmap; : longint;
begin P:=-120; image := tbitmap.Create; Image.Assign(gambar); for y:=1 to gambar.Height-2 do begin for i:=-1 to 1 do Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 52
Modul Praktikum Pengolahan Citra Digital row[i+1]:= Image.ScanLine[y+i]; col := gambar.ScanLine[y]; x:=3; repeat sum := 0; for i:=-1 to 1 do for j:=-1 to 1 do sum:=sum+round(konvolusi[0,i+1,j+1]*row[i+1,x+j*3]); jum:=0; for i:=-1 to 1 do for j:=-1 to 1 do jum:=jum+round(konvolusi[1,i+1,j+1]*row[i+ jum:=jum+round(konvo lusi[1,i+1,j+1]*row[i+1,x+j*3]); 1,x+j*3]); sum := (sum + jum)+p; if sum>255 then sum:=255; if sum<0 then sum:=0; for k:=0 to 2 do col[x+k]:=sum; inc(x,3); until x>=3*(gambar.Width-4); end; Image1.Picture.bitmap := gambar; gambar.SaveToFile('Konvolusi2.bmp'); Image.free; end;
procedure TForm1.SpeedButton5Click(Sender: TForm1.SpeedButton5Cli ck(Sender: TObject); {begin Form5.Show;} var temp,temp2 : PByteArray; i,j x digit
: integer; : byte; : byte;
begin gambar := TBitmap.Create; mampat := TBitmap.Create; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 53
Modul Praktikum Pengolahan Citra Digital gambar.LoadFromFile(OpenPictureDialog1.filename); mampat.assign(gambar); Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename); gambar.PixelFormat := Pf24bit; mampat.pixelformat:=pf8bit; gambar.SaveToFile('Kompresi_1.bmp'); for j:=0 to gambar.Height-1 do begin temp := gambar.ScanLine[j]; temp2 := mampat.Scanline[j]; i:=0;x:=i; repeat for digit:=0 to 2 do temp2[x]:=round(temp[i+digit]*0.11); inc(i,3);x:=x+1; until i >= 3*gambar.Width-1; end; Image1.Picture.Bitmap := mampat; akhir := TBitmap.Create; akhir.assign(mampat); for j:=0 to akhir.Height-1 do begin temp2 := mampat.Scanline[j]; temp := akhir.ScanLine[j]; i:=0;x:=i; repeat if x< mampat.Width-1 then temp[i]:=round(temp2[x]); inc(i,1);x:=x+1; until i >= akhir.Width-1; end; Image1.Picture.Bitmap := akhir; akhir.SaveToFile('Ndra5Akhir.bmp'); Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 54
Modul Praktikum Pengolahan Citra Digital end;
procedure TForm1.SpeedButton6Click(Sender: TForm1.SpeedButton6Cli ck(Sender: TObject); {begin form6.show;} var temp,temp2 : PByteArray; i,j,a
: integer;
x
: byte;
digit
: byte;
begin gambar := TBitmap.Create; mampat := TBitmap.Create; gambar.LoadFromFile(OpenPictureDialog1.filename); mampat.assign(gambar); Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename); gambar.PixelFormat := Pf24bit; gambar.SaveToFile('Kompresi2.bmp'); for j:=0 to gambar.Height-1 do begin temp := gambar.ScanLine[j]; temp2 := mampat.Scanline[j]; i:=0;x:=i;digit:=0; repeat temp2[x]:=round(0.25*(temp[i+digit]+temp[i-digit]+temp[i])/3); inc(i,3);x:=x+1; until i >= 3*gambar.Width-1; end; a:=round((gambar.Width-1)/3); mampat.pixelformat:=pf8bit; for j:=0 to gambar.Height-1 do begin Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 55
Modul Praktikum Pengolahan Citra Digital temp := gambar.ScanLine[j]; temp2 := mampat.Scanline[j]; i:=0;x:=i; repeat temp[x]:=round(temp2[i]); inc(i,1);x:=x+1; until i >= a; end; gambar.PixelFormat := Pf8bit; Image1.Picture.Bitmap := gambar; gambar.SaveToFile('Kompresi2.Ndra'); end;
procedure TForm1.SpeedButton7Click(Sender: TForm1.SpeedButton7Cli ck(Sender: TObject); {begin Form7.show;} var temp : PByteArray; i,j : integer; x
: byte;
begin gambar := TBitmap.Create; gambar.LoadFromFile(OpenPictureDialog1.filename); Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename); if gambar.PixelFormat gambar.PixelFormat <> pf24bit then gambar.PixelFormat := Pf24bit; Image1.Picture.Bitmap := gambar; for j:=0 to gambar.Height-1 do begin temp := gambar.ScanLine[j]; i:=0; repeat for x:=0 to 2 do temp[i+x]:=temp[i+x]-10; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 56
Modul Praktikum Pengolahan Citra Digital inc(i,3); until i >= 3*gambar.Width-1; end; Image1.Picture.Bitmap := gambar; end;
procedure TForm1.SpeedButton8Click(Sender: TForm1.SpeedButton8Cli ck(Sender: TObject); {begin Form8.show;} var temp : PByteArray; i,j : integer; x
: byte;
begin gambar := TBitmap.Create; gambar.LoadFromFile(OpenPictureDialog1.filename); Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename); if gambar.PixelFormat gambar.PixelFormat <> pf24bit then gambar.PixelFormat := Pf24bit; Image1.Picture.Bitmap := gambar; gambar.SaveToFile('Invert1.bmp'); for j:=0 to gambar.Height-1 do begin temp := gambar.ScanLine[j]; i:=0; repeat for x:=0 to 2 do temp[i+x]:=not temp[i+x]; inc(i,3); until i >= 3*gambar.Width-1; end; Image1.Picture.Bitmap := gambar; end;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 57
Modul Praktikum Pengolahan Citra Digital
{procedure TForm1.SpeedButton9Click(Sender: TObject); Image Processing dgn Metrik var F : TextFile; FadliFile : string; temp : PByteArray; i,j : integer; gambar: TBitmap; begin FadliFile:='matriks.txt'; AssignFile(F,FadliFile); gambar := TBitmap.Create; gambar.LoadFromFile(OpenPictureDialog1.filename); rewrite(F); writeln(F,'Tugas Hendra-P31.2007.00422'); memo1.Clear; for j:=0 to gambar.Height-1 do begin temp := gambar.ScanLine[j]; i:=0; writeln(F,' '); repeat if temp[i] > 99 then write(F,inttostr(temp[i])+' '); if temp[i] >9 then if temp[i] <=99 then write(F,' '+'0' +inttostr(temp[i])); if temp[i] >=0 then if temp[i]<=9 then write(F,' '+'00' +inttostr(temp[i])); i:=i+1; until i >= 3*gambar.Width-1; CloseFile(F); Memo1.Lines.LoadFromFile(FadliFile); end; Image1.Picture.Bitmap := gambar; end;}
{procedure TForm1.SpeedButton10Click(Sender: TObject); var temp, temp2 : PByteArray; tampung : PByteArray; i,j,x : integer; water : integer; k,sensitif: byte; begin gambar := TBitmap.Create; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 58
Modul Praktikum Pengolahan Citra Digital gambar.LoadFromFile(OpenPictureDialog1.filename); if gambar.PixelFormat gambar.PixelFormat <> pf24bit then gambar.PixelFormat := Pf24bit; gambar3.Assign(gambar); water:=0;j:=0; temp2 := gambar2.ScanLine[j];sensitif:=1; if gambar2.Height < gambar.height then if gambar2.width < gambar.width then for j:=0 to gambar.Height-1 do begin temp := gambar.ScanLine[j]; if j<= gambar2.Height-1 then temp2 := gambar2.ScanLine[j]; i:=0;x:=0; water:=0; repeat if j<= gambar2.Height-1 then if x<=gambar2.Width-1 then water := abs(temp[i]+temp2[i]) else water :=0; if water>255 then if abs(temp[i]-temp2[i])<5 then water:=round(9*water/10) else water:=round(abs(temp[i]-temp2[i])/2) else if water>0 then if water<=255 then if abs(temp[i]-temp2[i])<5 then water:=round(9*water/10) else water:=round(abs(temp[i]-temp2[i])/2); if water water <> 0 then for k:=0 to 2 do temp[i+k]:=water else for k:=0 to 2 do temp[i+k]:=temp[i]; i:=i+3; x:=x+1; until i >= 3*gambar.Width-1; end; for j:=0 to gambar.Height-1 do begin temp := gambar.ScanLine[j]; tampung := gambar3.ScanLine[j]; i:=0; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 59
Modul Praktikum Pengolahan Citra Digital repeat for k:=0 to 2 do
temp[i+k]:=round((temp[i]+tampung[i])/2 temp[i+k]:=round ((temp[i]+tampung[i])/2)+sensitif; )+sensitif;
i:=i+3; until i >= 3*gambar.Width-1; gambar.PixelFormat := Pf24bit; Image3.Picture.Bitmap := gambar; gambar.SaveToFile('watermarking.bmp'); end;}
procedure TForm1.BitBtn1Click(Sender: TObject); TObject ); begin if not OpenPictureDialog1.Execute then exit else begin gambar := TBitmap.Create; gambar.LoadFromFile(OpenPictureDialog1.filename); Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename); end; Image1.Picture.Bitmap := gambar; SpeedButton1.Enabled:=true; SpeedButton2.Enabled:=true; SpeedButton3.Enabled:=true; SpeedButton4.Enabled:=true; SpeedButton5.Enabled:=true; SpeedButton6.Enabled:=true; SpeedButton7.Enabled:=true; SpeedButton8.Enabled:=true;
end;
procedure TForm1.SpeedButton9Click(Sender: TForm1.SpeedButton9Cli ck(Sender: TObject); begin close end; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 60
Modul Praktikum Pengolahan Citra Digital
procedure TForm1.FormCreate(Sender: TObject); TObject) ; begin SpeedButton1.Enabled:=false; SpeedButton2.Enabled:=false; SpeedButton3.Enabled:=false; SpeedButton4.Enabled:=false; SpeedButton5.Enabled:=false; SpeedButton6.Enabled:=false; SpeedButton7.Enabled:=false; SpeedButton8.Enabled:=false; end;
end.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 61
Modul Praktikum Pengolahan Citra Digital
PROGRAM KALKULATOR
var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ButtonHapusClick(Sender: TForm1.ButtonHapusCli ck(Sender: TObject); begin EditX.Text:='0'; EditY.Text:='0'; EditHasil.Text:='0'; end; procedure TForm1.ButtonSelesaiClick(Sender: TForm1.ButtonSelesaiCl ick(Sender: TObject); begin close; end; procedure TForm1.ButtonTambahClick(Sender: TForm1.ButtonTambahClick (Sender: TObject); Var x,y,z:Real; begin x:=StrToFloat(EditX.Text); y:=StrToFloat(EditY.Text); Z:=x+y; EditHasil.Text:=FloatToStr(z); end; procedure TForm1.ButtonKurangClick(Sender: TForm1.ButtonKuran gClick(Sender: TObject); Var x,y,z:Real; begin x:=StrToFloat(EditX.Text); y:=StrToFloat(EditY.Text); Z:=x-y; EditHasil.Text:=FloatToStr(z); Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 62
Modul Praktikum Pengolahan Citra Digital
end; procedure TForm1.ButtonKaliClick(Sender: TForm1.ButtonKaliClick (Sender: TObject); Var x,y,z:Real; begin x:=StrToFloat(EditX.Text); y:=StrToFloat(EditY.Text); Z:=x*y; EditHasil.Text:=FloatToStr(z); end; procedure TForm1.ButtonBagiClick(Sender: TForm1.ButtonBagiClick(Sen der: TObject); Var x,y,z:Real; begin x:=StrToFloat(EditX.Text); y:=StrToFloat(EditY.Text); Z:=x/y; EditHasil.Text:=FloatToStr(z); end; procedure TForm1.ButtonPangkatClick(Sender: TForm1.ButtonPangkatCli ck(Sender: TObject); Var x,y,z:Real; begin x:=StrToFloat(EditX.Text); y:=StrToFloat(EditY.Text); Z:=exp(y*ln(x)); EditHasil.Text:=FloatToStr(z); end; procedure TForm1.ButtonAkarClick(Sender: TForm1.ButtonAkarClick (Sender: TObject); Var x,y,z:Real; begin x:=StrToFloat(EditX.Text); y:=StrToFloat(EditY.Text); Z:=exp((1/y)*ln(x)); EditHasil.Text:=FloatToStr(z); end; procedure TForm1.ButtonLogClick(Sender: TForm1.ButtonLogClick(Send er: TObject); Var x,y,z:Real; begin x:=StrToFloat(EditX.Text); y:=StrToFloat(EditY.Text); Z:=ln(y)/ln(x); EditHasil.Text:=FloatToStr(z);
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 63
Modul Praktikum Pengolahan Citra Digital end; procedure TForm1.ButtonCombinasiClick(Sender: TForm1.ButtonCombin asiClick(Sender: TObject); var a,b,i,n,r,z,j:Integer; t:Real; begin a:=StrToInt(EditX.Text); b:=StrToInt(EditY.Text); n:=1; r:=1; z:=1; j:=a-b; For i:=1 to a do n:=i*n; Begin For i:=1 to j do r:=i*r; End; Begin For i:=1 to b do z:=i*z; End; t:=n/(z*r); EditHasil.Text:=FloatToStr(t); if a
Page 64
Modul Praktikum Pengolahan Citra Digital begin a:=StrToInt(EditX.Text); f:=1; for i:=1 to a do f:=f*i; EditHasil.Text:=IntToStr(f);
end; procedure TForm1.ButtonPersenClick(Sender: TForm1.ButtonPersenCli ck(Sender: TObject); var a,z:Real; begin a:=StrToFloat(EditX.Text); z:=a/100; EditHasil.Text:=FloatToStr(z);
end; procedure TForm1.ButtonP2Click(Sender: TForm1.ButtonP2Clic k(Sender: TObject); Var x,z:Real; begin x:=StrToFloat(EditX.Text); Z:=exp(2*ln(x)); EditHasil.Text:=FloatToStr(z);
end; procedure TForm1.ButtonP3Click(Sender: TForm1.ButtonP3Clic k(Sender: TObject); Var x,z:Real; begin x:=StrToFloat(EditX.Text); Z:=exp(3*ln(x)); EditHasil.Text:=FloatToStr(z); end; procedure TForm1.ButtonA2Click(Sender: TForm1.ButtonA2Click (Sender: TObject); Var x,z:Real; begin x:=StrToFloat(EditX.Text); Z:=exp((1/2)*ln(x)); EditHasil.Text:=FloatToStr(z);
end; procedure TForm1.ButtonA3Click(Sender: TForm1.ButtonA3Click (Sender: TObject); Var x,z:Real; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 65
Modul Praktikum Pengolahan Citra Digital begin x:=StrToFloat(EditX.Text); Z:=exp((1/3)*ln(x)); EditHasil.Text:=FloatToStr(z);
end; procedure TForm1.ButtonLnClick(Sender: TForm1.ButtonLnClick(Sende r: TObject); Var x,z:Real; begin x:=StrToFloat(EditX.Text); Z:=ln(x); EditHasil.Text:=FloatToStr(z);
end; procedure TForm1.Timer1Timer(Sender: TObject); TObject) ; begin if label6.top=-700 then label6.top:=500; Label6.top:=label6.top-1; end; procedure TForm1.Button1Click(Sender: TForm1.Button1Clic k(Sender: TObject); Var a:integer; begin a:=StrToInt(editX.Text); editX.Text:=inttostr(a)+'1'; end; procedure TForm1.Button10Click(Sender: TForm1.Button10Cli ck(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editX.Text); editX.Text:=inttostr(a)+'0'; end; procedure TForm1.Button2Click(Sender: TForm1.Button2Clic k(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editX.Text); editX.Text:=inttostr(a)+'2'; end;
procedure TForm1.Button3Click(Sender: TForm1.Button3Clic k(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editX.Text); editX.Text:=inttostr(a)+'3'; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 66
Modul Praktikum Pengolahan Citra Digital end;
procedure TForm1.Button4Click(Sender: TForm1.Button4Clic k(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editX.Text); editX.Text:=inttostr(a)+'4'; end;
procedure TForm1.Button5Click(Sender: TForm1.Button5Clic k(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editX.Text); editX.Text:=inttostr(a)+'5'; end;
procedure TForm1.Button6Click(Sender: TForm1.Button6Clic k(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editX.Text); editX.Text:=inttostr(a)+'6'; end;
procedure TForm1.Button7Click(Sender: TForm1.Button7Clic k(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editX.Text); editX.Text:=inttostr(a)+'7'; end;
procedure TForm1.Button8Click(Sender: TForm1.Button8Clic k(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editX.Text); editX.Text:=inttostr(a)+'8'; end;
procedure TForm1.Button9Click(Sender: TForm1.Button9Clic k(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editX.Text); editX.Text:=inttostr(a)+'9'; end; procedure TForm1.Button20Click(Sender: TForm1.Button20Cli ck(Sender: TObject); Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 67
Modul Praktikum Pengolahan Citra Digital Var a,i :integer; begin a:=StrToInt(editY.Text); edity.Text:=inttostr(a)+'0'; end; procedure TForm1.Button11Click(Sender: TForm1.Button11Cli ck(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editY.Text); edity.Text:=inttostr(a)+'1'; end; procedure TForm1.Button12Click(Sender: TForm1.Button12Cli ck(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editY.Text); edity.Text:=inttostr(a)+'2'; end; procedure TForm1.Button13Click(Sender: TForm1.Button13Cli ck(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editY.Text); edity.Text:=inttostr(a)+'3'; end; procedure TForm1.Button14Click(Sender: TForm1.Button14Cli ck(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editY.Text); edity.Text:=inttostr(a)+'4'; end; procedure TForm1.Button15Click(Sender: TForm1.Button15Cli ck(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editY.Text); edity.Text:=inttostr(a)+'5'; end; procedure TForm1.Button16Click(Sender: TForm1.Button16Cli ck(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editY.Text); edity.Text:=inttostr(a)+'6'; end; procedure TForm1.Button17Click(Sender: TForm1.Button17Cli ck(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editY.Text); Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 68
Modul Praktikum Pengolahan Citra Digital edity.Text:=inttostr(a)+'7'; end; procedure TForm1.Button18Click(Sender: TForm1.Button18Cli ck(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editY.Text); edity.Text:=inttostr(a)+'8'; end; procedure TForm1.Button19Click(Sender: TForm1.Button19Cli ck(Sender: TObject); Var a,i :integer; begin a:=StrToInt(editY.Text); edity.Text:=inttostr(a)+'9'; end; procedure TForm1.Button21Click(Sender: TForm1.Button21Cli ck(Sender: TObject); Var x,y,z:Real; begin x:=StrToFloat(EditX.Text); y:=StrToFloat(EditY.Text); Z:=exp(x*ln(y)); EditHasil.Text:=FloatToStr(z); end;
procedure TForm1.Timer2Timer(Sender: TObject); TObject) ; begin if label5.top=-700 then label5.top:=500; Label5.top:=label5.top-1; end; procedure TForm1.Timer3Timer(Sender: TObject); TObject) ; begin if label9.top=-700 then label9.top:=500; Label9.top:=label9.top-1; end; procedure TForm1.Timer4Timer(Sender: TObject); TObject) ; begin if label10.top=-700 then label10.top:=500; Label10.top:=label10.top-1; end; procedure TForm1.Button22Click(Sender: TForm1.Button22Cli ck(Sender: TObject); Var x,y,z:Real; begin x:=StrToFloat(EditX.Text); y:=StrToFloat(EditY.Text); Z:=exp((1/x)*ln(y)); EditHasil.Text:=FloatToStr(z);
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 69
Modul Praktikum Pengolahan Citra Digital end; end.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 70
Modul Praktikum Pengolahan Citra Digital REFERENSI
1. Pemrograman Delphi Untuk Aplikasi Mesin Visi Menggunakan Webcam, BALZA AHMAD, Pnerbit GAVA Media 2. Www.Google.com
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 71
Modul Praktikum Pengolahan Citra Digital
MODUL PRAKTIKUM PENGOLAHAN CITRA DIGITAL
PROGRAM STUDI TEKNIK INFORMATIKA - D3 FAKULTAS ILMU KOMPUTER UNIVERSITAS KUNINGAN
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 72
Modul Praktikum Pengolahan Citra Digital
MODUL TAMBAHAN PENGAKSESAN KAMERA SIMPAN FRAMEIMAGE
I. TUJUAN
1. Mahasiswa dapat memahami program untuk menangkap citra/frame dari kamera 2. Mahasiswa mampu memahami cara pembuatan program untuk penyimpanan file video stream
II. TEORI
Frame yang ditangkap oleh driver kamera dapat pula disimpan dalam bentuk file video. Untuk membuatnya, properti komponen TVideoCap yang diperlukan antara lain adalah BufferFileSize,
CapIndexSize, CapTimeLimit, CapToFile, FrameRate,
dan
VideoFileName.
III. PRAKTEK Praktek 1
1. Buka Program Aplikasi Delphi 2. Buat proyek baru dan beri nama SimpanVideo.dpr 3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Komponen Form
Properti Name
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Nilai Form1
Page 73
Modul Praktikum Pengolahan Citra Digital
Button
Button
Button
Label
OpenPictureDialog
VideoCap
Caption
Penyimpanan Frame Tunggal
Name
ButtonNamaFile
Caption
Nama file
Name
ButtonSimpan
Caption
Simpan
Name
ButtonClipboard
Caption
Clipboard
Name
LabelNamaFile
Caption
Frame.bmp
Name
SavePictureDialog1
Filter
Bitmap(*.bmp)|*.bmp
InitialDir
-
DefaultExt
bmp
Name
VideoCap1
Width
320
Height
240
VideoPreview
False
Color
clWhite
Masukan Kode dibawah ini unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls, Videocap, vfw, ExtDlgs; type TForm1 = class(TForm) VideoCap1: TVideoCap; ButtonSimpan: TButton; ButtonNamaFile: TButton; LabelNamaFile: TLabel; SavePictureDialog1: TSavePictureDialog; Image1: TImage; ButtonClipboard: TButton; procedure FormCreate(Sender: TObject); TObject ); procedure ButtonNamaFileClick(Sender: ButtonNamaFileClick(Sende r: TObject); procedure ButtonSimpanClick(Sender: ButtonSimpanClick (Sender: TObject); procedure VideoCap1FrameCallback(sender: VideoCap1FrameCallb ack(sender: TObject; lpVhdr: PVIDEOHDR); procedure ButtonClipboardClick(Sender: ButtonClipbo ardClick(Sender: TObject); Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 74
Modul Praktikum Pengolahan Citra Digital private { Private declarations } public { Public declarations } end; var Form1: TForm1; Simpan: boolean; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); TObje ct); begin VideoCap1.DriverIndex := 0; VideoCap1.DriverOpen := true; VideoCap1.VideoPreview := true; Simpan := false; end; procedure TForm1.ButtonNamaFileClick(Sender: TForm1.ButtonNamaFileClick(Send er: TObject); begin if (SavePictureDialog1.Execute) then LabelNamaFile.Caption := SavePictureDialog1.FileName; end; procedure TForm1.ButtonSimpanClick(Sender: TForm1.ButtonSimpanCl ick(Sender: TObject); begin Simpan := true; VideoCap1.GrabFrameNoStop; end; procedure TForm1.VideoCap1FrameCallback(sender: TForm1.VideoCap1FrameCallb ack(sender: TObject; lpVhdr: PVIDEOHDR); var info: TBitmapInfo; begin if Simpan then begin info := VideoCap1.BitMapInfo; Image1.Canvas.Lock; FrameToBitmap(Image1.Picture.Bitmap, lpVhdr^.lpData, info); Image1.Canvas.TextOut(10, 10, DateTimeToStr(Now)); Image1.Repaint; Image1.Canvas.Unlock; Image1.Picture.SaveToFile(LabelNamaFile.Caption); Simpan := false; end; Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 75
Modul Praktikum Pengolahan Citra Digital end; procedure TForm1.ButtonClipboardClick(Sender: TForm1.ButtonClipb oardClick(Sender: TObject); begin VideoCap1.SaveToClipboard; end; end.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 76