Histogram Equalization – Matlab

25 Sep

Sudah lebih dari satu tahun saya meninggalkan blog ini, sedih juga sih karena saya nggak pernah menyempatkan waktu untuk menulis. Untuk post kali ini saya akan membahas tentang Histogram Equalization. Histogram equalization merupakan salah satu metode untuk melakukan contrast stretching, hal ini dilakukan untuk gambar yang warnanya cukup seragam dan memiliki kontras rendah. Dengan histogram equalization sebuah gambar dapat dilebarkan kontrasnya sehinga gambar menjadi lebih jelas. Teknik ini biasanya dilakukan pada tahan praproses untuk meningkatkan kualitas gambar. Langkah-langkah histogram equalization adalah sebagai berikut:

  1. Baca matrix dari gambar yang ingin diproses.
  2. Ubah gambar dari jpg ke rgb.
  3. Untuk setiap isi matrix, hitung frekuensi pixel dari nilai 1 hingga 256.
  4. Hitung jumlah kumulatif dari pixel dari nilai 1 hingga 256.
  5. Hitung probabilitas dari pixel dari nilai 1 hingga 256 dengan membagi jumlah kumulatif dengan jumlah pixel.
  6. Dari nilai probabilitas lakukan pembulatan.
  7. Ubah nilai matrix dari citra awal dengan nilai pembulatan probabilitas yang sesuai.

Penerapan histogram equalization dapat dilihat pada sorce code Matlab berikut ini.

%baca file citra dengan nama ‘mobil.jpg’ a = imread(‘mobil.jpg’); %mengubah citra dari format rgb ke grayscale before=rgb2gray(a); %menampilkan plot gambar asli sebelum dilakukan histogram equalization figure, subplot(2,2,1); imshow(before); title(‘Sebelum Histogram Equalization’); %menampilkan plot diagram gambar asli sebelum dilakukan histogram %equalization subplot(2,2,3); imhist(before); %menghitung ukuran matrix (jumlah pixel) dari citra ‘mobil.jpg’ pix=size(before,1)*size(before,2); %membuat matrix ‘after’ dengan ukuran sama dengan matrix dari citra ‘mobil.jpg’ dan semua isi matrix bernilai 0 dengan format 8 bit after=uint8(zeros(size(before,1),size(before,2))); %membuat matrix ‘freq’ dengan ukuran 256×1 yang semua isinya bernilai 0 freq=zeros(256,1); %membuat matrix ‘cum’ dengan ukuran 256×1 yang semua isinya bernilai 0 cum=zeros(256,1); %membuat matrix ‘prob’ dengan ukuran 256×1 yang semua isinya bernilai 0 prob=zeros(256,1); %membuat matrix ‘output’ dengan ukuran 256×1 yang semua isinya bernilai 0 output=zeros(256,1);   %menghitung jumlah isi matrix yang memiliki nilai 1 hingga 256 dan %disimpan dalam matrix ‘freq’ for i=1:size(before,1)

for j=1:size(before,2)

x=before(i,j);

freq(x+1)=freq(x+1)+1;

end

end %menghitung probabilitasnya sum=0; for i=1:size(freq)     %menghitung jumlah kumulatif dari tiap freq pada matrix ‘cum’

sum=sum+freq(i);

cum(i)=sum;

%menghitung probabilitas dengan membagi ‘cum’ dengan jumlah pixel

prob(i)=cum(i)/pix;

    %menghitung nilai output dengan membulatkan nilai probabilitas

output(i)=round(prob(i)*255);

end %mengubah nilai matrix ‘after’ dengan nilai matrix output for i=1:size(before,1)

for j=1:size(before,2)

after(i,j)=output(before(i,j));

end

end %menampilkan plot gambar setelah diproses dengan penghitungan histogram equalization subplot(2,2,2); imshow(after); title(‘Setelah Histogram Equalization’); %menampilkan plot diagram gambar setelah diproses dengan penghitungan %histogram equalization subplot(2,2,4); imhist(after);

Hasil dari program Matlab di atas saya tampilkan pada screen capture berikut. Capture Jika ingin menggunakan fungsi langsung yang tersedia oleh matlab, tahap-tahap histogram equalization dapat diganti dengan fungsi berikut.

a = imread(‘mobil.jpg’);

before=rgb2gray(a); figure, subplot(2,2,1); imshow(before); title(‘Sebelum Histogram Equalization’); subplot(2,2,3); imhist(before); after = histeq(before); subplot(2,2,2); imshow(after); title(‘Setelah Histogram Equalization’); subplot(2,2,4); imhist(after);

Sekian posting dari saya, semoga bermanfaat😀


~English Version~ Histogram equalization is a method for contrast stretching. Contrast stretching can be done for an image which has low contrast.  Using histogram equalization can widen contrast of an image hence object of an image can be clearer. Step by step of histogram equalization :

  1. Read matrix from an image which will be processed.
  2. Change rgb to grayscale.
  3. For each matrix, count the pixel frequencies in interval 1 to 256.
  4. Count cumulative sum of pixel in interval 1 to 256.
  5. Count probability of pixel in interval 1 to 256 with divide cumulative sum to total pixel.
  6. Round the value of probability.
  7. Replace original matrix with probability.

You can see Histogram Equalization code and result from article in Bahasa above this English translation.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s