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