Assalamu'aikum. Wr. Wb
Kedua, isi kode program dibawah ini :
Kelima, klik "Open", lalu pilih gambar yang kamu inginkan.
Saya hari ini ingin menunjukkan cara membuat histogram RGB gambar dengan Delphi 7 untuk memenuhi tugas mata kuliah Program Komputasi Fisika. Tugas tersebut diberikan pada hari Jum'at, 17 November 2017.
Untuk membuat histogram RGB gambar, diperlukan 1 Chart dengan 3 series, 1 image, 2 button, 3 label, dan 1 open dialog. Mungkin kalian ada yang bertanya-tanya, kenapa sih buat histogram RGB gambar? Sebelum menjawabnya kita harus tahu pengertian histogram. Kita tahu bahwa histogram adalah representasi grafis untuk
distribusi warna dari citra digital atau menggambarkan penyebaran
nilai-nilai intensitas pixel dari suatu citra atau bagian tertentu di
dalam citra. Dari sebuah histogram dapat diketahui frekuensi kemunculan
relatif dari intensitas pada citra, kecerahan, dan kontas dari sebuah
gambar. Dan juga agar kita tahu persebaran warna merah, hijau dan biru yang ada pada gambar.
Pertama, Buat susunan seperti gambar dibawah ini:
Kedua, isi kode program dibawah ini :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,jpeg, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
Image1: TImage;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
HistogramR,HistogramG,HistogramB:array[0..256] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var BMP1:Tbitmap;
JPG1:TJPEGImage;
i,j,k :integer;
warna : Tcolor;
R,G,B : word;
begin
BMP1:=Tbitmap.Create;
JPG1:=TjpegImage.Create;
if OpenDialog1.Execute then
jpg1.LoadFromFile(OpenDialog1.FileName);
BMP1.Assign(JPG1);
for k:=1 to 256 do
begin
HistogramR[k]:=0;
HistogramG[k]:=0;
HistogramB[k]:=0;
end;
for j:=1 to BMP1.Height-1 do
begin
for i:=1 to BMP1.Width-1 do
begin
warna :=BMP1.Canvas.Pixels[i,j];
R:=GetRValue(warna);
G:=GetGValue(warna);
B:=GetBValue(warna);
HistogramR[R]:=HistogramR[R]+1;
HistogramG[G]:=HistogramG[G]+1;
HistogramB[B]:=HistogramB[B]+1;
end;
end;
Image1.Picture.Assign(BMP1);
BMP1.Free;
Jpg1.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
Series1.Clear;
Series2.Clear;
Series3.Clear;
for i:=1 to 256 do
begin
Series1.AddXY(i,HistogramR[i],'',clRed);
Series2.AddXY(i,HistogramG[i],'',clgreen);
Series3.AddXY(i,HistogramB[i],'',clblue);
end;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var warna:Tcolor;
R,G,B : word;
begin
warna:=Image1.Canvas.Pixels[x,y];
R:=GetRValue(warna);
G:=GetGValue(warna);
B:=GetBValue(warna);
Label1.Caption:='R : '+inttostr(R);
Label2.Caption:='G : '+inttostr(G);
Label3.Caption:='B : '+inttostr(B);
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,jpeg, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
Image1: TImage;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
HistogramR,HistogramG,HistogramB:array[0..256] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var BMP1:Tbitmap;
JPG1:TJPEGImage;
i,j,k :integer;
warna : Tcolor;
R,G,B : word;
begin
BMP1:=Tbitmap.Create;
JPG1:=TjpegImage.Create;
if OpenDialog1.Execute then
jpg1.LoadFromFile(OpenDialog1.FileName);
BMP1.Assign(JPG1);
for k:=1 to 256 do
begin
HistogramR[k]:=0;
HistogramG[k]:=0;
HistogramB[k]:=0;
end;
for j:=1 to BMP1.Height-1 do
begin
for i:=1 to BMP1.Width-1 do
begin
warna :=BMP1.Canvas.Pixels[i,j];
R:=GetRValue(warna);
G:=GetGValue(warna);
B:=GetBValue(warna);
HistogramR[R]:=HistogramR[R]+1;
HistogramG[G]:=HistogramG[G]+1;
HistogramB[B]:=HistogramB[B]+1;
end;
end;
Image1.Picture.Assign(BMP1);
BMP1.Free;
Jpg1.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
Series1.Clear;
Series2.Clear;
Series3.Clear;
for i:=1 to 256 do
begin
Series1.AddXY(i,HistogramR[i],'',clRed);
Series2.AddXY(i,HistogramG[i],'',clgreen);
Series3.AddXY(i,HistogramB[i],'',clblue);
end;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var warna:Tcolor;
R,G,B : word;
begin
warna:=Image1.Canvas.Pixels[x,y];
R:=GetRValue(warna);
G:=GetGValue(warna);
B:=GetBValue(warna);
Label1.Caption:='R : '+inttostr(R);
Label2.Caption:='G : '+inttostr(G);
Label3.Caption:='B : '+inttostr(B);
end;
end.
Ketiga, klik Button 1 dan Button 2.
Keempat, klik Run. Dan akan muncul tampilan seperti ini
Keenam, klik "Ok"
Setelah itu akan muncul grafik histogram RGB dari gambar tersebut. Berikut ini adalah gambarnya :
Sekian dari saya, semoga bisa bermanfaat bagi anda.
Wassalamu'alaikum. Wr. Wb
Komentar
Posting Komentar