Beri nama unitnya dengan nama UnitImageProses. Ketik program berikut ke dalam UnitImageProses.

end; procedure ImgFilterWiener var Image:TImage; Mtrx:TMatrixFilter; nCol,nRow:byte; var ProgressBar1: TProgressBar; var dx,dy:byte; ImgTemp:TImage; mean,pSpectrum:Variant; pSpectrumNoise: real; procedure CalculateParameter x,y:integer; var row,col:integer; clrGray,tot,tot2:real; begin tot:=0; tot2:=0; for col:=1 to nCol do for row:=1 to nRow do begin clrGray := ImgGetGray ImgTemp, x+col-dx-1, y+row-dy-1; tot := tot + Mtrx[col,row] clrGray; tot2 := tot2 + Mtrx[col,row] SqrclrGray; end; mean[x,y] := totnColnRow; pSpectrum[x,y] := tot2nColnRow - mean[x,y]; end; procedure CalculatePixel x,y:integer; var clrGray:byte; var c:real; begin clrGray := ImgGetGray ImgTemp, x,y; c := mean[x,y] + pSpectrum[x,y]pSpectrum[x,y]+pSpectrumNoise clrGray-mean[x,y]; clrGray := ByteRange c; end; var x,y: integer; clrGray: byte; begin dx := nCol div 2; dy := nRow div 2; ImgTemp := TImage.Create Image.Parent; ImgTemp.Picture.Graphic := Image.Picture.Graphic;; mean := VarArrayCreate[0,Image.Width-1, 0,Image.Height-1], varSingle; pSpectrum := VarArrayCreate[0,Image.Width-1, 0,Image.Height-1], varSingle; pSpectrumNoise := 0; { parameter } ProgressBar1.Max := Image.Width; ProgressBar1.Position := 0; pSpectrumNoise := 0; for x:=dx to Image.Width-1-dx do begin for y:=dy to Image.Height-1-dy do begin CalculateParameter x,y; pSpectrumNoise := pSpectrumNoise + pSpectrum[x,y]; Image.Canvas.Pixels[x,y] := RGB clrGray,clrGray,clrGray; end; { for y } ProgressBar1.Position := x; end; { for x } pSpectrumNoise := pSpectrumNoise Image.Width-dxImage.Height-dy; ProgressBar1.Position := ProgressBar1.Max; { filtering process } for x:=dx to Image.Width-1-dx do begin for y:=dy to Image.Height-1-dy do begin CalculatePixel x,y, clrGray; Image.Canvas.Pixels[x,y] := RGB clrGray,clrGray,clrGray; end; { for y } ProgressBar1.Position := x; end; { for x } ProgressBar1.Position := ProgressBar1.Max; Image.Repaint; end; end.

23. Kembali ke FormWienerFilter, caranya klik UnitWienerFilter.

Gambar 3.21 Kembali ke FormWienerFilter

24. Lalu klik toggle form.

Gambar 3.22 Menu Toggle

25. Doble klik button WienerFilter.

Gambar 3.23 Klik Button Wiener Filter

26. Lalu ketik program berikut.

procedure TFormWienerFilter.btWienerFilterClickSender: TObject; var Mtrx:TMatrixFilter; nRow,nCol,r,c:integer; begin Image2.Visible := True; Image2.Picture.Graphic := Image1.Picture.Graphic; begin nRow:=3; nCol:=3; for c:=1 to nCol do for r:=1 to nRow do Mtrx[r,c]:=1; ImgFilterWiener Image2, Mtrx,nCol,nRow, ProgressBar1; end; 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 3.24 Button Exit

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

procedure TFormWienerFilter.btExitClickSender: TObject; begin FormWienerFilter.Close; end;

30. Compiler progran dengan cara pilih menu Project, Compile ProjectWienerFilter.

Gambar 3.25 Menu Compile 31. Lalu jalankan progran dengan cara pilih menu Run, Run. Gambar 3.26 Menu Run 32. Hasil sebagai berikut. Gambar 3.27 Hasil Wiener Filter 33. Keluar dari program klik button Exit.

3.3 PROGRAM WIENER FILTER SELENGKAPNYA ADALAH SEBAGAI BERIKUT:

unit UnitWienerFilter; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtDlgs, StdCtrls, ExtCtrls, ComCtrls; type TFormWienerFilter = classTForm Image1: TImage; Image2: TImage; btOpen: TButton; OpenPictureDialog1: TOpenPictureDialog; btWienerFilter: TButton;