Kamis, 21 Mei 2015

TM S 4 Pengolahan Citra Digital Teori dan Peraktek



TUGAS MANDIRI
PENGOLAHAN CITRA DIGITAL TEORI DAN PERAKTEK
MENGUNAKAN OCTAVE3.4.3

Mata Kuliah:
Pengolahan Citra Digital Teori dan Peraktek

 


Nama Mahasiswa      : Imam Satria
NIM                            : 123410084
Kode Kelas                 : 132-SI622-T1
Dosen                          : Tukino, S.Kom, M.SI



UNIVERSITAS PUTRA BATAM
2014


Kata Pengantar

Bismillahirrahmaanirrahiim
Puji syukur kepada Allah SWT, atas segala rahmat dan hidayahnya sehingga kami dapat menyelesaikan tugas mata kuliah ‘Pengolahan Citra Digital’ dengan tepat waktu, terwujud dalam makalah kami “Pengolahan Citra Digital Teori dan Peraktek menggunakan Octave3.4.3”.
Besar harapan kami semoga hasil makalah ini dapat memberikan manfaat yang besar baik untuk kami ataupun orang lain. Ucapan terima kasih tak lupa kami sampaikan kepada dosen Pengajar mata kuliah ‘Pengolahan Citra Digital’ atas bimbingan dan arahan beliau, kepada teman-teman dan pihak-pihak yang turut mendukung untuk terciptanya makalah ini.
Akhir kata penulis menyadari makalah ini masih memiliki banyak kekurangan, karena itu sangat diharapkan kritik dan saran dari pembaca demi perbaikan dan sekaligus memperbesar manfaat tulisan ini sebagai referensi. Dapat dilayangkan ke e-mail penyusun:
.......................................
.......................................




BATAM 25/05/2014
penyusun


IMAM SATRIA
NPM : 123410084



Daftar isi

Halaman


                            
                            


BAB I
PENDAHULUAN

1.1.         Pengantar Pengolahan Citra

1.1.1.          Pengertian Pengolahan Citra Digital

Istilah citra digital sangat populer pada masa kini. Banyak peralatan elektronik yang menghasilkan citra digital; misalnya scanner,  kamera digital, mikroskop digital, dan fingerprint reader (pembaca sidik jari). Perangkat lunak untuk mengolah citra digital juga sangat populer digunakan oleh pengguna untuk mengolah foto atau untuk berbagai keperluan lain. Sebagai contoh, Adobe Photoshop dan GIMP (GNU Image Manipulation Program) menyajikan berbagai fitur untuk memanipulasi citra digital.
Lalu, apa sebenarnya yang dimaksud dengan pengolahan citra digital? Secara umum, istilah pengolahan citra digital menyatakan “pemrosesan gambar berdimensi-dua melalui komputer digital” (Jain, 1989). Menurut Efford (2000), pengolahan citra adalah istilah umum untuk berbagai teknik yang keberadaannya  untuk memanipulasi dan memodifikasi citra dengan berbagai cara. Foto adalah contoh gambar berdimensi dua yang bisa diolah dengan mudah. Setiap foto dalam
bentuk citra digital (misalnya berasal dari kamera digital) dapat diolah melalui perangkat-lunak tertentu. Sebagai contoh, apabila hasil bidikan kamera terlihat agak gelap, citra dapat diolah agar menjadi lebih terang. Dimungkinkan pula untuk memisahkan foto orang dari latarbelakangnya. Gambaran tersebut menunjukkan hal sederhana yang dapat dilakukan melalui pengolahan citra digital. Tentu saja, banyak hal lain yang lebih pelik yang dapat dilakukan melalui pengolahan citra digital.
CATATAN:
·         Untuk penyederhanaan penyebutan pada pembicaraan selanjutnya, istilah “pengolahan citra digital” akan dinyatakan dengan “pengolahan citra” saja.
·         Selain citra digital, terdapat citra analog. Foto yang ditempelkan pada kartu mahasiswa adalah contoh citra analog. Agar foto tersebut bisa diproses oleh komputer maka harus didigitalkan melalui alat pemindai.

1.1.2.          Aplikasi Pengolahan Citra

Pengolahan citra merupakan bagian penting yang mendasari berbagai aplikasi nyata, seperti pengenalan pola, penginderaan jarak-jauh melalui satelit atau pesawat udara, dan machine vision.
objek akan diproses oleh pengklasifikasi pola. Sebagai contoh, sebuah objek buah bisa dikenali sebagai jeruk, apel, atau pepaya. Pada penginderaan jarak jauh, tekstur atau warna pada citra dapat dipakai untuk mengidentifikasi objek-objek yang terdapat di dalam citra. Pada machine vision (sistem yang  dapat “melihat” dan “memahami” yang dilihatnya), pengolahan citra berperan dalam mengenali bentuk-bentuk khusus yang dilihat oleh mesin. Penggunaan kamera pemantau ruangan merupakan contoh bagian aplikasi pemrosesan citra.
Di dunia kedokteran, pengolahan citra mempunyai peran yang sangat besar. CT Scan (Computed Tomography Scan) atau kadang disebut CAT Scan (Computerized Axial Tomography Scan) merupakan suatu contoh aplikasi pengolahan citra, yang dapat dipakai untuk melihat potongan atau penampang bagian tubuh manusia. Tomografi  adalah proses untuk menghasilkan citra berdimensi dua dari potongan  objek berdimensi tiga dari sejumlah hasil pemindaian satu-dimensi.
Berbagai aplikasi pengolahan citra juga telah dilakukan di Indonesia. Beberapa contoh ditunjukkan berikut ini.
v  Identifikasi sidik jari (Isnanto, dkk., 2007)
v  Pencarian database orang melalui foto orang (Aribowo, 2009)
v  Identifikasi kematangan buah tomat (Noor dan Hariadi, 2009)
v  Identifikasi penyakit Diabetes mellitus melalui citra kelopak mata (Rachmad, 2009)
v  Ekstraksi fitur motif batik (Mulaab, 2010)
v  Identifikasi telapak tangan (Putra dan Erdiawan, 2010)

1.1.3.          Prinsip Dasar Dalam Pengolahan Citra

Hal-hal yang diutarakan pada Subbab 1.2 merupakan contoh-contoh aplikasi kegiatan pengolahan citra. Aplikasi-aplikasi seperti itu sesungguhnya menggunakan prinsip dasar dalam pengolahan citra seperti peningkatan kecerahan dan kontras, penghilangan derau pada citra, dan pencarian bentuk objek.
Dan hal-hal yang bisa di jadikan contoh seperti:
·         Peningkatan Kecerahan dan Kontras
·         Penghilangan Derau
·         Pencarian Bentuk Objek

1.2.         Pengenalan Dasar Citra

1.2.1.          Representasi Citra Digital

Citra digital dibentuk oleh kumpulan titik yang dinamakan piksel (pixel atau “picture element”). Setiap piksel digambarkan sebagai satu kotak kecil. Setiap piksel mempunyai koordinat posisi.
Sebuah piksel mempunyai koordinat berupa
       (x, y)
Dalam hal ini,
·         x menyatakan posisi kolom;
·         y menyatakan posisi baris;
·         piksel pojok kiri-atas mempunyai koordinat (0, 0) dan piksel pada pojok kanan-bawah mempunyai koordinat (N-1, M-1).
Catatan:
Dalam praktik, penggunaan koordinat pada sistem tertentu mempunyai sedikit perbedaan. Misalnya, pada Octave dan MATLAB, piksel pojok kanan-atas tidak mempunyai koordinat (0, 0) melainkan (1, 1). Selain itu, setiap piksel pada Octave dan MATLAB diakses melalui notasi (baris, kolom). Mengingat buku ini menggunakan contoh dengan Octave dan MATLAB, maka notasi yang digunakan disesuaikan dengan Octave dan MATLAB. Sebagai contoh, koordinat piksel akan ditulis dengan (y, x) dan koordinat pojok kanan-atas akan dinyatakan dengan (1, 1).
Dengan menggunakan notasi pada Octave dan MATLAB, citra dinyatakan dengan
       f(y, x)
Sebagai contoh, citra yang berukuran 12x12 yang  terdapat pada Gambar 2.2(a) memiliki susunan data seperti terlihat pada Gambar 2.2(b). Adapun Gambar 2.3 menunjukkan contoh penotasian f(y,x). Berdasarkan gambar tersebut maka:
·         f(2,1) bernilai 6
·         f(4,7) bernilai 237
Pada citra berskala keabuan, nilai seperti 6 atau 237 dinamakan sebagai intensitas.

1.2.2.     Kuantisasi Citra

Citra digital sesungguhnya dibentuk melalui pendekatan yang dinamakan kuantisasi. Kuantisasi adalah prosedur yang dipakai untuk membuat suatu isyarat yang bersifat kontinu ke dalam bentuk diskret.
Bagaimana halnya kalau gambar mengandung unsur warna (tidak sekadar hitam dan putih)? Prinsipnya sama saja, tetapi sebagai pengecualian, warna hitam diberikan tiga unsur warna dasar, yaitu merah (R = red), hijau (G = green), dan biru (B = blue). Seperti halnya pada citra monokrom (hitam-putih) standar, dengan variasi intensitas dari 0 hingga 255, pada citra berwarna terdapat 16.777.216 variasi warna apabila setiap komponen R, G, dan B mengandung 256 aras intensitas. Namun, kepekaan mata manusia untuk membedakan macam warna sangat terbatas, yakni jauh di bawah enam belas juta lebih tersebut.
   Untuk beberapa keperluan tertentu, jumlah gradasi intensitas saling berbeda. Kolom (A) memberikan lima contoh untuk citra beraras keabuan dan Kolom (B) menunjukkan empat contoh penggunaan citra berwarna (RGB). Perhatikan bahwa jumlah gradasi juga bisa dinyatakan dalam jumlah digit biner atau bit 0 dan 1 sebagai sandi digital per piksel.
Kolom (A):
Komponen warna
Bit per Piksel
Jangkauan
Penggunaan
1
1
0-1
Citra biner: dokumen faksimili
8
0-255
Umum: foto dan hasil pemindai
12
0-4095
Kualitas tinggi: foto dan hasil pemindai
14
0-16383
Kualitas profesional: foto dan hasil pemindai
16
0-65535
Kualitas tertinggi: citra kedokteran dan astronomi
Kolom (B):
Komponen Warna
Bit per Piksel
Jangkauan
Penggunaan
3
24
0-1
RGB umum
36
0-4095
RGB kualitas tinggi
42
0-16383
RGB kualitas profesional
4
32
0-255
CMYK (cetakan digital)
Dalam pengolahan citra, kuantisasi aras intensitas menentukan kecermatan hasilnya. Dalam praktik, jumlah aras intensitas piksel dapat dinyatakan  dengan kurang dari 8 bit.

1.2.3.     Kualitas Citra

Di samping cacah intensitas kecerahan, jumlah piksel yang digunakan untuk menyusun suatu citra  mempengaruhi kualitas citra. Istilah resolusi citra biasa dinyatakan jumlah piksel pada arah lebar dan tinggi. Resolusi piksel biasa dinyatakan dengan notasi m x n, dengan m menyatakan tinggi dan n menyatakan lebar dalam  jumlah piksel.
Resolusi spasial ditentukan oleh jumlah piksel per satuan panjang. Istilah seperti dpi (dot per inch) menyatakan jumlah piksel per  inci. Misalnya, citra 300 dpi menyatakan bahwa citra akan dicetak dengan jumlah piksel sebanyak 300 sepanjang satu inci. Berdasarkan hal itu, maka citra dengan resolusi ruang spasial sebesar 300 dpi dicetak di kertas dengan ukuran lebih kecil daripada yang mempunyai resolusi ruang sebesar 150 dpi, meskipun kedua gambar memiliki resolusi piksel yang sama.

1.2.4.     Membaca Citra

Untuk kepentingan memudahkan dalam memahami hasil proses pengolahan citra, Anda perlu mengenal perintah yang berguna untuk membaca citra yang tersimpan dalam bentuk file. Octave menyediakan fungsi bernama imread. Bentuk pemanggilannya:
   Img = imread(nama_file_citra)
Dalam hal ini, nama_file_citra menyatakan nama file citra yang hendak dibaca dan Img menyatakan larik (array) yang menampung data citra yang dibaca. Perlu diketahui, format-format gambar yang bisa dibaca oleh imread ditunjukkan pada Kolom di bawah ini:
Format Gambar
Ekstensi
Keterangan
TIFF
.tif, .tiff
Tagged Image File Format merupakan format citra yang mula-mula dibuat boleh Aldus. Kemudian, dikembangkan oleh Microsoft dan terakhir oleh Adobe.
JPEG
.jpg, .jpeg
Joint Photographics Expert Group adalah format citra yang dirancang agar bisa memampatkan data dengan rasio 1:16.
GIF
.gif
Graphics Interface Format merupakan format yang memungkinkan pemampatan data hingga 50%. Cocok untuk citra yang memiliki area yang cukup besar dengan warna yang sama.
BMP
.bmp
Windows Bitmap merupakan format bitmap pada Windows.
PNG
.png
Portable Network Graphics biasa dibaca ‘ping’. Asal mulanya dikembangkan sebagai pengganti format GIF karena adanya penerapan lisensi GIF. Mendukung pemampatan data tanpa menghilangkan informasi aslinya.
XWD
.xwd
XWindow Dump

1.2.5.     Mengetahui Ukuran  Citra

Secara umum, ukuran matriks Img adalah M x N. Untuk mengetahui nilai M dan N yang sesungguhnya, dapat digunakan fungsi pada Octave yang bernama size. Contoh untuk mengetahui dimensi pada matriks Img:
>> Ukuran = size(Img) Ã
Ukuran =

   512   512

>> 

Dengan cara seperti itu, terlihat bahwa Img berisi 512 baris dan 512 kolom piksel.
Untuk mendapatkan jumlah baris dan jumlah kolom secara tersendiri, perlu diberikan perintah seperti berikut:
>> jum_baris = Ukuran(1);
>> jum_kolom = Ukuran(2);

Angka 1 dan 2 pada ukuran menyatakan indeks. Dengan cara seperti itu, jum_baris berisi jumlah baris pada larik  Img dan jum_kolom berisi jumlah kolom pada larik Img.
   Sebagai alternatif, dapat ditulis perintah seperti berikut:
>> [jum_baris, jum_kolom] = size(Img);
Dengan cara seperti itu, jum_baris berisi jumlah baris pada larik Img dan jum_kolom berisi jumlah kolom pada larik Img.

1.2.6.     Mengenal Jenis Citra

Ada tiga jenis citra yang umum digunakan dalam pemrosesan citra. Ketiga jenis citra tersebut yaitu citra berwarna, citra berskala keabuan, dan citra biner.

1.2.6.1.                    Citra Berwarna

Citra berwarna, atau biasa dinamakan citra RGB, merupakan jenis citra yang menyajikan warna dalam bentuk komponen R (merah), G (hijau), dan B (biru). Setiap komponen warna menggunakan 8 bit (nilainya berkisar antara 0 sampai dengan 255). Dengan demikian, kemungkinan warna yang bisa disajikan mencapai 255 x 255 x 255 atau 16.581.375 warna. Kolom di bawah ini menunjukkan contoh warna dan nilai R,G, dan B.
Warna
R
G
B
Merah
255
0
0
Hijau
0
255
0
Biru
0
0
255
Hitam
0
0
0
Putih
255
255
255
Kuning
0
255
255

1.2.6.2. Citra Berskala Keabuan

Sesuai dengan nama yang melekat, citra jenis ini menangani gradasi warna hitam dan putih, yang tentu saja menghasilkan efek warna abu-abu. Pada jenis gambar ini, warna dinyatakan dengan intensitas. Dalam hal ini, intensitas berkisar antara 0 sampai dengan 255. Nilai 0 menyatakan hitam dan nilai 255 menyatakan putih. Contoh citra berskala keabuan telah dibahas pada Subbab 2.5.

1.2.6.3. Citra Biner

Citra biner adalah citra dengan setiap piksel hanya dinyatakan dengan sebuah nilai dari dua buah kemungkinan (yaitu nilai 0 dan 1). Nilai 0 menyatakan warna hitam dan nilai 1 menyatakan warna putih. Citra jenis ini banyak dipakai dalam pemrosesan citra, misalnya untuk kepentingan memperoleh tepi bentuk suatu objek.

1.2.7.     Mengonversi Jenis Citra

Dalam praktik, seringkali diperlukan utuk mengonversi citra berwarna ke dalam bentuk citra berskala keabuan mengingat banyak pemrosesan citra yang bekerja pada skala keabuan. Namun, terkadang citra berskala keabuan pun perlu dikonversikan ke citra biner, mengingat beberapa operasi dalam pemrosesan citra berjalan pada citra biner.
            Bagaimana cara mengubah citra berwarna ke dalam citra berskala keabuan? Secara umum citra berwarna dapat dikonversikan ke citra berskala keabuan melalui rumus:
     I=a x R+b x G+c x B,   a+b+c=1     
dengan R menyatakan nilai komponen merah, G menyatakan nilai komponen hijau, dan B menyatakan nilai komponen biru. Misalnya, sebuah piksel mempunyai komponen R, G, B sebagai berikut:
R = 50
G = 70
B = 61
Jika a, b, dan c pada Persamaan 2.1 dibuat sama, akan diperoleh hasil seperti berikut:
            I = (50 + 70 + 60) / 3 = 60
            Salah satu contoh rumus yang biasa dipakai untuk mengubah ke skala keabuan yaitu:
     I=0,2989 x R+0,5870 x G+0,1141 x B   

1.2.8.     Menyimpan Citra

Untuk kepentingan menyimpan citra ke dalam file, fungsi imwrite pada Octave dapat digunakan. Pemakaiannya:
   imwrite(A, nama_file)
A dapat berupa larik dua dimensi (citra berskala keabuan) ataupun larik  berdimensi tiga (citra RGB).
   Contoh:
>> Img = imread('C:\Image\daun_gray.png'); 
>> X = 255 – Img; 
>> imwrite(X, ’negatif_daun.png’); 
Perlu diketahui,
X = 255 – Img;
digunakan untuk memperoleh citra negatif dari citra daun_gray.png. Setelah imwrite dieksekusi, akan terbentuk negatif_daun.png pada folder kerja.

1.3.         OPERASI PIKSEL DAN HISTOGRAM

1.3.1.          Operasi Piksel

Pada pengolahan citra terdapat istilah operasi piksel atau kadang disebut operasi piksel-ke-piksel. Operasi piksel adalah operasi pengolahan citra yang memetakan hubungan setiap piksel yang bergantung pada piksel itu sendiri. Jika f(y, x) menyatakan nilai sebuah piksel pada citra f dan g(y, x) menyatakan piksel hasil pengolahan dari f(y, x), hubungannya dapat dinyatakan dengan
“ g(y,x)= T(f(y,x)) “
Dalam hal ini, T menyatakan fungsi atau macam operasi yang dikenakan terhadap piksel f(y, x). Model operasi inilah yang akan dibahas di bab ini, termasuk pembahasan pengolahan citra berbasis histogram.

1.3.2.          Menggunakan Histogram Citra

Histogram citra merupakan diagram yang menggambarkan frekuensi setiap nilai intensitas yang muncul di seluruh piksel citra. Nilai yang besar menyatakan bahwa piksel-piksel yang mempunyai intensitas tersebut sangat banyak.
Pada citra berskala keabuan, jumlah aras keabuan (biasa disimbolkan dengan L) sebanyak 256. Nilai aras dimulai dari 0 hingga 255. Adapun histogram untuk suatu aras dinyatakan dengan hist(k+1) dengan k menyatakan nilai aras (0 sampai dengan L-1). Jadi, hist(k+1) menyatakan jumlah piksel yang bernilai k. Penggunaan k+1 pada hist diperlukan mengingat dalam Octave dan MATLAB tidak ada indeks nol atau hist(0). Cara menghitung hist(k+1) ditunjukkan pada algoritma berikut.
ALGORITMA  – Menghitung histogram citra aras keabuan
Masukan:
·         f(M, N) : citra berukuran M baris dan N kolom
·         L : jumlah aras keabuan

1.      Buatlah larik hist sebanyak 2L elemen dan isi dengan nol.
2.      FOR i ¬ 1 TO M
         FOR j ¬ 1 TO N
        hist(f(M, N)+1)  ¬  hist(f(M, N)+1) + 1
    END-FOR
END-FOR

1.3.3.          Meningkatkan Kecerahan

Operasi dasar yang sering dilakukan pada citra adalah peningkatan kecerahan (brightness). Operasi ini diperlukan dengan tujuan untuk membuat gambar menjadi lebih terang.
Secara matematis, peningkatan kecerahan dilakukan dengan cara menambahkan suatu konstanta terhadap nilai seluruh piksel. Misalkan, f(y, x) menyatakan nilai piksel pada citra berskala keabuan pada koordinat (y, x). Maka, citra baru “ g(y,x)= f(y,x)+ β “
telah meningkat nilai kecerahan semua pikselnya sebesar β terhadap citra asli f(y, x). Apabila β berupa bilangan negatif, kecerahan akan menurun atau menjadi lebih gelap.

1.3.4.          Meregangkan Kontras

Kontras dalam suatu citra menyatakan distribusi warna terang dan warna gelap. Suatu citra berskala keabuan dikatakan memiliki kontras rendah apabila distribusi warna cenderung pada jangkauan aras  keabuan yang sempit. Sebaliknya, citra mempunyai kontras tinggi apabila jangkauan aras keabuan lebih terdistribusi secara melebar. Kontras dapat diukur berdasarkan perbedaan antara nilai intensitas tertinggi dan nilai intensitas terendah yang menyusun piksel-piksel dalam citra.
Perlu diketahui, citra dengan kontras rendah acapkali terjadi karena kondisi pencahayaan yang jelek ataupun tidak seragam. Hal itu dapat diakibatkan oleh sensor-sensor penangkap citra yang tidak linear (Jain, 1989).
Agar distribusi intensitas piksel berubah perlu dilakukan peregangan kontras. Hal ini dilaksanakan dengan menggunakan rumus “ g(y,x)= α f(y,x) “.
Berdasarkan rumus di atas, kontras akan naik kalau α > 1 dan kontras akan turun kalau α < 1.

1.3.5.          Kombinasi Kecerahan dan Kontras

Operasi peningkatan kecerahan dan peregangan kontras dapat dilakukan sekaligus untuk kepentingan memperbaiki citra. Secara umum, gabungan kedua operasi tersebut dapat ditulis menjadi “ g(y,x)= α f(y,x)+ β “
Namun, kalau yang dikehendaki adalah melakukan pengaturan agar aras keabuan pada citra f yang berkisar antara f1 dan f2 menjadi citra g dengan aras antara g1 dan g2, rumus yang diperlukan adalah :
g(y,x)= g_1+((g_2-g_1)/(f_2-f_1 ))[f(y,x)-f_2 ]          

1.3.6.          Membalik Citra

Bila pernah melihat film hasil kamera analog, gambar yang terekam dalam film tersebut berkebalikan dengan foto saat dicetak, yang dikenal sebagai film negatif. Citra seperti ini biasa digunakan pada rekam medis; misalnya hasil fotografi rontgen. Hubungan antara citra dan negatifnya untuk yang beraras keabuan dapat dinyatakan dengan rumus:
“ g(y,x)= 255- f(y,x) “.
Hubungan di atas dapat digambarkan seperti secara grafis

1.3.7.          Pemetaan Nonlinear

Dalam pengolahan citra, terkadang diperlukan pemetaan intensitas piksel yang tidak menggunakan cara linear seperti yang telah dibahas, melainkan menggunakan pendekatan nonlinear. Kalau suatu citra berisi bagian yang cerah dan bagian yang gelap yang cukup ekstrem,  akan lebih baik kalau digunakan cara nonlinear. Sebagai contoh, dapat digunakan fungsi logaritma, yang membuat bagian yang gelap (intensitas rendah) lebih dicerahkan daripada yang berintensitas tinggi, karena memuat banyak detail yang penting

1.3.8.          Pemotongan Aras Keabuan

Efek pemotongan (clipping) diperoleh bila dilakukan operasi seperti berikut:
                                               
Nilai g dinolkan atau dipotong habis untuk intensitas asli dari 0 hingga f1 karena dipandang tidak mengandung informasi atau objek menarik. Demikian pula untuk nilai intensitas dari f2 ke atas, yang mungkin hanya mengadung derau. Dan contoh menyajikan diagram penggunaan rumus tersebut :

1.3.9.          Ekualisasi Histogram

Ekualisasi histogram merupakan suatu cara yang bertujuan untuk memperoleh histogram yang intensitasnya terdistribusi secara seragam pada citra. Namun, dalam praktik, hasilnya tidak benar-benar seragam (Jain, 1989). Pendekatan yang dilakukan adalah untuk mendapatkan aras keabuan yang lebih luas pada daerah yang memiliki banyak piksel  dan mempersempit aras keabuan pada daerah yang berpiksel sedikit. Efeknya dapat digunakan untuk meningkatkan kontras secara menyeluruh. Perlu diketahui, ekualisasi histogram termasuk sebagai pemetaan nonlinear.
   Misalnya, histogram untuk setiap aras keabuan dinyatakan dengan
   hist[i+1]
Dalam hal ini, i bernilai 0, 1, 2, .., L-1, dengan L menyatakan jumlah aras keabuan. Akumulasi histogram untuk piksel yang memiliki aras k dinyatakan dengan
c[k+1]= ∑_(i=1)^k▒hist[k+1],k=0,1,2,…,L-1
Selanjutnya, aras k akan diganti dengan  a dengan ketentuan sebagai berikut:
a_k=round((L-1)   c[k+1]/N),k=0,1,2,…,L-1   
Dalam hal ini, N menyatakan jumlah piksel pada citra.
            Untuk memahami proses dalam ekualisasi histogram, lihatlah contoh pada kolom di bawah ini:
I
Aras
hist[i]
c[i]
a(i)
1
0
2
2
0
2
1
2
4
0
3
2
4
8
0
4
3
12
20
2
5
4
18
38
4
6
5
14
52
6
7
6
10
62
7
8
7
2
64
7

L=8
N=64


Pada contoh di atas, yang diarsir dengan warna hijau muda menyatakan keadaan awal citra. Dalam hal ini, citra  mengandung  N=64 piksel (8x8) dengan jumlah aras keabuan berupa 8. Selanjutnya, berdasarkan nilai hist[i] maka c[i] dihitung. Selanjutnya, a[i] dapat dihitung berdasar Persamaan 3.9. Dalam hal ini, setiap nilai

·         0 atau 1 pada citra akan diganti dengan 0;
·         3 akan diganti dengan 2;
·         4 tidak diganti (tetap);
·         5 diganti dengan 6;
·         6 dan 7 diganti dengan 7.
Algoritma untuk melakukan penggantian nilai intensitas pada citra ditunjukkan berikut ini.
ALGORITMA 3.2 – Melaksanakan ekualisasi histogram citra aras keabuan

Masukan:
·         f(M, N) : citra berukuran M baris dan N kolom
·         n : jumlah piksel dalam citra
Keluaran
·         g(M, N) : citra yang telah mengalami ekualisasi histogram

1.      Hitung faktor penyekalaan: α ¬ 255 / n
2.      Hitung histogram citra menggunakan Algoritma 3.1 dengan hasil berupa hist
3.      c[1] ¬ α * hist[1]
4.      FOR i¬1 TO L-1
5.          c[i+1] ¬ c[i] + round(α * hist[i+1])
6.      END-FOR
7.      FOR i ¬ 1 TO M
8.          FOR j ¬ 1 TO N
9.              g(y,x) ¬ c[f(y, x)]
10.      END-FOR
11.  END-FOR

1.4.         Operasi Ketetanggaan Pikel

1.4.1.     Pengertian Operasi Ketetanggaan Piksel

Operasi ketetanggaan piksel adalah operasi pengolahan citra untuk mendapatkan nilai suatu piksel yang melibatkan nilai piksel-piksel tetangganya. Hal ini didasarkan kenyataan bahwa setiap piksel pada umumnya tidak berdiri sendiri, melainkan terkait dengan piksel tetangga, karena merupakan bagian suatu objek tertentu di dalam citra. Sifat inilah yang kemudian mendasari timbulnya algoritma untuk mengolah setiap piksel citra melalui piksel-piksel tetangga. Sebagai contoh, suatu citra yang berderau dapat dihaluskan melalui pererataan atas piksel-piksel tetangga.

1.4.2.     Pengertian Ketetanggaan Piksel

Pada pengolahan citra, ketetanggaan piksel banyak dipakai terutama pada analisis bentuk objek. Ketetanggaan piksel yang umum dipakai adalah 4- ketetanggaan dan 8-ketetanggan. Untuk memahami dua jenis ketetanggaan piksel, lihat Gambar Sebagai berikut:

1.4.3.     Aplikasi Ketetanggaan Piksel pada Filter

Ada tiga jenis filter yang menggunakan operasi ketetanggaan piksel yang akan dibahas sebagai pengantar pada bab ini. Ketiga filter tersebut adalah filter batas, filter pererataan, dan filter median. Sebagai filter atau tapis, operasi ketetanggaan piksel berfungsi untuk menyaring atau paling tidak mengurangi gangguan atau penyimpangan pada citra.
a. Filter Btas
b. Filter Peralatan
c. Filter Median

1.5.         Operasi Geometrik

1.5.1.     Pengantar Operasi Geometrik

Operasi geometrik adalah operasi pada citra yang dilakukan secara geometris seperti translasi, rotasi, dan penyekalaan. Pada operasi seperti ini terdapat pemetaan geometrik, yang menyatakan hubungan pemetaan antara piksel pada citra masukan dan piksel pada citra keluaran. Secara prinsip, terdapat dua cara yang dapat dipakai. Pertama yaitu pemetaan ke depan dan kedua berupa pemetaan ke belakang.

1.5.2.     Menggeser Citra

Penggeseran citra ke arah mendatar atau vertikal dapat dilaksanakan dengan mudah. Rumus yang digunakan sebagai berikut:
x_baru=x_lama+ s_x
y_baru=y_lama+ s_y
Untuk penyederhanaan pembahasan, sx dan sy dianggap bertipe bilangan bulat.
Contoh berikut menunjukkan program yang digunakan untuk melakukan penggeseran citra. 

1.5.3.     Memutar Citra

Suatu citra dapat diputar dengan sudut θ seiring arah jarum jam atau berlawanan arah jarum jam dengan pusat putaran pada koordinat (0,0). Menjelaskan bentuk pemutaran citra. Adapun rumus yang digunakan untuk memutar citra dengan sudut θ berlawanan arah jam berupa:
x_baru=x*Cos(θ)+ y*Sin(θ)
y_baru=y*Cos(θ)- x*Sin(θ)

1.5.4.     Memperbesar Citra

Suatu citra dapat diperbesar dengan membuat setiap piksel menjadi beberapa piksel. Gambar di bawah memberikan contoh cara memperbesar citra.

1.5.5.     Memperkecil Citra

Bagaimana kalau ingin memperkecil citra? Secara prinsip, pengecilan citra berarti mengurangi jumlah piksel. Algoritma yang digunakan untuk mewujudkan perbesar.m maupun perbesar2.m dapat digunakan untuk keperluan ini dengan m berupa bilangan pecahan seperti 1/2, ¼, 1/8, dan seterusnya. Contoh:
>> Img = perbesar2('C:\Image\tria.png’,0.5,0.5);
>> imshow(Img);

1.5.6.     Pencerminan Citra

Pencerminan yang umum dilakukan berupa pencerminan secara vertikal dan pencerminan secara horizontal. Pencerminan secara horizontal dilakukan dengan menukarkan dua piksel yang berseberangan kir-kanan, dan berikut adalah gambar pencerminan.

1.6.         Pengolahan Citra di Kawasan Frekuensi

1.6.1.     Pengolahan Citra dikawasan Spasial dan Kawasan Frekuensi

Citra dapat ditransformasikan di kawasan spasial maupun di kawasan frekuensi. Dua cara untuk melakukan transformasi citra ditunjukkan pada Gambar dibawah ini. Sejumlah contoh transformasi di kawasan spasial atau keruangan telah dibahas di Bab 5. Namun, sebagai alternatif citra perlu diproses di kawasan frekuensi agar penentuan daerah frekuensinya dapat lebih ketat dan tepat. Untuk itu diperlukan pasangan transformasi dan transformasi-balik sebelum dan sesudah penapisan.

1.6.2.     Alihragam Fourier

Alihragam Fourier (Fourier transform) merupakan salah satu jenis alihragam ke kawasan frekuensi yang banyak dipakai pada pengolahan citra. Alihragam ini dimanfaatkan untuk memetakan citra dari kawasan spasial ke dalam kawasan frekuensi. Disamping untuk melihat karakteristik spektrum citra, juga menjadi bagian pemrosesannya. Citra dapat diamati sebagai kumpulan gelombang sinusoid dengan frekuensi, amplitudo, dan fase yang berbeda-beda. Meskipun pada zaman sekarang terdapat berbagai alihragam sebagai alternatif alihragam Fourier, konsep yang mendasari alihragam Fourier perlu dimengerti. Lagipula, beberapa pemrosesan masih bertumpu pada alihragam Fourier.
Visual Pemrosesan FFT
Sebagaimana telah dibahas di depan, alihragam Fourier menghasilkan bilangan kompleks. Terkait dengan hal itu, terdapat definisi spektrum Fourier seperti berikut:
|F(v,u)|=√(R^2 (v,u)+I^2 (v,u) )
dengan R(u,v) menyatakan bagian real dan I(u,v) menyatakan bagian imajiner. Adapun sudut fase transformasi didefinisikan sebagai:
(v,u)=tan^(-1) [(I(v,u))/(R(v,u))]
Selain itu, terdapat pula istilah power spectrum atau spektrum daya, yang didefinisikan sebagai kuadrat besaran:
P(v,u)=|F(v,u)|^2=R^2 (v,u)+I^2 (v,u)
Untuk kepentingan analisis secara visual, spektrum dan sudut fase Fourier dapat disajikan dalam bentuk gambar. Berikut adalah contoh untuk melakukan transformasi citra lena256.png dan kemudian menyajikan spektrum.
>> Img = imread(’C:\Image\lena256.png’)
>> F = fft2(Img);
>> imshow(abs(F),[]);

1.6.3.     Penampisan pada Kawasan Frekuensi

Sebagaimana telah diutarakan pada Gambar 5.1, penapisan dapat dilakukan pada kawasan frekuensi. Menurut teorema konvolusi, konvolusi pada kawasan frekuensi dapat dilakukan dengan mengalikan F(v, u) dengan H(v,u) (Gonzalez, dkk., 2004). Dalam hal ini, H(v,u) dinamakan sebagai fungsi transfer filter dan diperoleh melalui pengenaan DFT terhadap h(y,x), yang merupakan kernel konvolusi pada kawasan spasial.
Satu hal yang perlu diperhatikan pada kawasan frekuensi, penapisan dapat menimbulkan problem akibat konvolusi. Problem yang dimaksud dikenal dengan nama wraparound error atau spatial aliasing error (Bovik, 2009). Hal ini disebabkan pada kawasan frekuensi terdapat fungsi periodis (yang berulang setelah jarak tertentu) yang membuat gambar akan diulang (seperti efek pengubinan) dan akibatnya membuat interferensi pada konvolusi.

BAB II
PEMBAHASAN

2.1.         Menginstalasi Dan Menjalankan Octave

Octave adalah Free Software yang sangat bermanfaat untuk menyelesaikan berbagai masalah komputasi numerik. Perangkat lunak ini menawarkan kemudahan dan kesederhanaan dalam menyelesaikan permasalahan yang berhubungan dengan vektor dan matriks.
Sebelum dapat memakai Octave, program ini perlu diinstal terlebih dulu. Octave dapat diunduh di http://www.gnu.org/software/octave/download.html. Namun, untuk memudahkan Anda, CD yang disertakan bersama buku ini telah dilengkapi dengan software yang Anda perlukan. Versi Octave yang digunakan untuk mengimplementasikan program di buku ini adalah Octave 3.4.3, sedangkan paket Image Processing yang digunakan berversi 1.0.15. Paket ini bisa diunduh di http://octave.sourceforge.net/image/index.html. Setelah program Octave diunduh, lakukan penginstalan. Pada Windows, letakkan Octave pada folder C:\Octave. Selanjutnya, dekompresilah paket Image Processing dan kemudian letakkan folder image-1.0.15 ke dalam folder C:\Octave. Dengan demikian, susunan folder C:\Octave seperti berikut:
Setelah terbentuk folder tersebut, Octave siap dijalankan.
Agar paket Image Processing tersebut dikenali oleh Octave, berikan perintah seperti berikut setiap kali Anda menjalankan Octave:
addpath('c:\octave\image-1.0.15\inst')
Perintah di atas memberitahukan Octave untuk menyatakan lokasi paket Image Processing.
Pada lingkungan Windows, program Octave dijalankan dengan cara seperti berikut.

1.                  Klik pada tombol Start ( ).
2.                  Pilih All Programs.
3.                  Klik pada
4.                  Klik pada

2.2.         Program Histogram dan Menyimpan Kefile

clc;
clear;
%Membuka Citra
RGB=imread('C:\Image\Saya.jpg');
YCBCR=ntsc2rgb(RGB); %Ekstraksi Matrik YCBCR
Y=YCBCR(:,:,1); %Ekstraksi Matrik Y
Cb=YCBCR(:,:,2); %Ekstraksi Matrik Cb
Cr=YCBCR(:,:,3); %Ekstraksi Matrik Cr
R=RGB-225;
function histo(f)
[sumbu_x, sumbu_y] = size (f);
f=double(f);

Histog = zeros(256, 1);
       for x=1 ; sumbu_x
            for y=1 : sumbu_y
                       Histog(f(x,y)+1)=..
                       Histog(f(x,y)+1)+1;
        end
end
% Tampilkan Dalam Bentuk Diagram Batang
Horis = (0:255);
bar(Horis, Histog);
endfunction
f(y, x)=imread('C:\Image\Saya.jpg');
%g1(y,x)=f(y,x) + ß
g1(y,x)=f(y,x)+60;
%g2(y,x)=a f(y,x)
g2=1.8*f;
%g3(y,x)= a f(y,x) + ß
g3=1.8*f+60;
%G(y,x)=255-f(y,x)
G=255-f;

%menampilkan Hasil Olahan Citra
figure(1);
subplot(2,3,1); imshow(RGB); title('Original Citra');
subplot(2,3,2); imshow(YCBCR); title('Ekstraksi Matrik YCBCR');
subplot(2,3,3); imshow(Y); title('Ekstraksi Matrik Y');
subplot(2,3,4); imshow(Cb); title('Ekstraksi Matrik Cb');
subplot(2,3,5); imshow(Cr); title('Ekstraksi Matrik Cr');
subplot(2,3,6); imshow(R); title('Ekstraksi Matrik R');

%Menyimpan Hasil Olahan Citra
imwrite(RGB,'C:\Hasil\RGB.jpg');
imwrite(YCBCR,'C:\Hasil\YCBCR.jpg');
imwrite(Cb,'C:\Hasil\Cb.jpg');
imwrite(Cr,'C:\Hasil\Cr.jpg');
imwrite(R,'C:\Hasil\R.jpg');
Khusus pada citra berwarna, histogram dapat diterapkan pada gabungan komponen-komponen RGB penyusunnya ataupun per komponen. Program diatas menunjukkan contoh mengenai hal itu. Pada hasil gambar diatas, I menyatakan histogram gabungan intensitas warna, R untuk komponen warna merah, G untuk komponen warna hijau, dan B untuk komponen warna biru.

2.3.         Program Meningkatkan Kecerahan

clc;
clear;
F = imread('C:/image/boneka.TIF');
G = F + 40;
imwrite(G, 'c:/image/1. Pencerahan.TIF');
figure(1);
subplot(1, 2, 1); imshow(F); title('Sebelum');
subplot(1, 2, 2); imshow(G); title('Sesudah');

Jika dilihat melalui histogram, peningkatan kecerahan sebenarnya berefek pada penggeseran komposisi intensitas piksel ke kanan bila β berupa bilangan positif atau ke kiri jika β berupa bilangan negatif di Persamaan seperti contoh program diatas.

2.4.         Program Kombinasi Kecerahan Dan Kontras

function histo(Img)
% HISTO Digunakan sebagai contoh kombinasi kecerahan+kontras
[jum_baris, jum_kolom] = size(Img);
Img = double(Img);
Histog = zeros(256, 1);
       for baris=1 : jum_baris
            for kolom=1 : jum_kolo
                 Histog(Img(baris, kolom)+1) = ...
                 Histog(Img(baris, kolom)+1) + 1;
        end
end
% Tampilkan dalam bentuk diagram batang
Horis = (0:255)';
bar(Horis, Histog);
endfunction
clc;
clear;
ori=imread('d:\didi.jpg');
br=ori+60; % kecerahan
cnt=1.8*ori; % kontras
kom=1.8*ori+60; % kombinasi kecerahan + kontras
neg=255-ori; % negatif
figure(1);
subplot(5,2,1);imshow(ori);title('Original');
subplot(5,2,2);histo(ori);
subplot(5,2,3);imshow(br);title('Kecerahan + 60');
subplot(5,2,4);histo(br);
subplot(5,2,5);imshow(cnt);title('Kontras * 1.8');
subplot(5,2,6);histo(cnt);
subplot(5,2,7);imshow(kom);title('Kombinasi Kecerahan dan Kontras');
subplot(5,2,8);histo(kom);
subplot(5,2,9);imshow(neg);title('Negatif');
subplot(5,2,10);histo(neg);
imwrite(br, 'd:\hasil\kecerahan60.jpg');
imwrite(cnt, 'd:\hasil\kontras1.8.jpg');
imwrite(kom, 'd:\hasil\kombinasi.jpg');
imwrite(neg, 'd:\hasil\negative.jpg');
Operasi peningkatan kecerahan dan peregangan kontras dapat dilakukan sekaligus untuk kepentingan memperbaiki citra. Dan yang dikehendaki adalah melakukan pengaturan agar aras keabuan pada citra f yang berkisar antara f1 dan f2 menjadi citra g dengan aras antara g1 dan g2.

2.5.         Program Pembalik Citra

clc;
clear;
F = imread('C:\image\kotaku.PNG');
G = 255 - F;
imwrite(G, 'C:\image\4. Membalik Citra.PNG');
figure(1);
subplot(1, 2, 1); imshow(F); title('before');
subplot(1, 2, 2); imshow(G); title('after');
Program diatas menunjukkan bahwa kalau f(y, x) bernilai 255, g(y, x) bernilai 0. Sebaliknya, kalau f(y, x) bernilai 0, g(y, x) bernilai 255.

2.6.         Program Menggeser Citra

% GESER Melakukan operasi penggeseran citra.
F = imread('c:\Image\gedung.png');
[tinggi, lebar] = size(F);
sx = 45; % Penggesaran arah horisontal
sy = -35; % Penggesaran arah vertikal
F2 = double(F);
G = zeros(size(F2));
   for y=1 : tinggi
       for x=1 : lebar
            xlama = x - sx;
            ylama = y - sy;
        if (xlama>=1) && (xlama<=lebar) && ...
            (ylama>=1) && (ylama<=tinggi)
             G(y, x) = F2(ylama, xlama);
        else
             G(y, x) = 0;
          end
      end
end
G = uint8(G);
figure(1); imshow(G);
clear all;
Pada contoh di atas, citra digeser ke kanan sebesar 45 piksel (ditentukan melalui sx) dan ke atas sebesar 35 piksel (diatur melalui sy). Apabila xlama hasil perhitungan di luar jangkauan [1, lebar] atau ylama hasil perhitungan di luar jangkauan [1, tinggi], intensitas piksel pada posisi (y, x) diisi dengan nol (warna hitam).

2.7.         Program Memutar Citra  

% ROTASI Melakukan Operasi pemutaran citra.
% Versi 1
% Menggunakan pendekatan pemetaan ke belakang
F = imread('c:\Image\sungai.png');
[tinggi, lebar] = size(F);
sudut = 10; % Sudut pemutaran
rad = pi * sudut/180;
cosa = cos(rad);
sina = sin(rad);
F2 = double(F);
   for y=1 : tinggi
      for x=1 : lebar
            x2 = round(x * cosa + y * sina);
            y2 = round(y * cosa - x * sina);
     if (x2>=1) && (x2<=lebar) && ...
         (y2>=1) && (y2<=tinggi)
          G(y, x) = F2(y2, x2);
     else
          G(y, x) = 0;
     end
   end
end
G = uint8(G);
figure(1); imshow(G);
clear all;
Berdasarkan program diatas pemutaran citra dengan sudut θ searah jarum jam dapat dilakukan. Caranya, dengan menggunakan x dan y sebagai posisi baru dan xbaru justru sebagai posisi lama. Pada saat menghitung dengan rumus di atas, apabila posisi koordinat (ybaru ,xbaru) berada di luar area [1, lebar] dan [1, tinggi], intensitas yang digunakan berupa nol.

2.8.         Program Memperkecil Citra

function G = Memperkecil2(F, sy, sx)
% Memperkecil2 Melakukan operasi Memperkecil citra
% dengan interpolasi.
% Masukan: berkas = nama berkas image
% sy : skala pembesaran pada sumbu Y
% sx : skala pembesaran pada sumbu X
%
% Versi 2
Ukuran = size(F);
tinggi = Ukuran(1);
lebar = Ukuran(2);
tinggi_baru = round(tinggi * sy);
lebar_baru = round(lebar * sx);
F2 = double(F);
    for y=1 : tinggi_baru
          y2 = (y-1) / sy + 1;
    for x=1 : lebar_baru
          x2 = (x-1) / sx + 1;
              % Lakukan interpolasi bilinear
                   p = floor(y2);
                   q = floor(x2);
                   a = y2-p;
                   b = x2-q;
if (floor(x2)==lebar) || (floor(y2) == tinggi)
    G(y, x) = F(floor(y2), floor(x2));
else
      intensitas = (1-a) * ((1-b) * F(p,q) + ...
      b * F(p, q+1)) + ...
      a *((1-b)* F(p+1, q) + ...
      b * F(p+1, q+1));
   G(y, x) = intensitas;
  end
 end
end
G = uint8(G);
end
clc;
clear;
im = imread('D:\image\ayat.JPEG');
G = perbesar2(im, 0.5, 0.5);
imwrite(G, 'D:\image\8. Mengecilkan.JPEG');
figure(1);
subplot(1, 2, 1); imshow(im); title('BEFORE');
subplot(1, 2, 2); imshow(G); title('AFTER');

2.9.         Program Pencerminan Citra

function G = cerminh(F)
% CERMINH Berfungsi untuk mencerminkan citra
% secara horizontal
% Masukan: F = Citra berskala keabuan
[tinggi, lebar] = size(F);
for y=1 : tinggi
    for x=1 : lebar
        x2 = lebar - x + 1;
        y2 = y;
     G(y, x) = F(y2, x2);
    end
end
G = uint8(G);
Pencerminan yang umum dilakukan berupa pencerminan secara vertikal dan pencerminan secara horizontal. Pencerminan secara horizontal dilakukan dengan menukarkan dua piksel yang berseberangan kir-kanan. Contoh program diatas pemakaian fungsi cerminh:
>> F = imread('C:\Image\boneka.png');
>> G = cerminh(F); imshow(G)



BAB III
PENUTUP

3.1.         Kesimpulan

Kesimpulan dari BAB I dan BAB II tentang Aplikasi pengolahan citra di ibaratkan emplementasi koding dlm berbagai banyak perogeram edit foto. Seperti Photshop, PhotoScape, dan lain-lainnya, yang bekerja seperti pemotongan foto, pemberian kecerahan, menghilangkan belur dan pemberian teks.
Di dalam bab I menjelaskan tentang beberapa teori mendayar yang mudah di pehami dan mudah di cernah, sedangakan bab II membahas tentang pengkodingan dasar dari pengolahan citra digital.







DAFTAR PUSAKA

Susanto, A. K. (2013). Teori dan Aplikasi PENGOLAHAN CITRA. Yogyakarta: CV.ANDI.

Tidak ada komentar:

Posting Komentar