Contrast Stretching (Image processing)

15
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

Transcript of Contrast Stretching (Image processing)

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

Ryan Eko Saputro | 14638 8

Hasil 2 :

Ryan Eko Saputro | 14638 9

Hasil 3 :

Ryan Eko Saputro | 14638 10

Hasil 4 :

Ryan Eko Saputro | 14638 11

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