Upload
tito
View
423
Download
16
Embed Size (px)
Citation preview
7/24/2019 Modul Pengolahan CItra Digital
1/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 1
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.
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.
Tool Bar
ObjectTreeView
ObjectIns ector
FormDesigner
CodeExplorer
Component
Palette
Menu bar
7/24/2019 Modul Pengolahan CItra Digital
2/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 2
2.
Tool Bar berisi icon (gambar kecil) yang mengilustrasikan perintah 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.
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 dapat ditempatkan komponen-komponen visual 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 dariobject inspector. Setiap komponen dapat memiliki event untuk menentukan
perilakunya apabila dilakukan hal tertentu pada komponen tersebut.
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
7/24/2019 Modul Pengolahan CItra Digital
3/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 3
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
III. PRAKTEK
Praktek 1
1.
Buka Program Aplikasi Delphi
2. Untuk memulai Proyek baru pilih Menu FileNewApplication
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 AsBeri Nama
Project1.dpr
7/24/2019 Modul Pengolahan CItra Digital
4/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 4
Praktek 2
1. Bukalah File Project 1.dpr dengan cara klik Menu FileOpen Project [atau bisa juga
tekan ctrl+F11]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 AsBeri Nama
Project2.dpr
TUGASBuatlah 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.
7/24/2019 Modul Pengolahan CItra Digital
5/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 5
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 event yang dimiliki oleh komponen tersebut.
Praktek 1
1. Buka Program Aplikasi Delphi
2.
Untuk memulai Proyek baru pilih Menu FileNewApplication
7/24/2019 Modul Pengolahan CItra Digital
6/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 6
3.
Rancanglah Form seperti gambar dibawah ini
Komponen Properti Nilai
Form Name Form1
Caption Hitung
Width 340
Height 135
Button Name ButtonTambah
Caption Tambah
Button Name ButtonKurang
Caption Kurang
Label Caption Angka 1 =
Label Caption Angka 2 =
Label Caption Hasil =
Label Name LabelZ
Caption 10
Edit Name EditX
Text 4
Edit Name EditY
Text 6
4. Masukan kode Program di bawah ini:
unitUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
7/24/2019 Modul Pengolahan CItra Digital
7/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 7
Label1: TLabel;
Label2: TLabel;
EditX: TEdit;
EditY: TEdit;
ButtonTambah: TButton;
Label3: TLabel;
LabelZ: TLabel;
ButtonKurang: TButton;
procedureButtonTambahClick(Sender: TObject);
procedureButtonKurangClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
X, Y, Z: double;
implementation
{$R *.dfm}
procedureTForm1.ButtonTambahClick(Sender: TObject);
begin
X := StrToFloat(EditX.Text);
Y := StrToFloat(EditY.Text);
Z := X+Y;
LabelZ.Caption := FloatToStr(Z);
end;
procedureTForm1.ButtonKurangClick(Sender: TObject);
begin
X := StrToFloat(EditX.Text);
7/24/2019 Modul Pengolahan CItra Digital
8/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 8
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 editadalah 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:
7/24/2019 Modul Pengolahan CItra Digital
9/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 9
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. 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 FileNewApplication
3.
Persiapkan form seperti gambar dibawah ini:
7/24/2019 Modul Pengolahan CItra Digital
10/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 10
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 gambaropen.
8.
Maka focus akan kembali ke Picture Editor
9. Lalu tekan Okjalankan dengan menekan F9
10.Save File dengan nama menampilkancitra.dpr
Praktek 2
1.
Buka Program Aplikasi Delphi
2.
Untuk memulai Proyek baru pilih Menu FileNewApplication
7/24/2019 Modul Pengolahan CItra Digital
11/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 11
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 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
7/24/2019 Modul Pengolahan CItra Digital
12/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 12
3.
Tambahkan Komponen-komponen berikut ke dalam Form1.
Komponen Properti Nilai
Form Name Form1Caption Tampil Citra
Button Name ButtonMuatCitra
Caption Muat citra
CheckBox Name CheckBoxCenter
Caption Center
CheckBox Name CheckBoxStretch
Caption Stretch
CheckBox Name CheckBoxProportional
Caption Proportional
CheckBox Name CheckBoxAutoSize
Caption AutoSize
Button Name ButtonUkuranSemula
Caption Ukuran semula
Image Name Image1
OpenPictureDialog Name OpenPictureDialog1
Filter Bitmaps(*.bmp) | *.bmp
InitialDir -
4. Definisikan variabel yang diperlukan dan tuliskan di bagian pendefinisan variabel(
dibawah Form1:TForm1).
var
Form1: TForm1;
LebarSemula: integer;
TinggiSemula: integer;
7/24/2019 Modul Pengolahan CItra Digital
13/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 13
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:
procedureTForm1.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:
procedureTForm1.ButtonMuatCitraClick(Sender: TObject);
begin
if(OpenPictureDialog1.Execute) then
begin
Image1.Picture.LoadFromFile(
OpenPictureDialog1.FileName);
end
end;7. Kemudian untuk mengetahui efek dari properti Center, Stretch, Proportional, dan
AutoSize maka buatlah event handler OnClick untuk keempat Check Box dalam
Form1 sebagai berikut:
procedureTForm1.CheckBoxCenterClick(Sender: TObject);
begin
Image1.Center := CheckBoxCenter.Checked;
end;
procedureTForm1.CheckBoxStretchClick(Sender: TObject);
begin
Image1.Stretch := CheckBoxStretch.Checked;
end;
procedureTForm1.CheckBoxProportionalClick(Sender: TObject);
begin
7/24/2019 Modul Pengolahan CItra Digital
14/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 14
Image1.Proportional := CheckBoxProportional.Checked;
end;
procedureTForm1.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:
procedureTForm1.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.
7/24/2019 Modul Pengolahan CItra Digital
15/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 15
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 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 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 mana nomor baris menjadi indeks dari properti 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
7/24/2019 Modul Pengolahan CItra Digital
16/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 16
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 Properti Nilai
Form Name Form1
Caption Elemen Warna
Button Name ButtonMuatCitra
Caption Muat citra
Label Name LabelPosisi
Caption Posisi
Label
Caption Merah (R)
Edit Name EditR
ReadOnly True
Label
Caption Hijau(G)
Edit Name EditG
ReadOnly True
LabelCaption Biru (B)
Edit Name EditB
ReadOnly True
Image Name Image1
OpenPictureDialog Name OpenPictureDialog1
Filter Bitmaps(*.bmp) | *.bmp
InitialDir -
7/24/2019 Modul Pengolahan CItra Digital
17/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 17
4.
Selanjutnya double klikpada tombol ButtonMuatCitra dan masukan kode program
dibawah ini:
procedureTForm1.ButtonMuatCitraClick(Sender: TObject);
begin
if(OpenPictureDialog1.Execute) then
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 diatas:
procedureTForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
PC: PbyteArray;
R, G, B: byte;
begin
if(Image1.Picture.Bitmap.PixelFormat = pf24bit) thenbegin
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
7/24/2019 Modul Pengolahan CItra Digital
18/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 18
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 Properti Nilai
Form Name Form1
Caption Konversi True Color ke Skala
Keabuan
Button Name ButtonMuatCitra
Caption Muat citra
Button Name ButtonRerata
Caption Keabuan rerata
Image Name Image1
Stretch True
Image Name Image2
Stretch True
OpenPictureDialog Name OpenPictureDialog1
Filter Bitmaps(*.bmp) | *.bmp
InitialDir -
4. Selanjutnya double klik pada tombol ButtonMuatCitra dan masukan kode program
dibawah ini:
7/24/2019 Modul Pengolahan CItra Digital
19/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 19
procedureTForm1.ButtonMuatCitraClick(Sender: TObject);
begin
if(OpenPictureDialog1.Execute) then
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:
procedureTForm1.ButtonRerataClick(Sender: TObject);
var
PC, PH: PByteArray;
x, y: integer;
R, G, B, K: byte;
begin
fory:=0 toImage1.Picture.Height-1 do
begin
PC := Image1.Picture.Bitmap.ScanLine[y];PH := Image2.Picture.Bitmap.ScanLine[y];
forx:=0 toImage1.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
7/24/2019 Modul Pengolahan CItra Digital
20/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 20
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 Properti Nilai
Form Name Form1
Caption Citra Negatif
Button Name ButtonMuatCitra
Caption Muat citra
Image Name Image1
Stretch True
Image Name Image2
Stretch True
OpenPictureDialog Name OpenPictureDialog1
Filter Bitmaps(*.bmp) | *.bmp
InitialDir -
4.
Selanjutnya buat event handler untuk event OnClick pada tombol ButtonMuatCitra
procedureTForm1.ButtonMuatCitraClick(Sender: TObject);
var
PC, PH: PByteArray;
7/24/2019 Modul Pengolahan CItra Digital
21/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 21
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
7/24/2019 Modul Pengolahan CItra Digital
22/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 22
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:
Ro= Ri+ CR
Go= Gi+ CG
Bo= Bi+ CB
Di mana CR , CG , CBadalah 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.
7/24/2019 Modul Pengolahan CItra Digital
23/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 23
Komponen Properti Nilai
Form Name Form1
Caption Modifikasi Kecemerlangan
Button Name ButtonMuatCitra
Caption Muat citra
Label Caption Merah
Label Caption Hijau
Label Caption Biru
TrackBar Name TrackBarMerah
Min -250
Max 250
Frequency 50
TrackBar Name TrackBarHijau
Min -250
Max 250
Frequency 50
TrackBar Name TrackBarBiru
Min -250
Max 250
Frequency 50CheckBox Name CheckBoxSeragam
Caption Seragam
Image Name Image1
Stretch True
Image Name Image2
Stretch True
OpenPictureDialog Name OpenPictureDialog1
Filter Bitmaps(*.bmp) | *.bmp
InitialDir -
4. Selanjutnya buatlah event handler untuk event OnClick pada tombol
ButtonMuatCitra. Masukan kode program di bawah ini:
procedureTForm1.ButtonMuatCitraClick(Sender: TObject);
begin
if(OpenPictureDialog1.Execute) thenbegin
7/24/2019 Modul Pengolahan CItra Digital
24/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 24
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, di bagian deklarasi privat:
private
procedure Proses;
{ Private declarations }
6.
Selanjutnya tambahkan prosedur Tform1.Proses di bagian awal implementasi sebagai
berikut:
implementation
{$R *.dfm}
procedureTForm1.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
7/24/2019 Modul Pengolahan CItra Digital
25/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 25
begin
Ro := PC[3*x+2]+cR;
if (Ro255) then
Ro := 255;
Go := PC[3*x+1]+cG;
if (Go255) then
Go := 255;
Bo := PC[3*x]+cB;
if (Bo255) 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:
procedureTForm1.TrackBarMerahChange(Sender: TObject);
begin
if CheckBoxSeragam.Checked then
begin
TrackBarHijau.Position := TrackBarMerah.Position;
TrackBarBiru.Position := TrackBarMerah.Position;
end;
Proses;
end;
7/24/2019 Modul Pengolahan CItra Digital
26/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 26
8.
Selanjutnya buat juga event handler OnChange untuk TrackBarHijau dan
TrackBarBiru, masukan kode program dibawah ini:
procedureTForm1.TrackBarHijauChange(Sender: TObject);
begin
if CheckBoxSeragam.Checked then
begin
TrackBarMerah.Position := TrackBarHijau.Position;
TrackBarBiru.Position := TrackBarHijau.Position;
end;
Proses;
end;
procedureTForm1.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.
7/24/2019 Modul Pengolahan CItra Digital
27/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 27
Komponen Properti Nilai
Form Name Form1
Caption Penghalusan Seragam
Button Name ButtonMuatCitraCaption Muat citra
Label Caption N
Edit Name EditN
Text 1
ReadOnly True
UpDown Name UpDownN
Min 1
Max 9
Associate EditN
Image Name Image1
Stretch True
Image Name Image2
Stretch True
OpenPictureDialog Name OpenPictureDialog1
Filter Bitmaps(*.bmp) | *.bmp
InitialDir -
4.
Selanjutnya tambahkan deklarasi procedure Proses di dalam deklarasi kelas Tform1 di
bagian private.
private
procedureProses;
5. Selanjutnya tambahkan procedure Proses di bagian awal implementasi (di bawah
{$R*.dfm})
7/24/2019 Modul Pengolahan CItra Digital
28/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 28
implementation
{$R *.dfm}
procedureTForm1.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));
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
7/24/2019 Modul Pengolahan CItra Digital
29/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 29
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 dobegin
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.
procedureTForm1.ButtonMuatCitraClick(Sender: TObject);
begin
if (OpenPictureDialog1.Execute) then
begin
7/24/2019 Modul Pengolahan CItra Digital
30/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 30
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.
procedureTForm1.UpDownNChanging(Sender: TObject;
var AllowChange: Boolean);
begin
Proses;
end;
8. Jalankan Program
7/24/2019 Modul Pengolahan CItra Digital
31/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 31
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
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 ComponentInstall Packages..
2.
Muncul kotak dialog Default Project Options, Hilangkan centangan pada GLScene
http://www.torry.net/vcl/mmedia/video/jhvideocaphttp://www.torry.net/vcl/mmedia/video/jhvideocaphttp://www.torry.net/vcl/mmedia/video/jhvideocap7/24/2019 Modul Pengolahan CItra Digital
32/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 32
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 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.
7/24/2019 Modul Pengolahan CItra Digital
33/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 33
4. Klik drvedit.pasklik 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
7/24/2019 Modul Pengolahan CItra Digital
34/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 34
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 disetting dahulu.
1.
Pilih Menu ProjectOptions
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
7/24/2019 Modul Pengolahan CItra Digital
35/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 35
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 ditangkap dengan fungsi GrabFrame
III. PRAKTEK
Praktek 1. 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 Properti Nilai
Form Name Form1
Caption Tampil Preview Kamera
Button Name ButtonPreview
7/24/2019 Modul Pengolahan CItra Digital
36/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 36
Caption Preview
Button Name ButtonFormat
Caption Format
Button Name ButtonDisplay
Caption Display
Label Name LabelDriverKamera
Caption Driver Kamera:
Label Name LabelFormatVideo
Caption Format Video:
CheckBox Name CheckBoxScale
Caption PreviewScale to Window
CheckBox Name CheckBoxProportional
Caption PreviewScale Proportional
Edit Name EditFps
Text 15
Read Only True
UpDown Name UpDownFps
Min 1
Max 30
Position 15Asociate EditFps
VideoCap Name VideoCap1
Width 320
Height 240
VideoPreview false
4. Tambahkan deklarasi variabel 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
procedureInfo;
6.
Tambahkan procedure Info di bagian awal implementasi (dibawah {$R*.dfm})
7/24/2019 Modul Pengolahan CItra Digital
37/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 37
implementation
{$R *.dfm}
procedureTForm1.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:
procedureTForm1.VideoCap1Status(Sender: TObject);
beginInfo;
end;
8.
Selanjutnya buatlah event handler untuk event OnCreate pada Form1. Caranya
tambahkan kode program berikut ini:
procedureTForm1.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:
procedureTForm1.ButtonPreviewClick(Sender: TObject);
7/24/2019 Modul Pengolahan CItra Digital
38/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 38
begin
VideoCap1.VideoPreview := not VideoCap1.VideoPreview;
end;
10.
Selanjutnya tambahkan kode program dibawah ini kedalam ButtonFormat. Double
click ButtonFormat masukan kode program berikut:
procedureTForm1.ButtonFormatClick(Sender: TObject);
begin
if(VideoCap1.HasDlgFormat) then
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:
procedureTForm1.ButtonDisplayClick(Sender: TObject);
begin
if(VideoCap1.HasDlgDisplay) then
VideoCap1.DlgVDisplay
elseShowMessage('Driver tidak memiliki dialog Display');
end;
procedureTForm1.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:
procedureTForm1.CheckBoxScaleClick(Sender: TObject);
begin
VideoCap1.PreviewScaleToWindow := CheckBoxScale.Checked;
end;
7/24/2019 Modul Pengolahan CItra Digital
39/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 39
procedureTForm1.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:
procedureTForm1.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 fungsiSaveAsDIB.
1. Buka Program Aplikasi Delphi
2.
Buat proyek baru dan beri nama SimpanFrame.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.
7/24/2019 Modul Pengolahan CItra Digital
40/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 40
Komponen Properti Nilai
Form Name Form1
Caption Penyimpanan Frame Tunggal
Button Name ButtonNamaFile
Caption Nama file
Button Name ButtonSimpan
Caption Simpan
Label Name LabelNamaFile
Caption Frame.bmp
OpenPictureDialog Name SavePictureDialog1
Filter Bitmap(*.bmp)|*.bmp
InitialDir -
DefaultExt bmp
VideoCap Name VideoCap1
Width 320
Height 240
VideoPreview False
Color clWhite
4.
Pertama-tama buatlah event handler untuk event OnCreate pada Form1, kodeprogramnya sebagi berikut:
procedureTForm1.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:
procedureTForm1.ButtonNamaFileClick(Sender: TObject);
begin
if(SavePictureDialog1.Execute) then
LabelNamaFile.Caption := SavePictureDialog1.FileName;
end;
7/24/2019 Modul Pengolahan CItra Digital
41/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 41
6.
Tombol ButtonSimpan digunakan untuk menyimpan frame ke file dengan nama file
seperti tercantum pada LabelNamaFile.Double click ButtonSimpan, masukan kode
program dibawah ini:
procedureTForm1.ButtonSimpanClick(Sender: TObject);
begin
VideoCap1.SingleImageFile := LabelNamaFile.Caption;
VideoCap1.GrabFrameNoStop;
ifVideoCap1.SaveAsDIB then
ShowMessage('Frame tersimpan')
else
ShowMessage('Gagal menyimpan')
end;
7.
Kompile dan jalankan program tersebut.
7/24/2019 Modul Pengolahan CItra Digital
42/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 42
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 Properti Nilai
Form Name Form1
Caption Penyimpanan Video dari
Kamera
Width 510
Button Name ButtonNamaFile
7/24/2019 Modul Pengolahan CItra Digital
43/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 43
Caption Nama file
Button Name ButtonSimpan
Caption Simpan
Button Name ButtonFormat
Caption Format
Button Name ButtonKompresi
Caption Kompresi
Edit Name EditLama
Text 0
Edit Name EditIndeks
Text 0
Label Name LabelNamaFile
Caption Video.bmp
SavePictureDialog Name SavePictureDialog1
Filter Video(*.avi)|*.avi
InitialDir -
DefaultExt Avi
VideoCap Name VideoCap1
Width 320
Height 240VideoPreview False
Color clWhite
Frame rata 30
Cap to File True
Image Name Image1
Width 320
Height 240
4. Masukan kode program seperti dibawah ini:
unitUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7/24/2019 Modul Pengolahan CItra Digital
44/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 44
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;
procedureFormCreate(Sender: TObject);
procedureButtonNamaFileClick(Sender: TObject);
procedureButtonSimpanClick(Sender: TObject);
procedureButtonKompresiClick(Sender: TObject);procedureButtonFormatClick(Sender: TObject);
procedureVideoCap1StatusCallback(Sender: TObject; nID: Integer;
status: String);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
7/24/2019 Modul Pengolahan CItra Digital
45/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 45
procedure TForm1.FormCreate(Sender: TObject);
begin
VideoCap1.DriverIndex := 0;
VideoCap1.DriverOpen := true;
VideoCap1.VideoPreview := true;
end;
procedureTForm1.ButtonNamaFileClick(Sender: TObject);
begin
if (SavePictureDialog1.Execute) then
LabelNamaFile.Caption := SavePictureDialog1.FileName;
end;
procedureTForm1.ButtonSimpanClick(Sender: TObject);
begin
VideoCap1.VideoFileName := LabelNamaFile.Caption;
if VideoCap1.CapInProgess then
beginVideoCap1.StopCapture;
ButtonSimpan.Caption := 'Simpan';
end
else
begin
VideoCap1.CapTimeLimit := StrToInt(EditLama.Text);
VideoCap1.CapIndexSize := StrToInt(EditIndeks.Text);
VideoCap1.StartCapture;
ButtonSimpan.Caption := 'Stop';
end
end;
procedureTForm1.ButtonFormatClick(Sender: TObject);
var
lebar: integer;
7/24/2019 Modul Pengolahan CItra Digital
46/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 46
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;
procedureTForm1.ButtonKompresiClick(Sender: TObject);
begin
VideoCap1.DlgVCompression;
end;
procedureTForm1.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
7/24/2019 Modul Pengolahan CItra Digital
47/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 47
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:
unitimage1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls, ExtDlgs;
7/24/2019 Modul Pengolahan CItra Digital
48/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 48
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: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);procedure BitBtn1Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
gambar:Tbitmap; mampat:Tbitmap; akhir:Tbitmap;
implementation
{$R *.dfm}
procedureTForm1.SpeedButton1Click(Sender: TObject);
{begin
7/24/2019 Modul Pengolahan CItra Digital
49/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 49
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 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;
procedureTForm1.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 =
(((-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;
7/24/2019 Modul Pengolahan CItra Digital
50/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 50
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 dosum:=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]);
sum := (sum + jum)+p;
if sum>255 then sum:=255;
if sum=3*(gambar.Width-4);
end;
Image1.Picture.bitmap := gambar;
gambar.SaveToFile('Sobel1.bmp');
Image.free;
7/24/2019 Modul Pengolahan CItra Digital
51/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 51
end;
procedure TForm1.SpeedButton3Click(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
7/24/2019 Modul Pengolahan CItra Digital
52/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 52
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=3*(gambar.Width-4);
end;
Image1.Picture.bitmap := gambar;
gambar.SaveToFile('Konvolusi1.bmp');
Image.free;
end;
procedure TForm1.SpeedButton4Click(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 : 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
7/24/2019 Modul Pengolahan CItra Digital
53/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 53
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+1,x+j*3]);
sum := (sum + jum)+p;
if sum>255 then sum:=255;
if sum=3*(gambar.Width-4);
end;Image1.Picture.bitmap := gambar;
gambar.SaveToFile('Konvolusi2.bmp');
Image.free;
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
{begin
Form5.Show;}
var temp,temp2 : PByteArray;
i,j : integer;
x : byte;
digit : byte;
begin
gambar := TBitmap.Create;
mampat := TBitmap.Create;
7/24/2019 Modul Pengolahan CItra Digital
54/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 54
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');
7/24/2019 Modul Pengolahan CItra Digital
55/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 55
end;
procedure TForm1.SpeedButton6Click(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
7/24/2019 Modul Pengolahan CItra Digital
56/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 56
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: 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 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;
7/24/2019 Modul Pengolahan CItra Digital
57/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 57
inc(i,3);
until i >= 3*gambar.Width-1;
end;
Image1.Picture.Bitmap := gambar;
end;
procedure TForm1.SpeedButton8Click(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 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;
7/24/2019 Modul Pengolahan CItra Digital
58/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 58
{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] =0 then if temp[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;
7/24/2019 Modul Pengolahan CItra Digital
59/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 59
gambar.LoadFromFile(OpenPictureDialog1.filename);
if 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
7/24/2019 Modul Pengolahan CItra Digital
60/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 60
repeat
for k:=0 to 2 do temp[i+k]:=round((temp[i]+tampung[i])/2)+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);
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: TObject);
begin
close
end;
7/24/2019 Modul Pengolahan CItra Digital
61/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 61
procedure TForm1.FormCreate(Sender: 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.
7/24/2019 Modul Pengolahan CItra Digital
62/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 62
PROGRAM KALKULATOR
varForm1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButtonHapusClick(Sender: TObject);begin
EditX.Text:='0';EditY.Text:='0';EditHasil.Text:='0';
end;
procedure TForm1.ButtonSelesaiClick(Sender: TObject);begin
close;end;
procedure TForm1.ButtonTambahClick(Sender: TObject);Var x,y,z:Real;
beginx:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);Z:=x+y;EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonKurangClick(Sender: TObject);Var x,y,z:Real;
beginx:=StrToFloat(EditX.Text);y:=StrToFloat(EditY.Text);
Z:=x-y;EditHasil.Text:=FloatToStr(z);
7/24/2019 Modul Pengolahan CItra Digital
63/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 63
end;
procedure 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: TObject);Var x,y,z:Real;
beginx:=StrToFloat(EditX.Text);y:=StrToFloat(EditY.Text);Z:=x/y;EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonPangkatClick(Sender: TObject);Var x,y,z:Real;
beginx:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);Z:=exp(y*ln(x));EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonAkarClick(Sender: TObject);Var x,y,z:Real;
beginx:=StrToFloat(EditX.Text);y:=StrToFloat(EditY.Text);
Z:=exp((1/y)*ln(x));EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonLogClick(Sender: TObject);Var x,y,z:Real;
beginx:=StrToFloat(EditX.Text);y:=StrToFloat(EditY.Text);Z:=ln(y)/ln(x);
EditHasil.Text:=FloatToStr(z);
7/24/2019 Modul Pengolahan CItra Digital
64/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 64
end;
procedure TForm1.ButtonCombinasiClick(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;BeginFor i:=1 to j do
r:=i*r;End;BeginFor i:=1 to b do
z:=i*z;End;
t:=n/(z*r);EditHasil.Text:=FloatToStr(t);if a
7/24/2019 Modul Pengolahan CItra Digital
65/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 65
begina:=StrToInt(EditX.Text);f:=1;for i:=1 to a dof:=f*i;EditHasil.Text:=IntToStr(f);
end;
procedure TForm1.ButtonPersenClick(Sender: TObject);var a,z:Real;
begina:=StrToFloat(EditX.Text);z:=a/100;EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonP2Click(Sender: TObject);Var x,z:Real;
beginx:=StrToFloat(EditX.Text);Z:=exp(2*ln(x));EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonP3Click(Sender: TObject);Var x,z:Real;
beginx:=StrToFloat(EditX.Text);Z:=exp(3*ln(x));EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonA2Click(Sender: TObject);Var x,z:Real;
beginx:=StrToFloat(EditX.Text);Z:=exp((1/2)*ln(x));EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonA3Click(Sender: TObject);Var x,z:Real;
7/24/2019 Modul Pengolahan CItra Digital
66/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 66
beginx:=StrToFloat(EditX.Text);Z:=exp((1/3)*ln(x));EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonLnClick(Sender: TObject);Var x,z:Real;
beginx:=StrToFloat(EditX.Text);Z:=ln(x);EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.Timer1Timer(Sender: TObject);begin
if label6.top=-700 then label6.top:=500;Label6.top:=label6.top-1;
end;
procedure TForm1.Button1Click(Sender: TObject);Var a:integer;
begin
a:=StrToInt(editX.Text);editX.Text:=inttostr(a)+'1';
end;
procedure TForm1.Button10Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editX.Text);editX.Text:=inttostr(a)+'0';
end;
procedure TForm1.Button2Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editX.Text);editX.Text:=inttostr(a)+'2';
end;
procedure TForm1.Button3Click(Sender: TObject);Var a,i :integer;
begin
a:=StrToInt(editX.Text);editX.Text:=inttostr(a)+'3';
7/24/2019 Modul Pengolahan CItra Digital
67/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 67
end;
procedure TForm1.Button4Click(Sender: TObject);Var a,i :integer;
begin
a:=StrToInt(editX.Text);editX.Text:=inttostr(a)+'4';
end;
procedure TForm1.Button5Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editX.Text);editX.Text:=inttostr(a)+'5';
end;
procedure TForm1.Button6Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editX.Text);editX.Text:=inttostr(a)+'6';
end;
procedure TForm1.Button7Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editX.Text);editX.Text:=inttostr(a)+'7';
end;
procedure TForm1.Button8Click(Sender: TObject);Var a,i :integer;
begin
a:=StrToInt(editX.Text);editX.Text:=inttostr(a)+'8';
end;
procedure TForm1.Button9Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editX.Text);editX.Text:=inttostr(a)+'9';
end;
procedure TForm1.Button20Click(Sender: TObject);
7/24/2019 Modul Pengolahan CItra Digital
68/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 68
Var a,i :integer;begin
a:=StrToInt(editY.Text);edity.Text:=inttostr(a)+'0';
end;procedure TForm1.Button11Click(Sender: TObject);
Var a,i :integer;begin
a:=StrToInt(editY.Text);edity.Text:=inttostr(a)+'1';
end;
procedure TForm1.Button12Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editY.Text);edity.Text:=inttostr(a)+'2';
end;
procedure TForm1.Button13Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editY.Text);edity.Text:=inttostr(a)+'3';
end;
procedure TForm1.Button14Click(Sender: TObject);
Var a,i :integer;begin
a:=StrToInt(editY.Text);edity.Text:=inttostr(a)+'4';
end;
procedure TForm1.Button15Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editY.Text);edity.Text:=inttostr(a)+'5';
end;
procedure TForm1.Button16Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editY.Text);edity.Text:=inttostr(a)+'6';
end;
procedure TForm1.Button17Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editY.Text);
7/24/2019 Modul Pengolahan CItra Digital
69/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 69
edity.Text:=inttostr(a)+'7';end;
procedure TForm1.Button18Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editY.Text);
edity.Text:=inttostr(a)+'8';end;
procedure TForm1.Button19Click(Sender: TObject);Var a,i :integer;
begina:=StrToInt(editY.Text);edity.Text:=inttostr(a)+'9';
end;procedure TForm1.Button21Click(Sender: TObject);Var x,y,z:Real;
beginx:=StrToFloat(EditX.Text);y:=StrToFloat(EditY.Text);Z:=exp(x*ln(y));EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.Timer2Timer(Sender: TObject);begin
if label5.top=-700 then label5.top:=500;Label5.top:=label5.top-1;
end;
procedure TForm1.Timer3Timer(Sender: TObject);begin
if label9.top=-700 then label9.top:=500;Label9.top:=label9.top-1;
end;
procedure TForm1.Timer4Timer(Sender: TObject);
beginif label10.top=-700 then label10.top:=500;Label10.top:=label10.top-1;
end;
procedure TForm1.Button22Click(Sender: TObject);Var x,y,z:Real;
beginx:=StrToFloat(EditX.Text);y:=StrToFloat(EditY.Text);Z:=exp((1/x)*ln(y));
EditHasil.Text:=FloatToStr(z);
7/24/2019 Modul Pengolahan CItra Digital
70/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 70
end;
end.
7/24/2019 Modul Pengolahan CItra Digital
71/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 71
REFERENSI
1. Pemrograman Delphi Untuk Aplikasi Mesin Visi Menggunakan Webcam, BALZAAHMAD, Pnerbit GAVA Media
2.
Www.Google.com
http://www.google.com/http://www.google.com/http://www.google.com/7/24/2019 Modul Pengolahan CItra Digital
72/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 72
MODUL PRAKTIKUM
PENGOLAHAN CITRA DIGITAL
PROGRAM STUDI TEKNIK INFORMATIKA - D3
FAKULTAS ILMU KOMPUTER
UNIVERSITAS KUNINGAN
7/24/2019 Modul Pengolahan CItra Digital
73/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 73
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. TEORIFrame 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 Properti Nilai
Form Name Form1
7/24/2019 Modul Pengolahan CItra Digital
74/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 74
Caption Penyimpanan Frame Tunggal
Button Name ButtonNamaFile
Caption Nama file
Button Name ButtonSimpan
Caption Simpan
Button Name ButtonClipboard
Caption Clipboard
Label Name LabelNamaFile
Caption Frame.bmp
OpenPictureDialog Name SavePictureDialog1
Filter Bitmap(*.bmp)|*.bmp
InitialDir -
DefaultExt bmp
VideoCap Name VideoCap1
Width 320
Height 240
VideoPreview False
Color clWhite
Masukan Kode dibawah ini
unit Unit1;
interface
usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, StdCtrls, ExtCtrls, Videocap, vfw, ExtDlgs;
typeTForm1 = class(TForm)VideoCap1: TVideoCap;ButtonSimpan: TButton;ButtonNamaFile: TButton;LabelNamaFile: TLabel;SavePictureDialog1: TSavePictureDialog;Image1: TImage;ButtonClipboard: TButton;
procedure FormCreate(Sender: TObject);procedure ButtonNamaFileClick(Sender: TObject);procedure ButtonSimpanClick(Sender: TObject);
procedure VideoCap1FrameCallback(sender: TObject; lpVhdr: PVIDEOHDR);procedure ButtonClipboardClick(Sender: TObject);
7/24/2019 Modul Pengolahan CItra Digital
75/76
Modul Praktikum Pengolahan Citra Digital
Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 75
private{ Private declarations }
public{ Public declarations }
end;
varForm1: TForm1;Simpan: boolean;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);begin
VideoCap1.DriverIndex := 0;VideoCap1.DriverOpen := true;VideoCap1.VideoPreview := true;Simpan := false;
end;
procedure TForm1.ButtonNamaFileClick(Sender: TObject);begin
if (SavePictureDialog1.Execute) thenLabelNamaFile.Caption := SavePictureDialog1.FileName;
end;
procedure TForm1.ButtonSimpanClick(Sender: TObject);begin
Simpan := true;VideoCap1.GrabFrameNoStop;
end;
procedure TForm1.VideoCap1FrameCallback(sender: TObject;lpVhdr: PVIDEOHDR);
varinfo: TBitmapInfo;
beginif Simpan thenbegin
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;
7/24/2019 Modul Pengolahan CItra Digital
76/76
Modul Praktikum Pengolahan Citra Digital
end;
procedure TForm1.ButtonClipboardClick(Sender: TObject);begin
VideoCap1.SaveToClipboard;end;
end.