Pengolahan Citra : Perataan Histogram

Matlab

MatLab merupakan suatu system interaktif yang memiliki elemen data dalam suatu array sehingga tidak dipusingkan dengan dimensi. Hal ini memungkinkan untuk memecahkan banyak masalah teknis  yang terkait dengan komputasi, khususnya yang berhubungan dengan matrix dan formulasi vector.
Citra adalah gambar dua dimensi yang dihasilkan dari gambar analog dua dimensi yang kontinu menjadi gambar diskrit melalui proses sampling. Gambar analog dibagi menjadi N baris dan M kolom sehingga menjadi gambar diskrit. Persilangan antara baris dan kolom tertentu disebut dengan piksel. Contohnya adalah gambar/titik diskrit pada baris n dan kolom m disebut dengan piksel [n,m].

Histogram

Histogram adalah representasi grafis untuk distribusi warna dari citra digital. Sumbu ordinat vertikal merupakan representasi piksel dengan nilai tonal dari tiap-tiap deret bin pada sumbu axis horizontalnya. Sumbu axis terdiri dari deret logaritmik bindensitometry yang membentuk rentang luminasi atau exposure range yang mendekati respon spectral sensitivity visual mata manusia. Deret bin pada density yang terpadat mempunyai interval yang relatif sangat linear dengan variabel mid-tone terletak tepat di tengahnya.
Pada umumnya, sebuah histogram hanya memetakan seluruh nilai tonal dari citra digital pada bin luminasi masing-masing. Nilai tonal tersebut telah tersedia dalam color space yang umum digunakan adalah sRGB dan AdobeRGB yang mempunyai nilai gamma γ = 2,2.

Informasi yang didapat dari Histogram :

  • Puncak histogram → intensitas pixel yangpaling menonjol.
  • Lebar puncak → rentang kontras.
  • Overexposed (terlalu terang) dan underexposed (terlalu gelap) memiliki rentang kontras sempit.
  • Citra yang baik mengisi daerah derejatkeabuan secara penuh dan merata pada setiap nilai intensitas pixel.
Perataan Histogram

Teknik perataan histogram merupakan gabungan antara penggeseran dan pelebaran histogram. Tujuan yang akan dicapai pada teknik ini adalah untuk mendapatkan citra dengan daerah tingkat keabuan yang penuh dan dengan distribusi pixel pada setiap tingkat keabuan yang merata. Dengan kata lain, Tujuan dari perataan histogram ini adalah untuk memperoleh penyebaran histogram yang merata, sedemikian sehingga setiap derajat keabuan memiliki jumlah pixel yang relative sama.
Perataan histogram mengubah derajat keabuan suatu pixel (r) dengan derajat keabuan yang baru dengan suatu fungsi transformasi T, dimana s=T(r).
Sifatnya
– Nilai s adalah pemetaan 1 ke 1 dari r, sehingga r dapat diperoleh dari transformasi invers
r = T-1(s)  , 0 <= s <= 1
– Untuk 0<= ri <= 1, maka 0 <= T(r) <=
Seperti yang anda sekalian ketahui sebelumnya, bahwa dari sekian banyaknya warna yang ada dalam suatu gambar itu terdiri atau terbentuk dari perpaduan tiga warna dasar yaitu merah, hijau, dan biru atau yang lebih dikenal dengan sebutan ‘RGB’. Histogram suatu gambar ini bertujuan untuk menampilkan tingkat masing-masing RGB dari suatu gambar.
Fungsi yang disediakan MATLAB untuk membuat histogram dari gambar yaitu dengan fungsi imhist(matrik_1_dimensi_image).Perlu diperhatikan bahwaimhist hanya dapat digunakan untuk matrik image 1 dimensi sehingga bila diimplementasikan pada matriks gambar maka hanya berupa matriks merah saja, hijua saja, biru saja atau grayscale.

ALGORITMA

Misalkan citra digital memiliki L derajat keabuan, yaitu dari nilai 0 sampai L – 1 (misalnya pada
citra dengan kuantisasi derajat keabuan 8-bit, nilai derajat keabuan dari 0 sampai 255). Secara grafis histogram ditampilkan dengan diagram batang. Nilai ni telah dinormalkan dengan membaginya dengan n. Nilai hi berada di dalam selang 0 sampai 1.

Pada MatLab, untuk membuat Histogram dari sebuah gambar / citra, cukup dengan memanggil fungsi imhist.

Pertama, inisialisasikan gambar yang akan digunakan. Letakkan gambar dalam satu direktori yang sama dengan file histogram. Kemudian gambar ditampilkan dengan menggunakan sintak imshow.

% Read in standard MATLAB color demo image.
rgbImage = imread(‘powerranger.jpg’);
[rows columns numberOfColorBands] = size(rgbImage);
subplot(2, 2, 1);
imshow(rgbImage, []);
set(gcf, ‘Position’, get(0,’Screensize’)); % Maximize figure.
Selanjutnya memanggil matriks gambar yang berisi piksel-piksel tertentu.
% Extract the individual color planes.
redPlane = rgbImage(:, :, 1); à memanggil matriks gambar yang hanya berisi piksel warna merah
greenPlane = rgbImage(:, :, 2); à memanggil matriks gambar yang hanya berisi piksel warna hijau
bluePlane = rgbImage(:, :, 3); à memanggil matriks gambar yang hanya berisi piksel warna biru.

untuk mengambil nilai piksel merah memiliki indeks 1, warna hijau memiliki indeks 2 dan warna biru memiliki indeks 3.

Kemudian tampilkan histogram pada layar. Sintak berikut untuk menampilkan histogram dari piksel-piksel yang berwarna merah saja, dipanggil dengan sintak imhist(redPlane); bar yang ditampilkan pada histogram dapat diberi warna merah dengan menggunakan sintak bar(pixelCountR, ‘r’); lakukan hal yang sama pada kedua histogram lainnya, yaitu histogram untuk menampilkan piksel-piksel hijau dan biru. Serta berikan masing-masing warna pada bar histogram tersebut.

% Let’s get its histograms.
[pixelCountR grayLevelsR] = imhist(redPlane);
subplot(2, 2, 2);
bar(pixelCountR, ‘r’);
xlim([0 grayLevelsR(end)]); % Scale x axis manually.
[pixelCountG grayLevelsG] = imhist(greenPlane);
subplot(2, 2, 3);
bar(pixelCountG, ‘g’);
xlim([0 grayLevelsG(end)]); % Scale x axis manually.
[pixelCountB grayLevelsB] = imhist(bluePlane);
subplot(2, 2, 4);
bar(pixelCountB, ‘b’);
xlim([0 grayLevelsB(end)]); % Scale x axis manually.

Perataan histogram bertujuan untuk mendapatkan histogram citra dengan distribusi seragam.

Langkah-langkah melakukan ekualisasi histogram:
  1. Baca image dan dapatkan nilai tingkat keabuan dari setiap pixel penyusunnya, dan simpan dalam array. Gunakan fungsi imread().
  2. Cari nilai maksimum tingkat keabuan citra tersebut. Nilai ini nantinya akan dipakai untuk menentukan histogram ekualisasinya. Gunakan fungsi max()
  3. Buat histogram citra asal. Simpan frekuensi kemunculan derajat keabuan tersebut dalam array(vector). Mula-mula kita siapkan array(vector) kosong yang ukurannya mengacu kepada nilai maksimum derajat keabuan citra dibulatkan ke 2n. Untuk selajutnya hitung frekuensi kemunculan derajat keabuan pada masing-masing posisi vector.
  4. Buat histogram ekualisasinya. Histogram ekualisasi dicari dengan menghitung prosentase kemunculan derajat keabuan yang ada dikalikan dengan derajat keabuan maksimum dari citra asal.
  5. Cari nilai tingkat keabuan dari citra bari hasil ekualisasi dengan menggunakan histogram ekualisasinya.
  6. Untuk memetakan histogram ekualisasi menjadi citra baru, kita siapkan array (matrik) kosong yang ukurannya sama dengan citra asal. Selanjutnya masing-masing nilai matrik baru dihitung dari nilai histogram ekualisasi bedasarkan nilai matrik gambar lama.
  7. Petakan ke citra baru.
Dengan menggunakan MatLab algoritma tersebut dapat diimplementasikan sebagai berikut:
i = imread(’0308.jpg’);
k = rgb2gray(i);
j = histeq(k);
subplot(2,2,1),imshow(i);
subplot(2,2,2),imshow(j);
subplot(2,2,3),imhist(k);
subplot(2,2,4),imhist(j);
pada MatLab, untuk membuat Perataan Histogram dapat menggunakan fungsihisteq. Gambar dikonversikan ke derajat pengabuan, menggunakan citratruecolor yaitu RGB dengan warna gray (abu-abu) dengan perintah ‘rgb2gray’.

OUTPUT

Tempatkan file gambar yang digunakan ke dalam folder yang sama dengan file MatLab. Kemudian jalankan program dengan menekan tombol F5. Berikut adalah tampilan Histogram dari sebuah gambar. Ada tiga Histogram, yaitu Histogram untuk pixel Merah, Hijau dan Biru.
 Berikut adalah output program Perataan Histogram. Histogram sebelah kiri adalah histogram dari gambar asli dan sebelah kanan Histogram dari gambar yang telah diubah ke mode GrayScale.

0 komentar:

Posting Komentar

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
This Theme Modified by Kapten Andre based on Structure Theme from MIT-style License by Jason J. Jaeger