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.
- Over‐exposed (terlalu
terang) dan under‐exposed
(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:
- Baca
image dan dapatkan nilai tingkat keabuan dari setiap pixel penyusunnya,
dan simpan dalam array. Gunakan fungsi imread().
- Cari
nilai maksimum tingkat keabuan citra tersebut. Nilai ini nantinya akan
dipakai untuk menentukan histogram ekualisasinya. Gunakan fungsi max()
- 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.
- Buat
histogram ekualisasinya. Histogram ekualisasi dicari dengan menghitung
prosentase kemunculan derajat keabuan yang ada dikalikan dengan derajat
keabuan maksimum dari citra asal.
- Cari
nilai tingkat keabuan dari citra bari hasil ekualisasi dengan menggunakan
histogram ekualisasinya.
- 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.
- 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