TUGAS
PENGOLAHAN CITRA DIGITAL
Contrast Stretching
Disusun oleh :
Nama : Ryan Eko Saputro
NIM : 12/331380/PA/14638
JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2015
LINEAR CONTRAST STRETCHING
Suatu citra adalah fungsi intensitas 2 dimensi f(x,
y), dimana x dan y adalah koordinat spasial dan f pada
titik (x, y) merupakan tingkat kecerahan (brightness) suatu
citra pada suatu titik (Gonzales dan Woods, 2008)
Suatu citra diperoleh dari penangkapan kekuatan sinar
yang dipantulkan oleh objek. Citra digital adalah citra
f(x,y) yang telah dilakukan digitalisasi baik koordinat
area maupun brightness level. Nilai f di koordinat (x,y)
menunjukkan brightness atau grayness level dari citra pada
titik tersebut.
Gray level mengalami digitalisasi tersebut akan
membuat nilai. Proses digitalisasi dari koordinat citra
disebut dengan image sampling, Citra digital merupakan suatu
matriks dimana baris dan kolomnya menunjukkan gray level di
titik tersebut. Elemen-elemen dari citra digital tersebut
biasanya disebut dengan pixel atau satuan terkecil dari
suatu citra yang mempunyai nilai terkuantisasi yang
mewakili brightnes.
Ryan Eko Saputro | 14638 2
Pengolahan citra digital betujuan untuk mendapatkan
citra baru yang lebih optimal guna daplikasikan pada
aplikasi tertentu pada contohnya adalah contrast stretching .
Contrast stretching ini adalah teknik yang digunakan
untuk mendapatkan citra baru dengan kontras yang lebih baik
daripada kontras dari citra asalnya. Proses contrast
stretching termasuk proses perbaikan citra yang bersifat
point processing, yang artinya
proses ini hanya tergantung dari nilai intensitas (gray
level) satu pixel, tidak tergantung dari pixel lain yang
ada di sekitarnya.
Ryan Eko Saputro | 14638 3
Gambar diatas menunjukan fungsi transformasi contrast
stretching, titik koordinat (r1,s1) dan (r2,s2) merupakan
titik control dari fungsi transformasi. Titik-titik
tersebut dapat diatur untuk menentukan tingkat penyebaran
grey level dari citra yang dihasilkan. Misalkan titik r1=s1
dan r2=s2 maka fungsi transformasi berbentuk linear yang
menghasilkan citra yang tidak berubah level intensitas.
Jika r1=r2 dan s1=0 dan s2=L-1, maka transformasi menjadi
fungsi tresholding yang menghasilkan suatu citra biner.
Untuk menghitung nilai hasil transformasi tersebut, kita
dapat membuat tiga fungsi sebagai berikut:
Untuk r <= 0 < r1, maka s = r . (s1 / r1)
Untuk r1 <= r < r2, maka s = s1 + ( (r-r1) . ((s2-
s1) / (r2-r1)) )
Untuk r2 <= r <=(L-1), maka s = s2 + ( (r-r2) . ((L-
1)-s2) / ((L-1) - r2) )
Dalam hal ini, algoritma contrast stretching
diaplikasikan dengan menggunakan matlab. Setiap nilai pixel
Ryan Eko Saputro | 14638 4
gambar awal dimodifikasi dengan menggunakan fungsi transfer
yang didefinisikan mengikuti alur grafik pada contrast
stretching.
Bagiankode ke-
Kode / listing Penjabaran arti kode / listing
1 a=imread('patrick.jpeg');a=double(a);x=size(a);
Merupakan kode untuk pembacaan file gambar dilakukan dengan menuliskan stringfile gambar sebagai nama parameter fungsi “imread” yang di masukkan pada variabel a bertipe data double dan di deklarasikan ukuran dari imagedisimpan pada variabel x
2 'INPUT NILAI PADA p1 (x1,y1)'k=input('Input nilai x1 : ');l=input('Input nilai y1 : ');'INPUT NILAI PADA p2 (x2,y2)'m=input('Input nilai x2 : ');n=input('Input nilai y2 : ');'INPUT NILAI PADA p3 (x3,y3)'o=input('Input nilai x3 : ');p=input('Input nilai y3 : ');
Merupakan kode untuk menginputkan titik titik p1,p2,p3, dan p4.Titik-titik
Ryan Eko Saputro | 14638 5
'INPUT NILAI PADA p4 (x4,y5)'q=input('Input nilai x4 : ');r=input('Input nilai y4 : ');
p1=[k,l];p2=[m,n];p3=[o,p];p4=[q,r];
tersebut berfungsi sebagaibatas acuan wilayah.
3 m1=(p2(1,2)-p1(1,2))/(p2(1,1)-p1(1,1)); m2=(p3(1,2)-p2(1,2))/(p3(1,1)-p2(1,1m3=(p4(1,2)-p3(1,2))/(p4(1,1)-p3(1,1));
Merupakan kode untuk mencari nilai gradient pada ketiga bagian.
4 ya = p1(1,2); xa = p1(1,1);yb = p2(1,2); xb = p2(1,1);yc = p3(1,2); xc = p3(1,1);
Merupakan kode untuk mencari persamaan garis y=m*x+b
5 b1=ya-m1*xa;b2=yb-m2*xb;b3=yc-m3*xc;
Merupakan kode untuk mencari konstanta b=y-m*x
6 s=[];for r=0:255 if(r<=p2(1,1)) s=[s (m1*r+b1)]; end if(r>p2(1,1) && r<=p3(1,1)) s=[s (m2*r+b2)]; end if(r>p3(1,1) && r<=p4(1,1)) s=[s (m3*r+b3)]; endend
Merupakan suatu fungsi untuk melakukan transformasi
7 for n=1:x(1,1) for m=1:x(1,2) ot(n,m)=s(a(n,m)+1);
Merupakan kode untuk memberikan
Ryan Eko Saputro | 14638 6
endend
nilai pixel pada gambar sesudah ditransfer
8 plot(s)grid onxlabel('Intensitas Input (r)');ylabel('Intensitas Output (s)')title('Grafik Linear Contrast Stretching')
Merupakan kode untuk mengeplot titik – titik yang sudah di inputkan sebagai grafik
9 figure()subplot(1,2,1)imshow(a/255)title('Gambar Sebelum di streching')subplot(1,2,2)imshow(ot./255)title('Gambar Sesudah di streching')
Merupakan kode untuk menampilkangambar sebelum dan sesudah di stretching
Hasil 1 :
Ryan Eko Saputro | 14638 7
Pada intinya proses contrast stretching pada MATLAB adalah
sebagai berikut :
Memasukkan dan membaca image / gambar untuk dapat di
proses ke MATLAB.
Pemberian suatu titik-titik sebagai acuan wilayah mana
yang akan di stretching.
Penentuan gradient ,persamaan garis dari wilayah
tersebut.
Menentukan fungsi transformasi.
Pemberikan nilai pixel pada gambar sesudah di
transfer.
menampilkan gambar
Agar lebih jelas dapat dipaparkan sebagai berikut :
Image / gambar dibaca pada MATLAB dengan menggunakan
perintah “imread” dan disimpan pada veriabel a. Variabel a
akan berisi matriks hasil pembacaan “imread”. dan diubah ke
dalam fungsi double. Image/gambar tentunya memiliki ukuran
dan ukuran tersebut harus diketahui agar bisa di proses
Ryan Eko Saputro | 14638 12
lebih lanjut. Proses pembacaan ukuran gambar pada matlab
dapat menggunakan fungsi size() dan disimpan dalam variabel
x yang merupakan matrix dalam koordinat x dan y.
Titik titik p1,p2,p3, dan p4 yang berfungsi sebagai
batas acuan wilayah. Wilayah tersebut dibagi menjadi 3
bagian yaitu a,b, dan c. Setiap wilayah memiliki gradient
atau kemiringan garis masing-masing yang menjadi kunci
untuk membentuk fungsi transfer.
Wilayah A, dibatasi oleh titik p1, dan p2. Wilayah B
dibatasi titik p2 dan p3. Wilayah C dibatasi titik p3 dan
p4. Dengan adanya kedua titik sebagai acuan antar wilayah,
maka dapat diperoleh gradient dari dua buah titik dengan
rumus:
m=y2−y1x2−x1
y=mx+bb=y−mx
Ryan Eko Saputro | 14638 13
Dimana b merupakan suatu konstanta, “m” menyatakan
gradient kemiringan garis, x sebagai vaiabel input, dan y
sebgai variabel output atau hasil.
Setelah didapat persamaan lalu di aplikasikan ke dalam
pixel. dengan :
Jika nilai pixel “r” kurang dari atau sama dengan nilaipixel p2(1,1), maka nilai pixel baru “s” adalah m1*r+b1.
Jika nilai pixel “r” lebih besar dari nilai pixelp2(1,1) dan kurang dari atau sama dengan nilai pixelp3(1,1) maka nilai pixel baru “s” adalah m2*r+b2.
Jika nilai pixel “r” lebih besar dari nilai pixelp3(1,1) dan kurang dari atau sama dengan nilai pixelp4(1,1) maka nilai pixel baru “s” adalah m3*r+b3.
Nilai pixel baru sebagai hasil proses transfer,
disimpan pada variabel s dengan index 0 hingga 255 lalu
masuk ke proses pengubahan ke pixel yang baru (setelah di
tramsfer) . Pengubahan dilakukan dengan variabel x, dimana
variabel ini telah menampung nilai yang merepresentasikan
besar gambar atau titik koordinat pixel terakhir gambar.
Langkah terakhir adalah menampilkan gambar sebelum
mengalami contrast stetching.
Pada hasil output terjadi perbedaan cukup besar yang
terlihat (contrast) antara yang terang dan yang gelap.
Dapat ditarik kesimpulan pada hasil tersebut apabila :
1. Jika nilai x2 ≤ x3 dan y2 ≤ y3 makin besar maka,
Ryan Eko Saputro | 14638 14
contrast image akan meningkat monoton.2. Jika nilai x2 ≤ x3 dan y2 ≤ y3 makin kecil maka,
contrast image akan menurun dan menghasilkan gambaryang lebih gelap.
3. Metode contrast stretching sangat tergantung darikebutuhan, apakah contrast citra mau dibuat kearahgelap atau ke arah yang terang.
Ryan Eko Saputro | 14638 15
Top Related