Langsung ke konten utama

Membuat Histogram RGB Gambar dengan Delphi 7

Assalamu'aikum. Wr. Wb
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.

Ketiga, klik Button 1 dan Button 2.
Keempat, klik Run. Dan akan muncul tampilan seperti ini


Kelima, klik "Open", lalu pilih gambar yang kamu inginkan.
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

Postingan populer dari blog ini

Patah Hati

Patah hati mengajarkan manusia agar lebih menghargai perasaan orang lain. Perasaan yang mencurahkan sebuah ketulusan dalam dirinya. Ketulusan yang dilandasi dengan komitmen dan syarat yang saling disetujui satu sama lain. Komitmen dan syarat hadir agar mereka bisa saling hidup berdampingan seumur hidup walau banyak badai yg akan hadir. Terima kasih luka. Kamu mengajarkanku artinya menghargai sebuah ketulusan cinta seseorang. Melangkah perlahan-lahan walau tertatih. Luka segeralah luruh dari hati Agar kelak tidak menimbulkan benci Terima kasih untukmu juga yg mengajarkanku perbedaan antara ketulusan dan kepalsuan. Terima kasih untukmu juga yg mengajarkanku arti sahabat yang sesungguhnya. Terima kasih juga karena sudah membuat saya, ayah & ibu meneteskan air mata. Semoga kalian bahagia tanpa jeda Surabaya, 27 September 2020 Dezy Zahrotul Istiqomah Nurdin #patahhati #lukahati #komitmen #cintapalsu #sahabat #cinta #ketulusancinta #surabaya #renunganhati #kuat #bukanpuisi...

#1 Project Menyembuhkan Luka & Memaafkan

Beberapa luka batin tak jarang disebabkan oleh orang terdekat, seperti keluarga, teman, atau bahkan sahabat. Entah disebabkan oleh kesalahpahaman atau kurangnya komunikasi. Begitu pula yang terjadi kepada saya sekitar 6 hari yang lalu. Saya terlalu berlarut dalam kesedihan karena telah ditinggalkan oleh seseorang yang pernah berkomitmen untuk menjalin hubungan ke jenjang yang lebih serius. Hal tersebut yang mungkin penyebab terjadinya adanya kesalahpahaman antara saya dengan ayah. Malam itu, saya dan ibu sedang membicarakan dia yang telah menyakiti hati saya, sebut saja si X. Tanpa sadar ayah mendengar cerita kami. Beliau pun langsung menegur ibuku yang terkesan malah menyulut api amarahku kepada si X. Selain itu, ayah pun memarahiku karena terlalu larut dalam kesedihan dan akhir-akhir ini terlalu sering marah. Beliau juga menyalahkan saya atas semua yang terjadi. Padahal saya jelas-jelas tak bersalah, justru perbuatan si X lah yang salah. Hati saya sangat terluka ketika mende...