dcae8 sessi 2 pengenalam citra dasar
Pengenalan Dasar
Citra
STMIK PPKIA Pradnya Praramita
Sigit Setyowibowo, ST., MMSI
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
Citra dan nilai penyusun piksel
Notasi piksel dalam citra
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
Perbandingan isyarat analog dan
isyarat diskret
Digitalisasi citra biner 8x8 piksel untuk memperlihatkan bentuk
piksel ideal
warna hitam (0) dan putih (1)
Jangkauan nilai pada citra keabuan
Kompon
Bit per
en
Piksel
warna
1
Jangkaua
Penggunaan
n
1
0-1
Citra biner: dokumen faksimili
8
0-255
Umum: foto dan hasil pemindai
12
0-4095
Kualitas tinggi:
pemindai
14
0-16383
Kualitas profesional: foto dan hasil
pemindai
16
0-65535
Kualitas tertinggi: citra kedokteran
dan astronomi
foto
dan
hasil
Jangkauan nilai pada citra berwarna
Kompone
Bit per
n Warna
Piksel
3
4
Jangkauan
Penggunaan
24
0-1
RGB umum
36
0-4095
RGB kualitas tinggi
42
0-16383
RGB
0-255
profesional
CMYK (cetakan digital)
32
kualitas
Kuantisasi citra dengan
menggunakan berbagai bit
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
Efek resolusi berdasar jumlah piksel pada citra
ketika gambar disajikan dengan ukuran yang sama
Membaca Citra
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
Daftar format file gambar yang bisa dibaca oleh imread
Format
Eksten Keterangan
Gambar
TIFF
si
.tif, .tif Tagged Image File Format merupakan format citra yang mulamula dibuat boleh Aldus. Kemudian, dikembangkan oleh
JPEG
.jpg,
Microsoft dan terakhir oleh Adobe.
Joint Photographics Expert Group adalah format citra yang
GIF
.jpeg
.gif
dirancang agar bisa memampatkan data dengan rasio 1:16.
Graphics
Interface
Format
merupakan
format
yang
memungkinkan pemampatan data hingga 50%. Cocok untuk
citra yang memiliki area yang cukup besar dengan warna
BMP
PNG
.bmp
.png
yang sama.
Windows Bitmap merupakan format bitmap pada Windows.
Portable Network Graphics biasa dibaca ‘ping’. Asal mulanya
dikembangkan sebagai pengganti format GIF karena adanya
penerapan lisensi GIF. Mendukung pemampatan data tanpa
XWD
.xwd
menghilangkan informasi aslinya.
XWindow Dump
Contoh berikut digunakan untuk membaca file citra bernama
mandrill.png yang terdapat pada folder C:\Image.
>> Img = imread(’C:\Image\mandrill.tif’);
>>
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
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
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.tif');
>> 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 berikut
memperlihatkan keadaan pada kedua jendela, yaitu kebetulan
sebagian jendela 2 menutup jendela 1
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);
Contoh pemakaian subplot
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
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
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
0
255
255
Kuning
Warna RGB dalam ruang
berdimensi tiga
Citra berwarna dan representasi warnanya.
Setiap piksel dinyatakan dengan nilai R, G,
dan B
Catatan
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
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);
Untuk menampilkan gambar berwarna, imshow bisa digunakan
seperti kalau mau menampilkan gambar berskala keabuan.
Contoh:
>> figure(1);
>> imshow(Kota);
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.
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.
Contoh berikut menunjukkan cara membaca dan menampilkan citra biner.
>> Img = imread('c:\Image\daun_bin.tif');
>> imshow(Img);
>>
Tampilan citra biner
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:
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 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:
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)) + ...
Catatan
Tanda … menyatakan bahwa perintah pada
0.1141 * double(Img(:,:,3)));
baris tersebut masih mempunyai lanjutan
>>
imshow(Abu);
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).
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:
% KEBINER Digunakan untuk mengonversi file
%
daun_gray.png ke citra biner
Img = imread('c:\Image\daun.tif');
[tinggi, lebar] = size(Img);
ambang = 160; % 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);
Untuk menjalankan program di depan, berikan perintah
>> kebiner;
Hasil konversi daun.tif ke bentuk biner
Hasil konversi ke citra biner dengan berbagai nilai ambang
Fungsi yang disediakan Octave untuk kepentingan
konversi ke aras keabuan
Fungsi
im2bw(I, level)
Kegunaan
untuk
mengonversikan
Berguna
im2bw(RGB, level)
berskala keabuan (I) ataupun berwarna (RGB)
citra
ke dalam citra biner dengan menggunakan
level sebagai ambang konversi. Di MATLAB,
jika
argumen
disertakan,
kedua
nilai
0,5
(yaitu
level)
secara
tidak
bawaan
digunakan sebagai ambang konversi. Pada
Octave, argumen kedua harus disertakan.
rgb2gray(RGB)
Nilai balik fungsi ini berupa citra biner
Berguna untuk mengonversi citra berwarna
(RGB) ke citra berskala keabuan. Nilai balik
fungsi ini berupa citra berskala keabuan
Agar terbiasa dengan kedua fungsi tersebut, berikut disajikan
contoh penggunaannya. Contoh pertama:
>> Img = imread('C:\Image\daun.tif');
>> BW = im2bw(Img, 0.6);
>> imshow(BW);
Hasilnya seperti berikut:
Hasil pembentukan citra biner melalui im2bw
Adapun contoh pemakaian rgb2gray:
>> RGB =
imread('C:\Image\innsbruckcity.png');
>> Abu = rgb2gray(RGB);
>> imshow(Abu);
Hasilnya seperti berikut.
Hasil pembentukan citra berskala keabuan melalui
rgb2gray
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.tif');
>> X = 255 – Img;
>> imwrite(X, ’negatif_daun.png’);
Hasil penyimpanan citra negatif_daun.png
Latihan:
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 :
6.
citra berwarna
7.
citra berskala keabuan
8.
citra biner
9.
Jelaskan mekanisme untuk mengubah citra berwarna ke dalam citra
berskala keabuan.
10. Bagaimana prinsip untuk mengubah citra berskala keabuan ke
citra biner?
11. Ubahlah innsbruckcity.png ke citra berskala keabuan dan
kemudian simpan dengan nama inns_gray.png.
12. Buatlah program untuk memproses citra daun_gray.png agar
diperoleh hasil seperti berikut.
13. 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?
14. 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?
Citra
STMIK PPKIA Pradnya Praramita
Sigit Setyowibowo, ST., MMSI
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
Citra dan nilai penyusun piksel
Notasi piksel dalam citra
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
Perbandingan isyarat analog dan
isyarat diskret
Digitalisasi citra biner 8x8 piksel untuk memperlihatkan bentuk
piksel ideal
warna hitam (0) dan putih (1)
Jangkauan nilai pada citra keabuan
Kompon
Bit per
en
Piksel
warna
1
Jangkaua
Penggunaan
n
1
0-1
Citra biner: dokumen faksimili
8
0-255
Umum: foto dan hasil pemindai
12
0-4095
Kualitas tinggi:
pemindai
14
0-16383
Kualitas profesional: foto dan hasil
pemindai
16
0-65535
Kualitas tertinggi: citra kedokteran
dan astronomi
foto
dan
hasil
Jangkauan nilai pada citra berwarna
Kompone
Bit per
n Warna
Piksel
3
4
Jangkauan
Penggunaan
24
0-1
RGB umum
36
0-4095
RGB kualitas tinggi
42
0-16383
RGB
0-255
profesional
CMYK (cetakan digital)
32
kualitas
Kuantisasi citra dengan
menggunakan berbagai bit
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
Efek resolusi berdasar jumlah piksel pada citra
ketika gambar disajikan dengan ukuran yang sama
Membaca Citra
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
Daftar format file gambar yang bisa dibaca oleh imread
Format
Eksten Keterangan
Gambar
TIFF
si
.tif, .tif Tagged Image File Format merupakan format citra yang mulamula dibuat boleh Aldus. Kemudian, dikembangkan oleh
JPEG
.jpg,
Microsoft dan terakhir oleh Adobe.
Joint Photographics Expert Group adalah format citra yang
GIF
.jpeg
.gif
dirancang agar bisa memampatkan data dengan rasio 1:16.
Graphics
Interface
Format
merupakan
format
yang
memungkinkan pemampatan data hingga 50%. Cocok untuk
citra yang memiliki area yang cukup besar dengan warna
BMP
PNG
.bmp
.png
yang sama.
Windows Bitmap merupakan format bitmap pada Windows.
Portable Network Graphics biasa dibaca ‘ping’. Asal mulanya
dikembangkan sebagai pengganti format GIF karena adanya
penerapan lisensi GIF. Mendukung pemampatan data tanpa
XWD
.xwd
menghilangkan informasi aslinya.
XWindow Dump
Contoh berikut digunakan untuk membaca file citra bernama
mandrill.png yang terdapat pada folder C:\Image.
>> Img = imread(’C:\Image\mandrill.tif’);
>>
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
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
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.tif');
>> 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 berikut
memperlihatkan keadaan pada kedua jendela, yaitu kebetulan
sebagian jendela 2 menutup jendela 1
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);
Contoh pemakaian subplot
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
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
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
0
255
255
Kuning
Warna RGB dalam ruang
berdimensi tiga
Citra berwarna dan representasi warnanya.
Setiap piksel dinyatakan dengan nilai R, G,
dan B
Catatan
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
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);
Untuk menampilkan gambar berwarna, imshow bisa digunakan
seperti kalau mau menampilkan gambar berskala keabuan.
Contoh:
>> figure(1);
>> imshow(Kota);
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.
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.
Contoh berikut menunjukkan cara membaca dan menampilkan citra biner.
>> Img = imread('c:\Image\daun_bin.tif');
>> imshow(Img);
>>
Tampilan citra biner
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:
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 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:
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)) + ...
Catatan
Tanda … menyatakan bahwa perintah pada
0.1141 * double(Img(:,:,3)));
baris tersebut masih mempunyai lanjutan
>>
imshow(Abu);
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).
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:
% KEBINER Digunakan untuk mengonversi file
%
daun_gray.png ke citra biner
Img = imread('c:\Image\daun.tif');
[tinggi, lebar] = size(Img);
ambang = 160; % 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);
Untuk menjalankan program di depan, berikan perintah
>> kebiner;
Hasil konversi daun.tif ke bentuk biner
Hasil konversi ke citra biner dengan berbagai nilai ambang
Fungsi yang disediakan Octave untuk kepentingan
konversi ke aras keabuan
Fungsi
im2bw(I, level)
Kegunaan
untuk
mengonversikan
Berguna
im2bw(RGB, level)
berskala keabuan (I) ataupun berwarna (RGB)
citra
ke dalam citra biner dengan menggunakan
level sebagai ambang konversi. Di MATLAB,
jika
argumen
disertakan,
kedua
nilai
0,5
(yaitu
level)
secara
tidak
bawaan
digunakan sebagai ambang konversi. Pada
Octave, argumen kedua harus disertakan.
rgb2gray(RGB)
Nilai balik fungsi ini berupa citra biner
Berguna untuk mengonversi citra berwarna
(RGB) ke citra berskala keabuan. Nilai balik
fungsi ini berupa citra berskala keabuan
Agar terbiasa dengan kedua fungsi tersebut, berikut disajikan
contoh penggunaannya. Contoh pertama:
>> Img = imread('C:\Image\daun.tif');
>> BW = im2bw(Img, 0.6);
>> imshow(BW);
Hasilnya seperti berikut:
Hasil pembentukan citra biner melalui im2bw
Adapun contoh pemakaian rgb2gray:
>> RGB =
imread('C:\Image\innsbruckcity.png');
>> Abu = rgb2gray(RGB);
>> imshow(Abu);
Hasilnya seperti berikut.
Hasil pembentukan citra berskala keabuan melalui
rgb2gray
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.tif');
>> X = 255 – Img;
>> imwrite(X, ’negatif_daun.png’);
Hasil penyimpanan citra negatif_daun.png
Latihan:
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 :
6.
citra berwarna
7.
citra berskala keabuan
8.
citra biner
9.
Jelaskan mekanisme untuk mengubah citra berwarna ke dalam citra
berskala keabuan.
10. Bagaimana prinsip untuk mengubah citra berskala keabuan ke
citra biner?
11. Ubahlah innsbruckcity.png ke citra berskala keabuan dan
kemudian simpan dengan nama inns_gray.png.
12. Buatlah program untuk memproses citra daun_gray.png agar
diperoleh hasil seperti berikut.
13. 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?
14. 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?