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