BAB 2 - dosen.sttpln.ac.id · memiliki susunan data seperti terlihat pada Gambar 2.2(b). Adapun...

33
BAB 2 Pengenalan Dasar Citra Setelah bab ini berakhir, diharapkan pembaca memahami hal-hal berikut beserta contoh penerapannya. Representasi citra digital Kuantisasi citra Kualitas citra Cara membaca citra Cara mendapatkan ukuran citra Cara menampilkan citra Pemahaman jenis citra Konversi jenis citra

Transcript of BAB 2 - dosen.sttpln.ac.id · memiliki susunan data seperti terlihat pada Gambar 2.2(b). Adapun...

BAB 2

Pengenalan Dasar

Citra

Setelah bab ini berakhir, diharapkan pembaca memahami

hal-hal berikut beserta contoh penerapannya.

Representasi citra digital

Kuantisasi citra

Kualitas citra

Cara membaca citra

Cara mendapatkan ukuran citra

Cara menampilkan citra

Pemahaman jenis citra

Konversi jenis citra

12 Pengolahan Citra, Teori dan Aplikasi

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. Sistem koordinat yang dipakai untuk

menyatakan citra digital ditunjukkan pada Gambar 2.1.

0 N-1

M-1

0

x

y

Posisi sebuah piksel

Gambar 2.1 Sistem koordinat citra berukuran M x N

(M baris dan N kolom)

Dengan sistem koordinat yang mengikuti asas pemindaian pada layar TV

standar itu, sebuah piksel mempunyai koordinat berupa

(x, y)

Dalam hal ini,

x menyatakan posisi kolom;

y menyatakan posisi baris;

Mengenal Dasar Citra 13

piksel pojok kiri-atas mempunyai koordinat (0, 0) dan piksel pada pojok

kanan-bawah mempunyai koordinat (N-1, M-1).

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.

14 Pengolahan Citra, Teori dan Aplikasi

(a) Citra berukuran 12 x 12

6 6 6 6 6 6 6 89 237 237 237 237

6 6 89 237 237 237 6 6 89 237 237 237

6 6 89 237 237 237 237 6 6 89 237 237

6 6 89 237 237 237 237 6 6 89 237 237

6 6 89 237 237 237 237 6 6 89 237 237

6 6 89 237 237 237 6 6 89 237 237 237

6 6 6 6 6 6 6 89 237 237 237 237

6 6 6 6 6 6 89 237 237 237 237 237

6 6 89 237 237 6 6 89 237 237 237 237

6 6 89 237 237 237 6 6 89 237 237 237

6 6 89 237 237 237 237 6 6 89 237 237

6 6 89 237 237 237 237 237 6 6 89 237

(b) Data penyusun citra 12 x 12

Gambar 2.2 Citra dan nilai penyusun piksel

f(4,7) = 237

6 6 6 6 6 6 6 89 237 237 237 237

6 6 89 237 237 237 6 6 89 237 237 237

6 6 89 237 237 237 237 6 6 89 237 237

6 6 89 237 237 237 237 6 6 89 237 237

6 6 89 237 237 237 237 6 6 89 237 237

6 6 89 237 237 237 6 6 89 237 237 237

6 6 6 6 6 6 6 89 237 237 237 237

6 6 6 6 6 6 89 237 237 237 237 237

6 6 89 237 237 6 6 89 237 237 237 237

6 6 89 237 237 237 6 6 89 237 237 237

6 6 89 237 237 237 237 6 6 89 237 237

6 6 89 237 237 237 237 237 6 6 89 237

1 2 3 4 5 6 7 8 9 10 11 12

1

2

3

4

5

6

7

8

9

10

11

12

f(2,1) = 6

Gambar 2.3 Notasi piksel dalam citra

Mengenal Dasar Citra 15

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. Untuk mempermudah pemahaman

konsep ini, lihatlah Gambar 2.4. Gambar 2.4(a) menyatakan isyarat analog

menurut perjalanan waktu t, sedangkan Gambar 2.4(b) menyatakan isyarat diskret.

(a) Isyarat analog (b) Isyarat diskret

t t

Gambar 2.4 Perbandingan isyarat analog dan isyarat diskret

Pada isyarat digital, nilai intensitas citra dibuat diskret atau terkuantisasi

dalam sejumlah nilai bulat. Gambar 2.5(a) menunjukkan contoh citra biner dua

nilai intensitas berupa 0 (hitam) dan 1 (putih). Selanjutnya, gambar tersebut

ditumpangkan pada grid 8x8 seperti yang diperlihatkan pada Gambar 2.5(b).

Bagian gambar yang jatuh pada kotak kecil dengan luas lebih kecil dibanding

warna putih latarbelakang, seluruh isi kotak dibuat putih. Sebaliknya, jika

mayoritas hitam, isi kotak seluruhnya dibuat hitam. Hasil pengubahan ke citra

digital tampak pada Gambar 2.5(c). Adapun Gambar 2.5(d) memperlihatkan

bilangan yang mewakili warna hitam (0) dan putih (1). Dengan demikian, citra

digital akan lebih baik (lebih sesuai aslinya) apabila ukuran piksel diperkecil atau

jumlah piksel diperbanyak.

16 Pengolahan Citra, Teori dan Aplikasi

(a) Citra yang akan dinyatakan

dalam isyarat digital

(b) Citra ditumpangkan pada grid

1 1 1 1 1 0 1 1

1 1 1 1 0 1 1 1

1 0 0 0 0 0 1 1

1 0 0 0 0 0 0 1

0 0 0 0 0 0 0 1

1 0 0 0 0 0 0 1

1 0 0 0 0 0 0 1

1 1 1 1 0 1 1 1

(c) Hasil kuantisasi (d) Representasi dalam bentuk

angka

Gambar 2.5 Digitalisasi citra biner 8x8 piksel

untuk memperlihatkan bentuk piksel ideal

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.

Tabel 2.1 memberikan lima contoh untuk citra beraras keabuan dan Tabel 2.2

menunjukkan empat contoh penggunaan citra berwarna (RGB). Perhatikan bahwa

Mengenal Dasar Citra 17

jumlah gradasi juga bisa dinyatakan dalam jumlah digit biner atau bit 0 dan 1

sebagai sandi digital per piksel.

Tabel 2.1 Jangkauan nilai pada citra keabuan

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

Tabel 2.2 Jangkauan nilai pada citra berwarna

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. Contoh pada Gambar 2.6 menunjukkan citra yang dikuantisasi

dengan menggunakan 8, 5, 4, 3, 2, dan 1 bit.

18 Pengolahan Citra, Teori dan Aplikasi

(a) 8 bit (b) 5 bit (c) 4 bit

(d) 3 bit (e) 2 bit (f) 1 bit

Gambar 2.6 Kuantisasi citra dengan menggunakan berbagai bit

Pada kuantisasi dengan 1 bit, jumlah level sebanyak 2 (21). Oleh karena

itu, warna yang muncul berupa hitam dan putih saja. Perlu diketahui, penurunan

jumlah aras pada tingkat tertentu membuat mata manusia masih bisa menerima

citra dengan baik. Sebagai contoh, citra dengan 4 bit (Gambar 2.6(c)) dan citra

dengan 8 bit (Gambar 2.6(a)) praktis terlihat sama. Hal seperti itulah yang

mendasari gagasan pemampatan data citra, mengingat citra dengan jumlah bit

lebih rendah tentu akan membutuhkan tempat dan transmisi yang lebih hemat.

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

Mengenal Dasar Citra 19

lebar dalam jumlah piksel. Contoh pada Gambar 2.5 menunjukkan bahwa kalau

gambar apel hanya dinyatakan dalam 8 x 8 piksel, citra yang terbentuk sangat

berbeda dengan aslinya. Seandainya jumlah piksel yang digunakan lebih banyak,

tentu akan lebih mendekati dengan gambar aslinya. Contoh pada Gambar 2.6

memperlihatkan efek resolusi piksel untuk menampilkan gambar yang sama.

(a) Citra berukuran 512 x 512

piksel

(b) Citra berukuran 256 x 256

piksel

(c) Citra berukuran 128 x 128 piksel (d) Citra berukuran 64 x 64 piksel

Gambar 2.7 Efek resolusi berdasar jumlah piksel pada citra

ketika gambar disajikan dengan ukuran yang sama

Terlihat bahwa pada resolusi tertentu citra menjadi kabur kalau dinyatakan dengan

jumlah piksel yang makin sedikit.

20 Pengolahan Citra, Teori dan Aplikasi

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.

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

Tabel 2.3.

Tabel 2.3 Daftar format file gambar yang bisa dibaca oleh imread

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

Mengenal Dasar Citra 21

Format

Gambar

Ekstensi Keterangan

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

Daftar file citra pada Tabel 2.3 berlaku untuk

MATLAB.

Saat buku ini ditulis, Octave hanya mampu

membaca file citra berformat PNG. Format lain

hanya bisa dibaca dengan melibatkan utilitas lain

seperti ImageMagick. Itulah sebabnya, seluruh

contoh file citra dalam buku ini menggunakan

format PNG.

22 Pengolahan Citra, Teori dan Aplikasi

Contoh berikut digunakan untuk membaca file citra bernama mandrill.png

yang terdapat pada folder C:\Image.

>> Img = imread(’C:\Image\mandrill.png’);

>>

Dengan cara seperti itu, data citra pada file mandrill.png

disimpan di Img. Dalam hal ini, Img berupa larik yang

mengandung M baris dan N baris. Mengingat file tersebut

berisi data citra berskala keabuan, maka nilai pada setiap

elemen dalam matriks menyatakan intensitas piksel. Nilai

intensitas itu berupa bilangan bulat antara 0 sampai dengan

255.

Berbagai jenis citra (antara lain yang berskala keabuan) akan

segera dibahas.

imread juga mendukung pembacaan citra 16 bit. Namun,

pembahasan di buku ini menggunakan semua file citra

berukuran 8 bit (tipe uint8).

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:

Mengenal Dasar Citra 23

>> 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.

2.6 Menampilkan Citra

Citra dapat ditampilkan dengan mudah melalui fungsi imshow. Contoh

berikut digunakan untuk menampilkan citra yang terdapat di Img:

>> imshow(Img);

>>

Hasilnya berupa jendela yang menampilkan citra pada Img, seperti terlihat pada

Gambar 2.8.

24 Pengolahan Citra, Teori dan Aplikasi

Gambar 2.8 Contoh penampilan gambar pada Img

Apabila dikehendaki untuk menampilkan dua citra di dua jendela masing-

masing, fungsi figure perlu dipanggil terlebih dulu sebelum memanggil imshow.

Contoh:

>> Sungai = imread('C:\Image\innsbruck.png');

>> Bangunan = imread('C:\Image\altstadt.png');

>> figure(1); imshow(Sungai);

>> figure(2); imshow(Bangunan);

Hasilnya, gambar sungai ditampilkan di jendela 1 dan gambar bangunan

diletakkan di jendela 2. Gambar 2.9 memperlihatkan keadaan pada kedua jendela,

yaitu kebetulan sebagian jendela 2 menutup jendela 1.

Mengenal Dasar Citra 25

Gambar 2.9 Menampilkan dua citra di jendela masing-masing

Octave menyediakan fasilitas yang memungkinkan dua buah citra diletakkan

dalam satu jendela. Berdasarkan larik Sungai dan Bangunan di depan, dapat

dicoba untuk memberikan perintah berikut:

>> close all;

>> subplot(1,2,1); imshow(Sungai);

>> subplot(1,2,2); imshow(Bangunan);

Hasilnya dapat dilihat pada Gambar 2.10.

26 Pengolahan Citra, Teori dan Aplikasi

Gambar 2.10 Contoh pemakaian subplot

Perintah close all digunakan untuk menutup semua jendela. Adapun pada

subplot, argumen pertama menyatakan jumlah baris citra dan argumen kedua

menyatakan jumlah kolom citra dalam jendela. Argumen ketiga menyatakan

indeks citra dalam jendela yang bernilai antara 1 sampai dengan jumlah baris x

jumlah kolom.

2.7 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.

2.7.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

Mengenal Dasar Citra 27

mencapai 255 x 255 x 255 atau 16.581.375 warna. Tabel 2.4 menunjukkan contoh

warna dan nilai R,G, dan B.

Tabel 2.4 Warna dan nilai penyusun warna

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

Gambar 2.12 menunjukkan pemetaan warna dalam ruang tiga dimensi. Adapun

Gambar 2.13 menunjukkan keadaan suatu citra dan representasi warnanya.

R

B

G 0

Putih

Cyan Biru 255

255

255

Hitam

Merah Kuning

Hijau

Magenta

Gambar 2.12 Warna RGB dalam ruang berdimensi tiga

28 Pengolahan Citra, Teori dan Aplikasi

Gambar 2.13 Citra berwarna dan representasi warnanya.

Setiap piksel dinyatakan dengan nilai R, G, dan B

Perlu diketahui, sebuah warna tidak hanya dinyatakan dengan

komposisi R, G, dan B tunggal. Pada Tabel 2.4 terlihat bahwa

warna merah mempunyai R=255, G=0, dan B=0. Namun,

komposisi R=254, G=1, B=1 juga berwarna merah.

Citra berwarna pun dibaca melalui imread. Contoh:

>> Kota = imread('C:\Image\innsbruckcity.png');

Nah, sekarang dapat dicoba untuk mengenakan size pada Kota:

>> size(Kota)

ans =

747 500 3

Mengenal Dasar Citra 29

>>

Hasilnya menunjukkan bahwa Kota berupa larik berdimensi tiga, dengan dimensi

ketiga berisi tiga buah nilai. Hal inilah yang membedakan dengan citra berskala

keabuan. Secara umum, larik hasil pembacaan citra berwarna dapat digambarkan

seperti berikut.

1

M

1 N 1

2

3 Komponen B

Komponen G

Komponen R

2

2

M-1

N-1

Gambar 2.14 Hasil pembacaan citra berwarna

Dimensi ketiga menyatakan komponen R, G, B. Indeks pertama menyatakan

komponen R, indeks kedua menyatakan komponen G, dan indeks ketiga

menyatakan komponen B.

Berikut adalah cara untuk mendapatkan komponen R, G, dan B pada larik

Kota di depan:

>> R = Kota(:,:,1);

>> G = Kota(:,:,2);

>> B = Kota(:,:,3);

30 Pengolahan Citra, Teori dan Aplikasi

Untuk menampilkan gambar berwarna, imshow bisa digunakan seperti kalau

mau menampilkan gambar berskala keabuan. Contoh:

>> figure(1);

>> imshow(Kota);

Hasilnya seperti berikut.

Gambar 2.15 Citra berwarna

2.7.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

Mengenal Dasar Citra 31

antara 0 sampai dengan 255. Nilai 0 menyatakan hitam dan nilai 255 menyatakan

putih. Contoh citra berskala keabuan telah dibahas pada Subbab 2.5.

2.7.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. Sebagai contoh, perhatikan Gambar 2.16. Bagian kiri menyatakan citra

beraras keabuan, sedangkan bagian kanan adalah hasil konversi ke citra biner.

(a) Citra daun berskala keabuan (b) Citra biner

Gambar 2.16 Citra di kanan menyatakan bentuk citra di kiri

dengan mengabaikan komposisi warna

Contoh berikut menunjukkan cara membaca dan menampilkan citra biner.

>> Img = imread('c:\Image\daun_bin.png');

>> imshow(Img);

>>

Hasilnya seperti berikut.

32 Pengolahan Citra, Teori dan Aplikasi

Gambar 2.17 Tampilan citra biner

2.8 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:

𝐼 = 𝑎 𝑥 𝑅 + 𝑏 𝑥 𝐺 + 𝑐 𝑥 𝐵, 𝑎 + 𝑏 + 𝑐 = 1 (2.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:

Mengenal Dasar Citra 33

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:

𝐼 = 0,2989 𝑥 𝑅 + 0,5870 𝑥 𝐺 + 0,1141 𝑥 𝐵 (2.2)

Contoh berikut menunjukkan cara melakukan konversi dari citra berwarna ke citra

biner.

>> Img = imread('C:\Image\innsbruckcity.png');

>> Abu = uint8(0.2989 * double(Img(:,:,1)) + ...

0.5870*double(Img(:,:,2)) + ...

0.1141 * double(Img(:,:,3)));

>> imshow(Abu);

Tanda … menyatakan bahwa perintah pada baris

tersebut masih mempunyai lanjutan pada baris

berikutnya.

Tanda : berarti semua nilai.

double dipakai untuk melakukan konversi dari

tipe bilangan bulat 8 bit (uint8) ke tipe double

(yang memungkinkan pemrosesan bilangan real

berpresisi ganda).

uint8 berguna untuk mengonversi dari tipe

double ke uint8 (tipe bilangan bulat 8 bit).

Hasilnya ditunjukkan pada Gambar 2.18.

34 Pengolahan Citra, Teori dan Aplikasi

Gambar 2.18 Hasil konversi citra berwarna

ke citra berskala keabuan

Bagaimana halnya kalau dikehendaki untuk mengonversikan citra berskala

keabuan ke citra biner? Strategi yang dipakai yaitu dengan menerapkan suatu nilai

yang dikenal sebagai nilai ambang (threshold). Nilai tersebut dipakai untuk

menentukan suatu intensitas akan dikonversikan menjadi 0 atau menjadi 1. Secara

matematis, konversi dinyatakan dengan rumus:

𝑏 𝑖 = 0, 𝑖 ≥ 𝑎1, 𝑖 < 𝑎

(2.3)

Contoh berikut menunjukkan cara melakukan konversi dari citra berskala

keabuan ke dalam citra biner.

Program : kebiner.m

% KEBINER Digunakan untuk mengonversi file

Mengenal Dasar Citra 35

% daun_gray.png ke citra biner

Img = imread('c:\Image\daun_gray.png');

[tinggi, lebar] = size(Img);

ambang = 210; % Nilai ini bisa diubah-ubah

biner = zeros(tinggi, lebar);

for baris=1 : tinggi

for kolom=1 : lebar

if Img(baris, kolom) >= ambang

Biner(baris, kolom) = 0;

else

Biner(baris, kolom) = 1;

end

end

end

imshow(Biner);

Akhir Program

Sebelum mencoba program di atas, akan dibahas dulu kode yang mendasari

program. Tanda % mengawali komentar. Semua tulisan dimulai dari tanda

tersebut hingga akhir baris tidak dianggap sebagai perintah, melainkan sebagai

penjelas bagi pembaca program. Kode

Img = imread('c:\Image\daun_gray.png');

merupakan perintah untuk membaca citra daun_gray.png. Hasilnya disimpan di

Img. Lalu,

[tinggi, lebar] = size(Img);

berguna untuk mendapatkan lebar dan tinggi citra.

Pernyataan

ambang = 210;

digunakan untuk menentukan nilai ambang bagi penentuan konversi suatu piksel

menjadi 0 atau 1. Nilai ambang berkisar antara 0 sampai dengan 255.

Pernyataan

for baris=1 : tinggi

for kolom=1 : lebar

36 Pengolahan Citra, Teori dan Aplikasi

if Img(baris, kolom) >= ambang

Biner(baris, kolom) = 0;

else

Biner(baris, kolom) = 1;

end

end

end

menangani penentuan nilai 0 atau 1 pada citra biner untuk semua piksel dalam

citra (ditangani dengan dua buah for). Penentuan dilakukan melalui pernyataan if.

Dalam hal ini,

Img(baris, kolom)

menyatakan nilai intensitas piksel pada (baris, kolom).

Setelah

for baris=1 : tinggi

berakhir, maka Biner berisi citra biner. Selanjutnya, citra ditampilkan melalui

imshow(Biner);

Untuk menjalankan program di depan, berikan perintah

>> kebiner;

Hasilnya seperti berikut.

Mengenal Dasar Citra 37

Gambar 2.19 Hasil konversi daun_gray.png ke bentuk biner

Gambar 2.20 memperlihatkan berbagai bentuk hasil konversi citra dengan

menggunakan berbagai nilai ambang.

38 Pengolahan Citra, Teori dan Aplikasi

Ambang = 210 Ambang = 160 Ambang = 130

Ambang = 110 Ambang = 100 Ambang = 70

Gambar 2.20 Hasil konversi ke citra biner

dengan berbagai nilai ambang

Contoh-contoh yang telah dibahas memberikan gambaran tentang cara

mewujudkan sendiri konversi antarjenis citra. Hal tersebut tentu saja penting

untuk dipahami agar memudahkan di dalam mewujudkan sendiri penulisan

program seandainya menggunakan bahasa pemrograman yang lain. Namun,

sebagai penambah wawasan, sesungguhnya Octave menyediakan beberapa fungsi

untuk kepentingan konversi citra. Tabel 2.5 memperlihatkan dua fungsi penting

yang terkait dengan konversi citra.

Mengenal Dasar Citra 39

Tabel 2.5 Fungsi yang disediakan Octave

untuk kepentingan konversi ke aras keabuan

Fungsi Kegunaan

im2bw(I, level)

im2bw(RGB, level)

Berguna untuk mengonversikan citra berskala

keabuan (I) ataupun berwarna (RGB) ke

dalam citra biner dengan menggunakan level

sebagai ambang konversi. Di MATLAB, jika

argumen kedua (yaitu level) tidak disertakan,

nilai 0,5 secara bawaan digunakan sebagai

ambang konversi. Pada Octave, argumen

kedua harus disertakan. Nilai balik fungsi ini

berupa citra biner

rgb2gray(RGB) Berguna untuk mengonversi citra berwarna

(RGB) ke citra berskala keabuan. Nilai balik

fungsi ini berupa citra berskala keabuan

Pada beberapa contoh yang akan dibahas pada bab-bab selanjutnya, dua fungsi

pada Tabel 2.5 akan digunakan dengan tujuan untuk menyederhanakan

permasalahan dalam menuliskan kode.

Agar terbiasa dengan kedua fungsi tersebut, berikut disajikan contoh

penggunaannya. Contoh pertama:

>> Img = imread('C:\Image\daun_gray.png');

>> BW = im2bw(Img, 0.6);

>> imshow(BW);

Hasilnya seperti berikut.

40 Pengolahan Citra, Teori dan Aplikasi

Gambar 2.21 Hasil pembentukan citra biner melalui im2bw

Adapun contoh pemakaian rgb2gray:

>> RGB = imread('C:\Image\innsbruckcity.png');

>> Abu = rgb2gray(RGB);

>> imshow(Abu);

Hasilnya seperti berikut.

Mengenal Dasar Citra 41

Gambar 2.22 Hasil pembentukan citra berskala keabuan

melalui rgb2gray

2.9 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’);

42 Pengolahan Citra, Teori dan Aplikasi

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. Hasilnya

diperlihatkan pada Gambar 2.23.

Gambar 2.23 Hasil penyimpanan citra negatif_daun.png

1. Jelaskan mengenai koordinat citra.

2. Apa yang dimaksud dengan kuantisasi citra?

3. Jelaskan hubungan jumlah bit dalam kuantisasi citra dengan kompresi

data.

4. Jelaskan makna kualitas citra.

5. Jelaskan pengertian :

a) citra berwarna

Latihan

Mengenal Dasar Citra 43

b) citra berskala keabuan

c) citra biner

6. Jelaskan mekanisme untuk mengubah citra berwarna ke dalam citra

berskala keabuan.

7. Bagaimana prinsip untuk mengubah citra berskala keabuan ke citra biner?

8. Ubahlah innsbruckcity.png ke citra berskala keabuan dan kemudian

simpan dengan nama inns_gray.png.

9. Buatlah program untuk memproses citra daun_gray.png agar diperoleh

hasil seperti berikut.

10. Gunakanlah fungsi im2bw untuk mengonversikan citra innsbruckcity.png

ke dalam bentuk citra biner dengan menggunakan level sebesar 0,7, 0,5,

dan 0,3. Bagaimana kesan Anda mengenai hasil-hasil yang diperoleh?

11. Buatlah program untuk menguantisasi citra daun_gray.png dengan 2 bit.

Tampilkan hasilnya. Apakah hasilnya masih terlihat seperti aslinya? Bila

tidak, dengan menggunakan berapa bit agar gambar tersebut terlihat sesuai

dengan aslinya?