DASAR TEORI SUBTRAK PROGRAM SUBTRAK SELENGKAPNYA ADALAH SEBAGAI BERIKUT:

11. Pada oject inspector rubah properti captionnya dengan nama Open, kemudian namenya dengan nama btOpen. Gambar 7.11 Button Open 12. Tambahkan OpenPictureDialog ke form, dengan cara pilih menu dialog, OpenPictureDialog, lalu klik ke form. Gambar 7.12 Menu OpenPictureDialog 13. Hasilnya sebagai berikut. Gambar 7.13 Hasil OpenPictureDialog

14. Doble klik button open kemudian ketik program yang di hurup tebal

berikut. var FormSubstak: TFormSubstak; FileNameImg: string; implementation {R .dfm} procedure TFormSubstak.btOpenClickSender: TObject; begin if OpenPictureDialog1.Execute then begin FileNameImg := OpenPictureDialog1.FileName; Caption := Subtrak : + OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile OpenPictureDialog1.FileName; Image2.Visible := False; end; end; 15. Tambahkan button pada form, pada object inspector rubah properties captionnya dengan nama Subtrak dan Namenya dengan nama btSubtrak. Gambar 7.14 Button Subtrak 16. Tambahkan ProgressBar ke form dengan cara, pilih menu Win32, ProgressBar. Lalu klik ke form, lalu geser kekanan. Gambar 7.15 Menu ProgressBar 17. Hasilnya sebagai berikut. Gambar 7.16 Hasil ProgresBar

18. Tambahkan unit baru, dengan cara file, new unit.

Gambar 7.17 New Unit

19. Simpan unitnya dengan cara save as.

Gambar 7.18 Save As

20. Berinama unitnya dengan nama UnitImageProses.

Gambar 7.19 Save UnitImageProses 21. Hasilnya sebagai berikut. Gambar 7.20 Hasil Save UnitImageProses

22. Ketik program berikut ke dalam UnitImageProses.

interface uses WINPROCS, Graphics, ExtCtrls, ComCtrls, Variants; type TFreqHist = array [0..255] of longint; TMatrixFilter = array [1..16,1..16] of real; function RgbToGray Clr:TColor : byte; function ImgGetGray var Image:TImage; x,y:integer : byte; procedure ImgConvertToGrayscale var Image1:TImage; var ProgressBar1: TProgressBar; procedure ImgSubtraction var Image1,Image2:TImage; var ProgressBar1: TProgressBar; implementation const PercentR = 0.299; PercentG = 0.587; PercentB = 0.114; function ByteRange r:double : byte; begin if r0 then ByteRange:=0 else if r255 then ByteRange:=255 else ByteRange:=Roundr; end; function RgbToGray Clr:TColor : byte; var r,g,b:byte; begin r := GetRValueClr; g := GetGValueClr; b := GetBValueClr; RgbToGray := ByteRange rPercentR + gPercentG + bPercentB; end; function ImgGetGray var Image:TImage; x,y:integer : byte; begin Result := RgbToGray Image.Canvas.Pixels[x,y]; end; procedure ImgConvertToGrayscale var Image1:TImage; var ProgressBar1: TProgressBar; var x,y:integer; ClrGray:byte; begin ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0; for x:=0 to Image1.Width-1 do begin for y:=0 to Image1.Height-1 do begin ClrGray := ImgGetGray Image1,x,y; Image1.Canvas.Pixels[x,y] := RGB ClrGray,ClrGray,ClrGray; end; Image1.Repaint; ProgressBar1.Position := x; end; end; procedure ImgSubtraction var Image1,Image2:TImage; var ProgressBar1: TProgressBar; var x,y:integer; clrGray1,clrGray2:byte; begin Randomize; ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0; for x:=0 to Image1.Width-1 do begin for y:=0 to Image1.Height-1 do begin clrGray1 := ImgGetGray Image1, x,y; clrGray2 := ImgGetGray Image2, x,y; clrGray2 := ByteRange clrGray1-clrGray2; Image2.Canvas.Pixels[x,y] := RGB clrGray2,clrGray2,clrGray2; end; ProgressBar1.Position := x; end; Image2.Repaint; end; end.

23. Kembali ke FormSubtrak, caranya klik unitMoepologi

Gambar 7.21 Kembali ke FormSubstrak

24. Lalu klik toggle form.

Gambar 7.22 Menu Toggle

25. Doble klik button subtrak.

Gambar 7.23 Klik Button Substrak 26. Lalu ketik program berikut. procedure TFormSubstak.btSubtrakClickSender: TObject; begin Image2.Visible := True; Image2.Picture.Graphic := Image1.Picture.Graphic; ImgSubtraction Image1,Image2, ProgressBar1; end;

27. Dibawah implementasi ketik program yang tertulis huruf tebal berikut.

implementation {R .dfm} uses UnitImageProses; 28. Tambahkan button ke form, lalu pada object inspector rubah properties captionnya dengan nama Exit dan namenya dengan nama btExit. Gambar 7.24 Button Exit

29. Doble klik button Exit, lalu ketik program berikut.

procedure TFormSubtrak.btExitClickSender: TObject; begin FormSubtrak.Close; end; 30. Compiler progran dengan cara pilih menu Project, Compile ProjectSubtrak. Gambar 7.25 Compiler ProjectSubtrak 31. Lalu jalankan progran dengan cara pilih menu Run, Run. Gambar 7.26 Menu Run 32. Hasil sebagai berikut. Gambar 7.27 Hasil program Substrak

33. Keluar dari program klik button Exit.

7.3 PROGRAM SUBTRAK SELENGKAPNYA ADALAH SEBAGAI BERIKUT:

unit UnitSubtrak; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtDlgs, StdCtrls, ExtCtrls, ComCtrls; type TFormSubtrak = classTForm Image1: TImage; Image2: TImage; btOpen: TButton; OpenPictureDialog1: TOpenPictureDialog; btSubtrak: TButton; ProgressBar1: TProgressBar; btExit: TButton; procedure btOpenClickSender: TObject; procedure btSubtrakClickSender: TObject; procedure btExitClickSender: TObject; private { Private declarations } public { Public declarations } end; var FormSubtrak: TFormSubtrak; FileNameImg: string; implementation {R .dfm} uses UnitImageProses; procedure TFormSubtrak.btOpenClickSender: TObject; begin if OpenPictureDialog1.Execute then begin FileNameImg := OpenPictureDialog1.FileName; Caption := Subtrak : + OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile OpenPictureDialog1.FileName; Image2.Visible := False; end; end; procedure TFormSubtrak.btSubtrakClickSender: TObject; begin Image2.Visible := True; Image2.Picture.Graphic := Image1.Picture.Graphic; ImgSubtraction Image1,Image2, ProgressBar1; end; procedure TFormSubtrak.btExitClickSender: TObject; begin FormSubtrak.Close; end; end. unit UnitImageProses; interface uses WINPROCS, Graphics, ExtCtrls, ComCtrls, Variants; type TFreqHist = array [0..255] of longint; TMatrixFilter = array [1..16,1..16] of real; function RgbToGray Clr:TColor : byte; function ImgGetGray var Image:TImage; x,y:integer : byte; procedure ImgConvertToGrayscale var Image1:TImage; var ProgressBar1: TProgressBar; procedure ImgSubtraction var Image1,Image2:TImage; var ProgressBar1: TProgressBar; implementation const PercentR = 0.299; PercentG = 0.587; PercentB = 0.114; function ByteRange r:double : byte; begin if r0 then ByteRange:=0 else if r255 then ByteRange:=255 else ByteRange:=Roundr; end; function RgbToGray Clr:TColor : byte; var r,g,b:byte; begin r := GetRValueClr; g := GetGValueClr; b := GetBValueClr; RgbToGray := ByteRange rPercentR + gPercentG + bPercentB; end; function ImgGetGray var Image:TImage; x,y:integer : byte; begin Result := RgbToGray Image.Canvas.Pixels[x,y]; end; procedure ImgConvertToGrayscale var Image1:TImage; var ProgressBar1: TProgressBar; var x,y:integer; ClrGray:byte; begin ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0; for x:=0 to Image1.Width-1 do begin for y:=0 to Image1.Height-1 do begin ClrGray := ImgGetGray Image1,x,y; Image1.Canvas.Pixels[x,y] := RGB ClrGray,ClrGray,ClrGray; end; Image1.Repaint; ProgressBar1.Position := x; end; end; procedure ImgSubtraction var Image1,Image2:TImage; var ProgressBar1: TProgressBar; var x,y:integer; clrGray1,clrGray2:byte; begin Randomize; ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0; for x:=0 to Image1.Width-1 do begin for y:=0 to Image1.Height-1 do begin clrGray1 := ImgGetGray Image1, x,y; clrGray2 := ImgGetGray Image2, x,y; clrGray2 := ByteRange clrGray1-clrGray2; Image2.Canvas.Pixels[x,y] := RGB clrGray2,clrGray2,clrGray2; end; ProgressBar1.Position := x; end; Image2.Repaint; end; end.

BAB 8 DETEKSI TEPI SOBEL

8.1 DASAR TEORI DETEKSI TEPI SOBEL

Operator sobel adalah salah satu operator yang menghindari adanya perhitungan gradient di titik interpolasi. Operator ini menggunakan kernel ukuran 3 x 3 piksel untuk perhitungan gradient sehingga perkiraan gradien berada tepat di tengah jendela. Misalnya susunan piksel-piksel di sekitar piksel x,y adalah: a0 a1 a2 a7 x,y a3 a6 a5 a4 Berdasarkan susunan piksel tetangga tersebut, besaran gradient yang dihitung menggunakan operator Sobel adalah: = 2 + 2 Dengan M adalah besar gradient di titik tengah kernel dan turunan parsial dihitung menggunakan persamaan berikut. Sx = a2 + ca3 + a4 – a0 + ca7 + a6 Sy = a0 + ca1 + a2 – a6 + ca5 + a4 Dengan c adalah konstanta yang bernilai 2, Sx dan Sy diimplementasikan menjadi kernel berikut. -1 1 -2 2 -1 1 1 2 1 -1 -2 -1

8.2 CARA MEMBUAT PROGRAM SOBEL LAKUKAN LANGKAH BERIKUT:

Sx = Sy=

1. Buka program delphi, dengan cara pilih menu start, program borland delphi 7, delphi 7.

Gambar 8.1 Start Program

2. Kemudian pilih menu file, new, application.

Gambar 8.2 New Application 3. Pada object inspector, ubah properti captionnya dengan nama Deteksi Tepi Sobel, dan namenya dengan nama FormSobel. Gambar 8.3 Form Sobel

4. Simpan unit dan projectnya dengan cara save all.

Gambar 8.4 Save All

5. Beri nama unitnya dengan nama UnitSobel.

Gambar 8.5 Save UnitSobel

6. Beri nama projectnya dengan nama ProjectSobel.

Gambar 8.6 Save ProjectSobel

7. Tambahkan image ke form dengan cara pilih menu Additional, image, lalu klik

ke form. Gambar 8.7 Menu Image

8. Pada Properties rubah stretchnya ke true dan autosizenya true.

Gambar 8.8 Stretch True 9. Dengan cara yang sama tambahkan image2 di sebelah kanan image1 kemudian ubah stretchnya ke true dan autosizenya true. Gambar 8.9 Penambahan Image 2

10. Tambahkan button ke form, dengan cara pilih menu standart, button, lalu

klik ke form Gambar 8.10 Menu Button 11. Pada oject inspector rubah properti captionnya dengan nama Open, kemudian namenya dengan nama btOpen. Gambar 8.11 Button Open 12. Tambahkan OpenPictureDialog ke form, dengan cara pilih menu dialog, OpenPictureDialog, lalu klik ke form. Gambar 8.12 Menu OpenPictureDialog 13. Hasilnya sebagai berikut.