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

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

Membuat Grafik Sinusoida dengan Delphi 7

Minggu kemarin, saya sudah menjelaskan bagian-bagian dan fungsi dari Delphi 7. Dan minggu ini, saya dan teman-teman mendapat tugas membuat grafik sinusoida dengan menggunakan Delphi 7. Untuk itu saya akan menjelaskan cara membuat grafik sinusoida dengan Delphi 7. Langkah pertama, buka aplikasi Delphi 7. Langkah kedua, Klik image pada additional. Lalu tambahkan 1 button untuk proses, 3 label dan 3 edit untuk x,y serta amplitudo. Langkah ketiga , Isilah kode program seperti dibawah ini : var   Form1: TForm1; implementation {$R *.dfm} procedure sumbu (ax,ay,b,c:integer); begin     Form1.Image1.Canvas.MoveTo(ax,ay);     Form1.Image1.Canvas.LineTo(ax+b,ay);     Form1.Image1.Canvas.MoveTo(ax,ay);     Form1.Image1.Canvas.LineTo(ax,ay-c);     Form1.Image1.Canvas.MoveTo(ax,ay);     Form1.Image1.Canvas.LineTo(ax,ay+c);     end; procedure TForm1.Butt...