Oleh:
Reynal Kwandou
H011181326
Citra digital berupa suatu matriks dimana indeks baris dan kolomnya menyatakan suatu
titik pada citra tersebut dan elemen matriksnya (yang disebut sebagai elemen gambar/ pixel/
piksel/ pels/ picture element) menyatakan tingkat keabuan pada titik tersebut. Setiap piksel
memiliki koordinat sesuai posisinya dalam citra. Koordinat ini biasanya dinyatakan dalam
bilangan bulat positif, yang dapat dimulai dari 0 atau 1 tergantung pada sistem yang digunakan.
Setiap piksel juga memiliki nilai berupa angka digital yang merepresentasikan informasi yang
diwakili oleh piksel tersebut.
2. Jenis-Jenis Citra
Selain citra digital dan kontinu, citra juga dapat dibedakan berdasarkan tingkatan
warnanya, sebagai berikut:
a. Citra Biner ( Monokrom )
Citra biner atau monokrom adalah cittra yang setiap pikselnya hanya memiliki dua
kemungkinan derajat keabuan, yakni 0 (hitam) dan 1 (putih). Proses pembineran dilakukan
dengan membulatkan ke atas atau ke bawah untuk setiap nilai keabuandari piksel yang berada
di harga ambang. Metode untuk menentukan besarnya harga ambang disebut thresholding.
Setiap titik membutuhkan 1 bit di mana 1 byte dapat menampung 8 titik. Berikut adalah
contoh representasi citra biner:
1 1 0 1 1 0 1 1
[ 1
1
1
1
1
1
1
1
0
0
0
0
1
0
1
1
1
0
1
1
0
0
0
0
1
1
1
1
1
1
1
1
]
Pada model citra cahaya, jika ada cahaya (=1) maka warna putih sedangkan jika tidak
ada cahaya (=0) maka warna hitam . Pada model citra tinta cat, jika ada cat (=1) maka warna
hitam, sedangkan jika tidak ada cat (=0) maka warna putih
t=[];
for j=0:5:200
A=[repmat(j,100,20)];
t=[t A];
end
imshow(uint8(t));
Derajat keabuan memiliki nilai tidak hanya skala 0 sampai 255. Tergantung pada nilai
piksel yang dimiliki oleh citra. Skala keabuan (grayscale = G) di bagi menjadi sejumlah level
yang memiliki nilai berupa bilang bulat dan merupakan hasil perpangkatan dua (G = 2m)
Setiap warna dasar menggunakan penyimpanan 8 bit = 1 byte. Jadi setiap pikselnya
membutuhkan 3 byte. Penyimpanan citra true color di dalam memori berbeda dengan citra
grayscale (tingkat keabuan). Setiap piksel dari citra grayscale 256 gradasi warna yang
diwakili oleh 1 byte. Sedangkan satu piksel citra RGB diwakili oleh 3 byte yang masing-
masing merepresentasikan warna merah, hijau, biru. Berikut adalah contoh representasi citra
warna:
49 55 56 56 52 53 64 76 82 79 78 78 66 80 77 80 87 77
[ ][ ][ ]
58 60 60 60 55 57 93 93 91 91 86 86 81 93 96 99 86 85
58 58 54 53 55 56 88 82 88 90 88 89 83 83 91 94 92 88
83 78 72 69 68 69 125 119 113 108 111 110 135 128 126 112 107 106
88 91 91 84 83 82 137 136 132 128 126 120 141 129 129 117 115 101
69 76 83 78 76 75 105 108 114 114 118 113 95 99 109 108 112 109
61 69 73 78 76 76 96 103 112 108 111 107 84 93 107 101 105 102
Indeks R G B
0 0 0 0
1 51 52 60
…
…
…
4 255 255 255
…
…
…
10 250 10 240
Setting warna display pada MS Window biasanya format 16 colors, 256 colors, high
color, true color, yang merupakan citra warna berindeks dengan ukuran palet masing-masing
4 bit, 8 bit, 16 bit dan 24 bit.
Ada bermacam format representasi citra dalam file, seperti bmp, gif, tif, jpg, dan
sebagainya. Format BMP merupakan format yang kurang efisien, karena semua informasi
angka dalam baris disimpan semua. Misalkan ukuran header adalah H byte, ukuran citra
100x100 byte monokrom, maka ukuran file bmp tersebut adalah H + data citra = H + 10000
Byte. Suatu citra format BMP 8 bit berukuran 200 x 100 maka memori yang dibutuhkan
untuk menyimpan data citra tersebut (tanpa header) sebesar memori 19,5KB.
4. Resolusi Citra
Resolusi citra merupakan tingkat detailnya suatu citra. Semakin tinggi resolusinya
semakin tinggi pula tingkat detail dari citra tersebut. Ada dua jenis resolusi yang perlu diketahui,
yaitu:
a. Resolusi Spasial
Resolusi spasial ini merupakan ukuran halus atau kasarnya pembagian kisi-kisi baris
dan kolom pada saat sampling. Resolusi ini dipakai untuk menentukan jumlah pixel per
satuan panjang. Biasanya satuan resolusi ini adalah dpi (dot per inchi). Resolusi ini sangat
berpengaruh pada detail dan perhitungan gambar.
b. Resolusi Kecemerlangan
Resolusi kecemerlangan (intensitas/ brightness) atau biasanya disebut dengan
kedalaman bit/ kedalaman warna (Bit Depth) adalah ukuran halus kasarnya pembagian
tingkat gradasi warna saat dilakukan kuantisasi. Bit Depth menentukan berapa banyak
informasi warna yang tersedia untuk ditampilkan dalam setiap piksel. Semakin besar
nilanya, semakin bagus kualitas gambar yang dihasilkan dan tentu ukuran juga semakin
besar.
4.1. Fungsi Pengolahan Citra Digital
Berikut adalah fungsi pengolahan citra antara lain:
a. Digunakan sebagai proses memperbaiki kualitas citra agar mudah diinterpretasi oleh
manusia atau computer.
b. Digunakan untuk teknik pengolahan citra dengan mentrasformasikan citra menjadi citra
lain, contoh: pemampatan citra (image compression).
c. Digunakan sebagai proses awal (preprocessing) dari komputer visi.
Pengolahan citra mempunyai aplikasi yang sangat luas dalam berbagai bidang
kehidupan. Di bawah ini disebutkan beberapa aplikasi dalam beberapa bidang.
a. Bidang perdagangan
Pembacaan kode barang (bar code) yang tertera pada barang (umum digunakan di
pasar swalayan/supermarket).
Mengenali huruf/angka pada suatu formulir secara otomatis.
b. Bidang militer
Mengenali sasaran peluru kendali mela lui sensor visual.
Mengidentifikasi jenis pesawat musuh.
c. Bidang kedokteran
Pengolahan citra sinar X untuk mammografi (deteksi kanker payudara)
Mendeteksi kelainan tubuh dari foto sinar X.
Rekonstruksi foto janin hasil USG
d. Bidang biologi
Pengenalan jenis kromosom melalui gambar mikroskopik
e. Komunikasi data
Pemampatan citra yang ditransmisi.
f. Hiburan
Pemampatan video (MPEG)
g. Robotika
Visualy-guided autonomous navigation
h. Hukum
Pengenalan sidik jari
Pengenalan foto narapidana.
BAB II
DASAR-DASAR PENGOLAHAN CITRA
1. Memulai MATLAB
Pertama-tama, buka aplikasi MATLAB.
Command windows (layar perintah) digunakan untuk menjalankan program atau perintah
yang dibuat pada layar editor matlab. Pada layar ini dapat diakses perintah maupun komponen
pendukung yang ada pada MATLAB secara langsung. Salah satu ciri dari command windows
ditandai dengan tanda prompt (>>).
Setelah itu, MATLAB siap dijalankan dengan menuliskan perintah yang diinginkan
2. Membaca Citra
Pertama-tama copy sebuah gambar lalu tempatkan kedalam folder directory MATLAB,
yaitu pada C:\ MATLAB \R2018a\bin. Contohnya gambar dengan nama ‘kelinci’ seperti berikut
ini.
Selanjutnya, untuk membaca citra perintah yang digunakan pada MATLAB adalah
perintah imread yang berarti image read. Sintaksnya yaitu:
imread(‘nama_file’)
Dalam menuliskan nama file harus disertai dengan tipe dari file gambar tersebut, seperti .jpg,
.bmp, .png, dsb. Seperti pada contoh berikut:
>> A=imread(‘kelinci.jpg’)
Lalu labeli nama dari gambar tersebut di MATLAB. Setelah ‘menekan enter’ maka akan
muncul matriks seperti berikut ini
Karena dibagian sebelah kanan command window tidak bisa menampilkan jumlah kolom
matriks, lanjutan kolom matriks akan berlanjut dibagian bawah seperti berikut ini
Untuk melihat ukuran dimensi baris dan kolom dari file citra tersebut dapat digunakan
sintaks sebagai berikut:
>>size(A)
3. Menampilkan Citra
Untuk membaca citra perintah yang digunakan pada MATLAB adalah perintah imshow
yang berarti image show. Sintaksnya yaitu:
>>imshow(A)
Variabel ‘A’ adalah label dari gambar tersebut di MATLAB. Setelah ‘menekan enter’
maka akan muncul tampilan seperti berikut ini
informasi tambahan gambar
>>Imfinfo (‘nama_file’)
Untuk mengubah warna citra atau mengubah tampilan citra menjadi hitam putih dapat
menggunakan sintaks:
Fungsi subplot(x,y,z) digunakan untuk menampilkan gambar dengan baris dan kolom
tertentu, dimana:
x = bilangan yang menyatakan banyaknya baris yang diinginkan
y = bilangan yang menyatakan banyaknya kolom yang diinginkan
z = bilangan yang menyatakan urutan gambar yang diinginkan
Fungsi title digunakan untuk memberikan judul yang dinginkan pada gambar yang
ditampilkan.
6. Mencerminkan Citra
Mencerminkan citra secara vertikal horizontal dan terbalik
>> f=imread(‘kelinci.jpg’);
>> g=f(end:-1:1,:,:)
>> h=f(:,end:-1:1,:,:)
>> j=f(end:-1:1,:,:,end:-1:1,:,:)
>> subplot(2,2,1)
>> imshow(f);
>> title(‘gambar palsu)
>> subplot(2,2,2)
>> imshow(g);
>> title(‘gambar asli’)
>> subplot(2,2,3)
>> imshow(h);
>> title(‘gambar terbalik lagi)
>> subplot(2,2,4)
>> imshow(j);
>> title(‘gambar terbalik lainnya’)
>> f=imread(‘nama_file’);
>> g=f(a:b,c:d,:);
>> imshow(g)
15 0 4 10 25
[
C= 0 20 15 15 10
14 0 4 10 20 ]
Dengan menggunakan perintah diatas, matriks tersebut akan terpotong seperti berikut
Sehingga jika diberikan suatu citra, citra tersebut juga dapat dipotong melalu matriksnya
seperti berikut
>> A = imread ('kelinci.jpg');
>> B = A(1:150,100:200,:);
>> subplot(1,2,1)
>> imshow (A);
>> title('Gambar Asli')
>> subplot (1,2,2)
>> imshow(B);
>>title('Gambar Hasil Crop')
Dengan memanfaatkan indeks dalam matriks , sebuah gambar dapat diolah dengan begitu
banyak cara . Salah satu cara lainnya adalah membalik, memutar dan memotong gambar dan kita
dapat mengacak susunan suatu gambar. Agar teknik pengacakan gambar ini dapat lebih dipahami
maka terlebih dahulu akan dibuat suatu contoh gambaran pengacakan dengan menggunakan matriks.
Dapat dilihat bahwa perintah (:, [3:4 1:2] ) membagi dua kolom matriks yaitu kolom 1 dan 2
dengan kolom 3 dan 4 kemudian menukar posisi kolom 3 dan 4 menjadi kolom ke 1 dan 2, dan
sebaliknya. Citra yang direpresentasikan dalam bentuk matriks dapat diacak barisnya, kolomnya
ataupun baris dan kolomnya.
a. Mengacak baris
Untuk mengacak baris citra dapat digunakan perintah berikut ini:
>> a=imread('kelinci.jpg');
>> size (a)
>> b=a([84:168 1:83],:,:);
>> subplot(1,2,1)
>> imshow(a);
>> title('Gambar Asli')
>> subplot(1,2,2)
>> imshow(b);
>> title('Baris teracak')
Jika ingin semua gambar hasil pengacakan disatukan, maka dapat dituliskan perintah
lengkap seperti berikut
>>a=imread('kelinci.jpg');
>>size (a)
>>b=a([84:168 1:83],:,:);
>>c=a(:,[151:300 1:150],:);
>>d=a([85:168 1:84],[151:300 1:150],:);
>>subplot(2,2,1)
>>imshow(a);
>>title('Gambar Asli')
>>subplot(2,2,2)
>>imshow(b);
>>title('Mengacak Baris')
>>subplot(2,2,3)
>>imshow(c);
>>title('Mengacak Kolom')
>>subplot(2,2,4)
>>imshow(d);
>>title('Mengacak Baris & Kolom')
9. Menyusutkan Citra
Dapat dilihat bahwa perintah A(1:2:6,1:2:6,:) menyebabkan jumlah baris dan kolom dari
matriks menjadi setengahnya yaitu 3x3 dimana 1:2:6 menandakan bahwa baris dan kolom yang
terambil pada A ialah yang terletak pada baris/kolom ke-1, baris/kolom ke 1+2, sampai
baris/kolom ke 1+2+2 karena baris/kolom ke 1+2+2+2 tidak ada karena lebih dari 6 dimana
matriks hanya berukuran 6x6. Citra dapat disusutkan ke bawah ataupun ke samping.
>> G = (F)/2
G =
1 1.5 0.5 2.5 3
2.5 1.5 3.5 3.5 0.5
1 3 1.5 2.5 1.5
0.5 2 1.5 1 2
>> H = (F)*2
H =
4 6 2 10 12
10 6 14 14 2
4 12 6 10 6
2 8 6 4 8
Berdasarkan contoh-contoh matriks diatas dapat dilihat bahwa perintah G = (F)/2
menyebabkan semua elemen matriks A dibagi 2. Perintah H = (F)*2 menyebabkan semua
elemen matriks A dikali 2. Hal ini juga dapat diterapkan dalam citra untuk membuat citra
menjadi semakin gelap atau terang yaitu dengan mengubah nilai-nilai elemen matriks citra.
Semakin kecil nilai elemennya maka akan semakin gelap dan semakin besar nilai elemennya
maka akan semakin terang citra yang dihasilkan.
Berikut adalah sintaks transformasi intensitas dengan menggunakan operasi dasar
matematika:
>> F=imread(‘landskep.jpg’);
>> G=(F)/2;
>> H=(F)*2;
>> subplot(2,2,1);
>> imshow(g); title(‘Gambar Dibagi’);
>> subplot(2,2,2);
>> imshow(h); title(‘Gambar Dikali’);
2. Transformasi Logaritma
g=c*log (1+double(f))
>> f=imread(‘pemandangan.jpeg’);
>> g=99*log(1+double(f));
>> subplot(1,2,1);
>> imshow(f); title(‘Gambar Asli’);
>> subplot(1,2,2);
>> imshow(g); title(‘Gambar logaritma’)
Sehingga akan menampilkan tampilan seperti berikut
4) 0 0 0 0 1 0 1 0 1 0 0 0 2(0)+0(0)+2(0)+1(0) = 0
2021
5) 0 0 0 0 1 0 1 0 1 0 0 0 2(0)+0(0)+2(0)+1(1) = 1
2021
6) 0 0 0 0 1 0 1 0 1 0 0 0 2(0)+0(0)+2(1)+1(0) = 2
2021
7) 0 0 0 0 1 0 1 0 1 0 0 0 2(0)+0(1)+2(0)+1(1) = 1
2021
8) 0 0 0 0 1 0 1 0 1 0 0 0 2(1)+0(0)+2(1)+1(0) = 4
2021
9) 0 0 0 0 1 0 1 0 1 0 0 0 2(0)+0(1)+2(0)+1(1) = 1
2021
10) 0 0 0 0 1 0 1 0 1 0 0 0 2(1)+0(0)+2(1)+1(0) = 4
2021
11) 0 0 0 0 1 0 1 0 1 0 0 0 2(0)+0(1)+2(0)+1(0) = 0
2021
12) 0 0 0 0 1 0 1 0 1 0 0 0 2(1)+0(0)+2(0)+1(0) = 2
2021
Maka hasil konvulusinya adalah 0 1 2 1 4 1 4 0 2
j= imfilter(f,g,’conv’,’full’)
1) 1 0 3 0 0 0 0 0
2 0 1 0 0 1 0
0 0 0 0 0
0 0 0 0 0
2) 0 1 0 3 0 0 0 0 0
0 2 0 1 0 1 0
0 0 0 0 0
0 0 0 0 0
3) 0 0 1 0 3 0 0
0 0 2 0 1 1 0 0 0 1
0 0 0 0 0
0 0 0 0 0
4)
0 0 0 1 0 3 0
0 0 0 2 1 1 0 0 0 1 2
0 0 0 0 0
0 0 0 0 0
5). 0 0 0 0 0 0 0 1 2
1 0 3 0 0 1 0 0
2 0 1 0 0 0 0
0 0 0 0 0
6). 0 0 0 0 0 0 0 1 2
0 1 0 3 0 1 0 0 0
0 2 0 1 0 0 0
0 0 0 0 0
7).
0 0 0 0 0 0 0 1 2
0 0 1 0 3 1 0 0 0 3
0 0 2 0 1 0 0
0 0 0 0 0
0 0 0 0 0 0 0 1 2
0 0 0 1 1 3 0 0 0 3 1
8). 0 0 0 2 0 1 0
0 0 0 0 0
0 0 0 0 0
9). 0 0 1 2
0 0 0 1 0
1 0 3 0 0 0 0 0 0 3 1
2 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 2
0 0 0 1 0 0 0 3 1
10).
0 1 0 3 0 0 0 0 0
0 2 0 1 0 0 0
11). 0 0 0 0 0
0 0 0 1 0 0 0 1 2
0 0 1 0 3 0 0 0 0 3 1
0 0 2 0 1 0 0 0 0 0
12). 0 0 0 0 0 0 0 1 2
0 0 0 1 0 0 0 3 1
0 0 0 1 0 3 0 0 0 0 0
0 0 0 2 0 1 0
Hasil
Konvolusi
C = imfilter(a,b,’conv’,’full’)
Rumus Korelasi:
∞
c [ n ]= ∑ a [ k ] b[n+k ]
k=−∞
1) 010101
1024 dibuat sejajar
2) zero padding
3) 0 0 0 0 1 0 1 0 1 0 0 0 1(0)+0(0)+2(0)+4(0) = 0
1024
4) 0 0 0 0 1 0 1 0 1 0 0 0 1(0)+2(0)+0(0)+4(1) = 4
1204
5) 0 0 0 0 1 0 1 0 1 0 0 0 1(0)+2(0)+0(1)+4(0) = 0
1204
6) 0 0 0 0 1 0 1 0 1 0 0 0 1(0)+2(1)+0(0)+4(1) = 6
1204
7) 0 0 0 0 1 0 1 0 1 0 0 0 1(1)+2(0)+0(1)+4(0) = 1
1204
8) 0 0 0 0 1 0 1 0 1 0 0 0 1(0)+2(1)+0(0)+4(1) = 6
1204
9) 0 0 0 0 1 0 1 0 1 0 0 0 1(1)+2(0)+0(1)+4(0) = 1
1204
10) 0 0 0 0 1 0 1 0 1 0 0 0 1(0)+2(1)+0(0)+4(0) = 2
1204
11) 0 0 0 0 1 0 1 0 1 0 0 0 1(1)+2(0)+0(0)+4(0) = 1
1204
Hasil Korelasi: 0 4 0 6 1 6 1 2 1
Perhitungan dengan MATLAB menggunakan sintaks
c= imfilter(a,b,’corr’,’full’)