Translate

Sunday, August 7, 2016

HISTOGRAM EQUALIZATION



 HISTOGRAM EQUALIZATION


Histogram Equalization berguna untuk meningkatkan tingkat kekontrasan dari image dengan memperlebar jarak gray level pada image input.
Contoh :

menghasilkan image yang sudah dihistogram equalization, max grayLevel = 256 (8 bit)

Gray Level Image Input, dengan jumlah data = 4 (2 x 2)

15
15
10
20



Menghitung frekuensi masing-masing gray level pada image input  (1 pada source code)

L
F
10
1
15
2
20
1

Menghitung H = frekuensi kumulatif * grayLevel maksimum / jumlah data (2 pada source code)

L
H
10
¼  * 255 = 63.75 ~ 63
15
3/4 * 255 = 191.25 ~ 191
20
4/4 * 255 = 255



Nilai H di atas dimasukkan ke nilai gray level (L) image awal, sehingga diperoleh image hasil
(3 pada source code)

191
191
63
255

 

I.2        Source Code : histeque.m

function h = histeque(filename, nBit)
% HISTEQUE(filename, nBit)
% Mengembalikan data yang sudah diproses dengan histogram equalization
%  filename = nama file yang akan diproses
%  nBit = jumlah bit untuk menentukan tingkat keabuan(8 bit = 256)
if (nargin == 1)
    nBit = 8;
end
data = double(imread(filename));
[rows, cols] = size(data); % memperoleh ukuran data
nSize = 256; % jumlah data histogram yang akan ditampung
n = zeros(1, nSize);
% memperoleh frekuensi kemunculan untuk masing-masing element di data (1)
for i = 1 : rows
    for j = 1 : cols
        index = data(i, j) + 1;
        n(index) = n(index) + 1;
    end
end
% menghitung frekuensi kumulatif data dan normalisasi frekuensi kumulatif (2)
dataSize = rows * cols;
grayLevel = 2 ^ nBit - 1;
c = grayLevel / dataSize;
nPrev = 0;
for i = 1 : nSize
    if (~(n(i) == 0))
        n(i) = nPrev + n(i) * c;
        nPrev = n(i);
    end
end
% mendapatkan hasil gambar yang sudah mengalami histogram equalization (3)
result = zeros(rows, cols);
for i = 1 : rows
    for j = 1 : cols
        result(i, j) = n(data(i, j) + 1);
    end
end
h = uint8(result);


I.3        Pemakaian

  1. A = histeque([filename], [bit grayLevelMaksimum]) atau
    A = histeque([filename]); untuk default nBit = 8 / 255
  2. imshow(A);
Contoh :
  1. A = histeque(‘tes.bmp’, 8); atau A=histeque(‘tes.bmp’);
  2. imshow(A);
Input :                                             Output :









No comments:

Post a Comment

silahkan membaca dan berkomentar