Thursday 30 May 2013

Function (M-file) Contrast Stretching Matlab

Matlab... matlab.. matlab... postingan kali ini kembali ane bahas matlab untuk melakukan manipulasi citra, matakuliah yang menurut ane agak sedikit rumit dan wajib untuk dipelajari dikampus ane... -_- karena sebenarnya citra ini masuk dalam rumpun penjurusan, tepatnya pada rumpun AI (Artificial Intelegent) / kecerdasan buatan... sedangkan ane lebih fokus pada bidang RPL (Rekayasa perangkat lunak) ... karena ini tuntutan dari akademik ya ane jalanin ajalah sekalian menambah ilmu, mungkin suatu saat ilmu ini akan berguna dikemudian hari... :D seperti hal nya saat ane mempelajari tentang multithreading ditahun kemarin pada mata kuliah OOP, tapi kegunaannya baru terasa 6 bulan kemudian saat ane dapet project membuat sms gateway multi port yang dijadikan server pulsa... hehehehee...
Ah, udah dulu dah intro nya... :D sekarang ane bahas tentang contrast stretching, apa contrast stretching itu ?? contrast stretching adalah sebuah methode enhancement / perbaikan citra, lebih detailnya contrast stretching adalah methode perbaikan citra yang bertujuan untuk meningkatkan kekontrasan citra dengan memanfaatkan beberapa kondisi.. :D
kalo dilihat secara bahasa contrast streching artinya pengontrasan sepotong-sepotong, maksud nya kita akan mengoperasikan citra sesuai dengan kondisi nya dan kondisinya itu adalah potongan-potongan nilai citra...

diagram Contrast Streching matlab
diagram Contrast Streching

Rumus Contrast streching Citra :
Rumus Contrast Streching matlab
Rumus Contrast Streching

Contoh simulasi operasi Contrast streching

simulasi Contrast Streching matlab
simulasi Contrast Streching

Kalo dilihat dari rumus nya pasti pusing duluan... tapi ya tergantung masing2 individu si... kalo ane si bingung+matasakit... wkwkwkwkwkwk tapi berbeda lagi ketika kita nanti melihat dari segi kode nya, kalo dari kode malah ane paham.. :D ya... begitulah... biar gak panjang lebar, ni ane kasi contoh script contrast streching pengolahan citra di matlab 

function hasil = Contrasstectching(citra, r1,r2,s1,s2)

citra  = im2double(citra);
hasil = citra;

[m,n] = size(citra);

r1 = r1/255;
r2 = r2/255;
s1 = s1/255;
s2 = s2/255;

for k = 1:m
    for l = 1:n
        if(citra(k,l)<= r1)
            a = 0;
            b = r2;
            c = 0;
            d = s2;
            rasio = (b-a)/(d-c);
            hasil(k,l) = (citra(k,l)-c)*rasio+a;
        elseif (citra(k,l)>= r1 && citra(k,l)< r2)
            a = s1;
            b = s2;
            c = r1;
            d = r2;
            rasio = (b-a)/(d-c);
            hasil(k,l) = (citra(k,l)-c)*rasio+a;
        else
            a = s2;
   b = 255;
   c = r2;
   d = 255;
            rasio = (b-a)/(d-c);
            hasil(k,l) = (citra(k,l)-c)*rasio+a;
        end
    end
end

hasil = im2uint8(hasil);
subplot(2,2,1);imshow(citra);title('citra asli');
subplot(2,2,2);imhist(citra);title('histogram citra asli');
subplot(2,2,3);imshow(hasil);title('hasil contrasstreching');
subplot(2,2,4);imhist(hasil);title('histogram contrasstreching');
end  
untuk kode pemanggilan function / m-file matlab nya sepeti ini gan :

Contrasstectching(rgb2gray(imread('E:/citra/biji.jpg')),10,120,0,150); 
perlu diperhatikan pada kode pemanggilan function / m-file nya... ane ngambil image/citra yang berdimensi 3 alias RGB ... jadi ane convert dulu jadi grayscale... ente bisa pakai script pemanggilan function / m-file nya dengan menyesuaikan directory citra ente :D ... kemudian kalo ente lihat code yang ada dalam function / m-file nya menurut ane lebih mudah untuk dipahami ketimbang lihat rumus diatas... hehehehe... oia ini hasil dari penggunaan function / m-file diatas

Contrast Streching matlab
Implemetasi Contrast Streching matlab

kalo dilihat dari pada hasil citra diatas, gambar hasil operasinya lebih besar contrast nya dari pada citra aslinya, selain itu untuk memanipulasi pixel nya tidak menggunakan operasi yang sama rata, tetapi menggunakan beberapa kondisi, sehingga pengontrasan citra disini lebih efisien, karena memang ada beberapa bagian citra yang perlu sedikit ditingkatkan cerah nya dan ada juga yang perlu banyak peningkatan cerahnya.. :D ... dan itulah contrast streching yang artinya operasi linier sepotong - sepotong :) dan sekian dulu untuk postingan kali ini yang membahas tentang Function (M-file) Contrast Stretching di matlab... semoga bermanfaat ..

No comments:

Post a Comment