DASAR TEORI LOW PASS FILTER PROGRAM LOW PASS FILTER SELENGKAPNYA ADALAH SEBAGAI

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

berikut. var FormLowPassFilter: TFormLowPassFilter; FileNameImg: string; implementation {R .dfm} procedure TFormLowPassFilter.btOpenClickSender: TObject; begin if OpenPictureDialog1.Execute then begin FileNameImg := OpenPictureDialog1.FileName; Caption := LowPassFilter : + 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 Low Pass Filter dan Namenya dengan nama btLowPassFilter. Gambar 11.14 Button Low Pass Filter

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

Gambar 11.15 New Unit

17. Simpan unitnya dengan cara save as.

Gambar 11.16 Save As

18. Beri nama unitnya dengan nama UnitImageProses.

Gambar 11.17 Save UnitImageProses 19. Hasilnya sebagai berikut. Gabar 11.18 Hasil UnitImageProses

20. Ketik program berikut ke dalam UnitImageProses.

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; 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; end; end; end.

21. Kembali ke FormLowPassFilter, caranya klik UnitLowPassFilter

Gambar 11.19 Kembali ke FormLowPassFilter

22. Lalu klik toggle form.

Gambar 11.20 Menu Toggle

23. Doble klik button Low Pass Filter

Gambar 11.21 Klik Button Low Pass Filter 24. Lalu ketik program yang huruf tebal berikut procedure TFormLowPassFilter.btLowPassFilterClickSender: TObject; begin Image2.Visible := True; Image2.Picture.Graphic := Image1.Picture.Graphic; LowPassFilter; end;

25. Di bawah private tulis program tertulis huruf tebal berikut:

private procedure LowPassFilter; 26. Dibawah procedure TFormLowPassFilter.btLowPassFilterClick Sender. Tobject ketik program tertulis hurup tebal berikut: procedure TFormLowPassFilter.btLowPassFilterClickSender: TObject; begin Image2.Visible := True; Image2.Picture.Graphic := Image1.Picture.Graphic; LowPassFilter; end; procedure TFormLowPassFilter.LowPassFilter; const LowPassFilter : array[0..1,0..2,0..2] of smallint= 1,1,1,1,1,1,1,1,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.AssignImage1.Picture.Bitmap; for y:=1 to Image1.Height-2 do begin for i:=-1 to 1 do row[i+1]:=image.ScanLine[y+i]; col:=Image1.Picture.Bitmap.ScanLine[y]; x:=3; repeat sum:=0; for i:=-1 to 1 do for j:=-1 to 1 do sum:=sum+LowPassFilter[0,i+1,j+1]row[i+1,x+j3]; jum:=0; for i:=-1 to 1 do for j:=-1 to 1 do jum:=jum+LowPassFilter[1,i+1,j+1]row[i+1,x+j3]; sum:=sum+jum+p; if sum255 then sum:=255; if sum0 then sum:=0; for k:=0 to 2 do col[x+k]:=sum; incx,3; until x=3Image1.Width-4; end; Image2.picture.bitmap:=Image1.Picture.Bitmap; image.free; end;

27. Di bawah 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 11.22 Button Exit

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

procedure TFormLowPassFilter.btExitClickSender: TObject; begin FormLowPassFilter.Close; end;

30. Simpan program dengan cara save all.

31. Compiler progran dengan cara pilih menu Project, Compile ProjectLowPassFilter. Gambar 11.23 Compiler ProjectLowPassFilter 32. Lalu jalankan progran dengan cara pilih menu Run, Run. Gambar 11.24 Menu Run 33. Hasil sebagai berikut. Gambar 11.25 Hasil Mammografi Gambar 11.26 Hasil Photo

34. Keluar dari program klik button Exit.

11.3 PROGRAM LOW PASS FILTER SELENGKAPNYA ADALAH SEBAGAI

BERIKUT: unit UnitLowPassFilter; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, ExtDlgs, StdCtrls; type TFormLowPassFilter = classTForm Image1: TImage; Image2: TImage; btOpen: TButton; OpenPictureDialog1: TOpenPictureDialog; btLowPassFilter: TButton; btExit: TButton; procedure btOpenClickSender: TObject; procedure btLowPassFilterClickSender: TObject; procedure btExitClickSender: TObject; private procedure LowPassFilter; public { Public declarations } end; var FormLowPassFilter: TFormLowPassFilter; FileNameImg: string; implementation {R .dfm} uses UnitImageProses; procedure TFormLowPassFilter.btOpenClickSender: TObject; begin if OpenPictureDialog1.Execute then begin FileNameImg := OpenPictureDialog1.FileName; Caption := LowPassFilter : + OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile OpenPictureDialog1.FileName; Image2.Visible := False; end; end; procedure TFormLowPassFilter.btLowPassFilterClickSender: TObject; begin Image2.Visible := True; Image2.Picture.Graphic := Image1.Picture.Graphic; LowPassFilter; end; procedure TFormLowPassFilter.LowPassFilter; const LowPassFilter : array[0..1,0..2,0..2] of smallint= 1,1,1,1,1,1,1,1,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.AssignImage1.Picture.Bitmap; for y:=1 to Image1.Height-2 do begin for i:=-1 to 1 do row[i+1]:=image.ScanLine[y+i]; col:=Image1.Picture.Bitmap.ScanLine[y]; x:=3; repeat sum:=0; for i:=-1 to 1 do for j:=-1 to 1 do sum:=sum+LowPassFilter[0,i+1,j+1]row[i+1,x+j3]; jum:=0; for i:=-1 to 1 do for j:=-1 to 1 do jum:=jum+LowPassFilter[1,i+1,j+1]row[i+1,x+j3]; sum:=sum+jum+p; if sum255 then sum:=255; if sum0 then sum:=0; for k:=0 to 2 do col[x+k]:=sum; incx,3; until x=3Image1.Width-4; end; Image2.picture.bitmap:=Image1.Picture.Bitmap; image.free; end; procedure TFormLowPassFilter.btExitClickSender: TObject; begin FormLowPassFilter.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; 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; end.

BAB 12 HIGH PASS FILTER

12.1 DASAR TEORI HIGH PASS FILTER

High pass filter gunanya untuk menghilangkan noise, dengan cara meloloskan komponen yang berfrekuensi tinggi dan menekan komponen yang berfrekuensi rendah. Rumus yang dipakai adalah: Gx,y = fx,y hx,y………………….…………………………………….12.1 Dengan : Gx,y adalah hasil High pass. fx,y adalah citra awal.. hx,y adalah template high pass filter. Aturan high pass filter adalah: · Koefisien filter boleh positif, negative dan nol. · Jumlah semua koefisien adalah 1 atau 0. Frekuensi rendah akan turun nilainya bila jumlah koefisien sama dengan 0, frekuensi rendah akan tetap sama nilainya dengan nilai semula bila jumlah koefisien sama dengan 1. Templete yang dipakai sebagai high pass filter dengan jumlah koefisien sama dengan 0 adalah: -1 -1 -1 -1 8 -1 -1 -1 -1 Templete yang dipakai sebagai high pass filter dengan jumlah koefisien sama dengan 1 adalah: -1 -1 -1 -1 9 -1 -1 -1 -1

12.2 CARA MEMBUAT PROGRAM HIGH PASS FILTER ADALAH SEBAGAI BERIKUT:

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

Gambar 12.1 Start Program

2. Kemudian pilih menu file, new, application.

Gambar 12.2 New application 3. Pada object inspector, ubah properti captionnya dengan nama High Pass Filter, dan namenya dengan nama FormHighPassFilter. Gambar 12.3 FormHighPassFilter

4. Simpan unit dan projectnya dengan cara save all.

Gambar 12.4 Save All

5. Beri nama unitnya dengan nama UnitHighPassFilter.

Gambar 12.5 Save UnitHighPassFilter

6. Beri nama projectnya dengan nama ProjectHighPassFilter

Gambar 12.6 Save ProjectHighPassFilter

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

ke form. Gambar 12.7 Menu Image

8. Rubah stretchnya ke true dan Autosizenya true.

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

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

ke form Gambar 12.10 Menu Button 11. Pada oject inspector rubah properti captionnya dengan nama Open, kemudian namenya dengan nama btOpen. Gambar 12.11 Button Open 12. Tambahkan OpenPictureDialog ke form, dengan cara pilih menu dialog, OpenPictureDialog, lalu klik ke form. Gambar 12.12 Menu OpenPictureDialog