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