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...

Takdir Allah SWT Itu Indah

Judul: Kutitipkan Azel Kepadamu Pengarang: Zayyadi Alwy Penerbit: DIVA Press Tahun Terbit: 2013, Cetakan Pertama Tebal buku: 375 halaman Novel Karya Zayyadi Alwy dengan tebal 375 halaman ini sangat menyentuh hati. Novel ini menceritakan tentang kisah persahabatan, cinta, dan takdir Allah SWT. Zayyadi Alwy adalah nama pena dari Lukluatul Muna, putri ketiga dari kelima bersaudara dari H. Chamami, M.Si dan Hj. Lilih Muflichah, M.PdI. Kini ia mengajar di sebuah sekolah swasta di kecamatan tempat kelahirannya.Kutitipkan Azel Kepadamu memberikan sesuatu cerita yang berbeda dengan novel lainnya. Alur yang digunakan dalam novel ini adalah alur maju dan mundur. Alur di dalam cerita   ini sangat menarik.Cara pengarang menggambarkan tokoh dalam cerita adalah dengan diucapkan langsung oleh pengarang serta ada juga yang melalui dialog antar tokoh. Tokoh utama wanita , A'yun adalah seorang santri putri yang sedang menimba ilmu di pesantren tertentu. Ia adalah wanita yang cerdas da...