Studi Informatika

Panduan Pembelajaran Ilmu Teknologi & Komputer

Saturday, May 27, 2017

PENGENALAN DASAR CITRA

Sebelum kita membahas pada materi 'Pengenalan Dasar Citra' maka sebaiknya kita sudah membahas materi sebelumnya yaitu 'Pengantar Pengolahan Citra'. Dimana pada materi tersebut telah membahas : pengertian pengolahan citra digital, aplikasi pengolahan citra, dan prinsip dasar dalam pengolahan citra.

Baca juga : Pengantar Pengolahan Citra


Yang akan dibahas pada materi ini adalah :
  • Representasi Citra Digital
  • Kuantisasi Citra
  • Kualitas Citra
  • Membaca Citra
  • Mengetahui Ukuran Citra
  • Mengenal Jenis Citra
  • Mengonversi Jenis Citra
  • Menyimpan Citra

Representasi Citra Digital
Citra digital dibentuk oleh kumpulan titik yang dinamakan piksel (Pixel atau picture element) Setiap piksel digambarkan sebagai satu kotak kecil dan setiap piksel mempunyai koordinat posisi. Sistem koordinat yang dipakai untuk menyatakan citra digital ditunjukkan pada gambar dibawah.
Sistem koordinat citra berukuran M x N
(M baris & 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 ;
  • piksel pojok kiri-atas mempunyai koordinat (0,0) dan piksel pada pojok kanan-bawah mempunyai koordinat (N-1, M-1). 
Catatan : 
 Dengan menggunakan notasi pada Octave dan MATLAB, citra dinyatakan dengan f(y, x)

Gambar citra dan  nilai penyusun piksel


Gambar 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 kedalam bentuk diskret. Untuk mempermudah pemahaman konsep ini, lihatlah pada gambar dibawah, (a) menyatakan isyarat analog menurut perjalanan waktu t, (b) menyatakan isyarat diskret.

Gambar perbandingan isyarat analog dan isyarat digital

Pada isyarat digital, nilai intensitas citra dibuat diskret atau terkuantisasi dalam jumlah nilai bulat. Citra digital akan lebih baik, apabila ukuran piksel diperkecil atau jumlah piksel diperbanyak.

Bagaimana kalau gambar mengandung unsur warna (tidak sekedar hitam putih)? Prinsipnya sama saja, tetapi sebagai pengecualian warna hitam diberikan tiga unsur warna dasar, yaitu merah (R = red), hijau (H = green), dan biru (B = blue). Seperti halnya pada citra monokrom (hitam-putih) standar, dengan variasi intesitas 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 yang sangat terbatas, yakni jauh dibawah enam belas juta lebih tersebut.

Tabel jangkauan nilai pada citra keabuan
 Tabel jangkauan nilai pada citra berwarna

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 dibawah menunjukan citra dikuantisasi dengan menggunakan 8,5,4,3,2, dan 1 bit.

Pada kuantisasi dengan 1 bit, jumlah level sebanyak 2(dua pangkat satu). Oleh karna 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.


Kualitas Citra
Disamping 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 MxN dengan M menyatakan tinggi dan N menyatakan lebar dalam jumlah piksel.

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

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 di cetak dengan jumlah piksel sebanyak 300 sepanjang satu inci. Berdasarkan hal itu, maka citra dengan resolusi ruang spasial sebesar 300 dpi dicetak dikertas dengan ukuran lebih kecil daripada yang mempunyai resolusi ruang sebesar 150 dpi, meskipun kedua gambar memiliki resolusi piksel yang sama.



Membaca Citra
Untuk kepentingan memudahkan dalam memahami hasil proses dalam 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 ditujukan pada tabel dibawah ini :

Tabel daftar format file gambar yang bisa dibaca oleh imread
Dan

Catatan :

Contoh digunakan untuk membaca filecitra bernama mandrill.png yang terdapat pada folder C:\Image.
>>Img = imread(’C:\Image\mandrill.png’);
>>
Catatan :







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 kolom piksel.
Untuk mendapatkan jumlah baris dan kolom secara tersendiri, perlu diberikan perintah sebagai 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 nerisi jumlah baris pada larikImg dan jum_kolom berisi jumlah kolom pada larikImg.



Mengenal Jenis Citra
Ada 3 jenis citra yang umum digunakan dalam proses citra, ketiga jenis citra tersebut yaitu citra berwarna, citra berskala keabuan, dan citra biner.

1.  Citra Berwarna
Citra berwarna atau bisa 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 akan disajikan mencapai 255 x 255 x 255 atau 16.581.375 warna. Berikut dibawah tabel menunjukkan contoh warna dan nilai R,G, dan B.

Tabel warna dan nilai penyusun warna


Ruang RGB dalam ruang berdimensi tiga


Gambar citra berwarna dan representasi warnanya, setiap piksel dinyatakan dengan nilai R, G, dan B


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

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.

Gambar hasil pembacaan citra berwarna

Dimensi ketiga menyatakan komponen R, G, B  Indeks pertama menyatakan komponen R, indeks kedua menyatakan komponen G, dan indeks ketiga menyataka komponen B.
Berikut adalah cara untuk mendapatkan komponen R, G, dan B pada larik kota didepan :

>> R = Kota(:,:,1);
>> G = Kota(:,:,2);
>> B = Kota(:,:,3);

Untuk menampilkan gambar, imshow bisa digunakan seperti kalau mau menampilkan gambar berskala keabuan. Contoh :

>>figure(1);
>>imshow(Kota);

Hasilnya seperti berikut :


2.  Citra Berskala Keabuan
Sesuai dengan nama yang melekat, citra jenis ini mengenai 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 255 menyatakan putih.
Contoh citra berskala keabuan juga bisa dilihat dari konversi citra yang mengubah citra berwarna menajadi citra keabuan atau sebaliknya.


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 1 menyatakan warna putih. Citra jenis ini banyak dipakai dalam pemrosesan citra, misalnya untuk kepentingan memproleh tepi bentuk suatu objek. Sebagai contoh, perhatikan gambar dibawah berikut : bagian kiri menyatakan citra beraras keabuan, sedangkan bagian kanan adalah hasil konversi kecitra biner.



 Gambar citra dikanan menyatakan bentuk citra dikiri dengan mengabaikan komposisi warna

Contoh cara membaca dan menampilakn biner.
>>Img = imread('c:\Image\daun_bin.png');
>>imshow(Img);
>>

Hasilnya seperti berikut.




Mengonversi Jenis Citra
Dalam praktik, seringkali diperlukan untuk mengonversi citra berwarna kedalam bentuk citra berskala keabuan meningat banyak pemrosesan citra yang bekerja pada skala keabuan. Namun, terkadang citra berskala keabuan pun perlu dikonversikan kecitra biner, mengingat beberapa operasi dalam pemrosesan citra berjalan pada citra biner.

Bagaimana cara mengubah citra berwarna kedalam citra berskala keabuan?
Secara umum citra berwarna dapat dikonversikan kecitra 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 dan B sebagai berikut :
R = 50
G = 70
B = 61
Jika a, b, dan c pada persamaan 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 menunjukkan cara melakukan konversi dari citra berwarna kecitra 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);

Catatan :

Hasilnya sebagai berikut.

Bagaimana halnya kalau dikehendaki untuk mengonversikan citra berskala keabuan ke citra biner? Strategi yang dipakai yaitu dengan menerapkan suatu nilai yang dikenal dengan nilai ambang (threshold). Nilai tersebut dipakai untuik menentukan suatu intensitas akan dikonversikan menjadi 0 atau menjadi 1. Secara matematis, konversi dinyatakan dengan rumus :
Contoh berikut menunjukkan cara melakukan konversi dari citra berskala keabuan ke dalam citra biner.

% KEBINER Digunakan untuk mengonversi file
% daun_gray.png ke citra biner
Img = imread('c:\image\andri.jpg');
[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);


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 diImg. Lalu,

[tinggi, lebar] = size(Img);

Berguna untuk mendapatkan lebar dan tinggi citra.

Pernyataan

for baris=1 : tinggi
for kolom=1 : lebar
ifImg(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.
Gambar hasil konversi daun_grey.png ke bentuk biner
Gambar tersebut diatas memperlihatkan berbagai bentuk hasil konversi citra dengan menggunakan berbagai nilai ambang.

Gambar 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 dibawah ini memperlihatkan dua fungsi penting yang terkait dengan konversi citra.

Tabel fungsi yang disediakan Octave untuk kepentingan konversi ke aras keabuan

Agar terbiasa dengan kedua fungsi tersebut, berikut disajikan contoh penggunaanya.
Contoh pertama :

>>Img= imread('C:\Image\daun_gray.png');
>> BW = im2bw(Img, 0.6);
>>imshow(BW);

Hasilnya seperti berikut.

Gambar hasil pembentukan citra biner melalui im2bw

Adapun contoh pemakaian rgb2gray :

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

Hasilnya seperti berikut :

Gambar 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) ataupunlarik berdimensi tiga (citra RGB).
Contoh:

>>Img = imread('C:\Image\daun_gray.png');
>>X = 255 – Img;
>>imwrite(X, ’negatif_daun.png’);
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 dibawah ini:

Gambar hasil penyimpanan citra negatif_daun.png



Itulah pembahasan mengenai pengenalan dasar citra yang telah dibahas di atas, setelah kita selesai membahas beberapa faktor-faktor dari dasar-dasar citra diatas tersebut, maka kita akan masuk pada langkah atau pembahasan berikutnya yaitu "OPERASI PIKSEL PADA HISTOGRAM" untuk masuk pada pembahasan ini silahkan klik link dibawah ini.

Baca juga : Operasi Piksel dan Histogram
Saturday, May 27, 2017 May 27, 2017 - tanpa komentar

No comments:

Post a Comment