Modul Pengolahan CItra Digital

download Modul Pengolahan CItra Digital

of 76

Transcript of Modul Pengolahan CItra Digital

  • 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/jhvideocap
  • 7/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.