Doble klik button Equalization. Dibawah implementasi ketik program yang tertulis huruf tebal berikut. Doble klik button Exit, lalu ketik program berikut.

Gambar 2.29 Run ProjectEqualization 33. Hasil sebagai berikut. Gambar 2.30 Hasil Program Equalization

34. Keluar dari program klik button Exit.

2.3 PROGRAM HISTOGRAM EQUALIZATION SELENGKAPNYA ADALAH SEBAGAI BERIKUT:

unit UnitEqualization; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtDlgs, StdCtrls, ExtCtrls, ComCtrls; type TFormEqualization = classTForm Image1: TImage; Image2: TImage; btOpen: TButton; OpenPictureDialog1: TOpenPictureDialog; btEqualization: TButton; ProgressBar1: TProgressBar; btExit: TButton; procedure btOpenClickSender: TObject; procedure btEqualizationClickSender: TObject; procedure btExitClickSender: TObject; private { Private declarations } public { Public declarations } end; var FormEqualization: TFormEqualization; FileNameImg: string; implementation {R .dfm} uses UnitImageProses; procedure TFormEqualization.btOpenClickSender: TObject; begin if OpenPictureDialog1.Execute then begin Caption := Histogram Equalization : + OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile OpenPictureDialog1.FileName; Image2.Visible := False; end; end; procedure TFormEqualization.btEqualizationClickSender: TObject; begin Image2.Visible := True; Image2.Picture.Graphic := Image1.Picture.Graphic; ImgHistogramEquImage2,ProgressBar1; end; procedure TFormEqualization.btExitClickSender: TObject; begin FormEqualization.Close; end; end. unit UnitImageProses; interface uses WINPROCS, Graphics, ExtCtrls, ComCtrls; type TFreqHist = array [0..255] of longint; function ImgGetGray var Image:TImage; x,y:integer : byte; procedure ImgHistogramEqu var Image: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