Digital
Jobsheet 1 Pengolahan Citra
A. Pokok-Pokok Bahasan
Pokok-pokok bahasan yang dibahas pada jobsheet ini meliputi 6 hal berikut :
1. Sistem pengelihatan manusia dan komputer
2. Sampling dan kuantisasi pada akuisisi citra
3. Jenis-jenis citra yang meliputi citra berwarna, citra berwarna dengan transparansi,
citra grayscale, citra biner, dan citra terindeks.
4. Hubungan antara pixel pada citra: ketetangaan dan jarak antar pixel
5. Operasi aritmatika yang meliputi penambahan, pengurangan, MAX, MIN, inverse
citra.
6. Operasi logika yang meliputi NOT, AND, OR, XOR.
B. Tujuan Pembelajaran
Setelah selesai mempelajari materi pembelajaran den mengerjakan soal pada job
sheet Operasi Dasar Citra Digital ini, mahasiswa diharapkan dapat :
1. Memahami sistem pengelihatan pada manusia dan komputer.
2. Memahami sampling dan kuantisasi pada akuisisi citra
3. Memahami jenis-jenis citra yang meliputi citra berwarna, citra berwarna dengan
transparansi, citra grayscale, citra biner, dan citra terindeks.
4. Memahami hubungan antara pixel pada citra: ketetangaan dan jarak antar pixel
5. Memahami operasi aritmatika yang meliputi penambahan, pengurangan, MAX,
MIN, inverse citra.
6. Memahami operasi logika yang meliputi NOT, AND, OR, XOR.
PRE TEST
Dari penjelasan di atas, dapat kita lihat bahwa pengolahan citra dan pengenalan
pola merupakan bagian dari computer vision. Pengolahan citra merupakan proses
awal (preprocessing) pada computer vision, sedangkan pengenalan pola merupakan
proses untuk menginterpretasi citra. Teknik-teknik di dalam pengenalan pola
memainkan peranan penting dalam computer vision untuk mengenali objek.
a. Sampling
Citra kontinyu disampling pada elemen grid berbentuk bujur sangkar
▪ Proses pengambilan nilai diskrit koordinat ruang (x,y) dengan melewatkan citra
kontinu melalui grid (celah)
▪ Proses untuk menentukan warna pada piksel tertentu pada citra dari sebuah
gambar yang kontinu.
▪ Proses sampling biasanya dicari warna rata-rata dari gambar analog yang
kemudian dibulatkan.
▪ Proses sampling disebut proses digitalisasi.
x = Dx/ M increment
y = Dy/ N increment
Keterangan :
▪ N = jumlah maksimum pixel dalam satu kolom.
▪ M = jumlah maksimum pixel dalam satu baris.
▪ Dx= lebar gambar ( dalam satuan panjang, mis. inci)
▪ Dy= tinggi gambar (dalam satuan panjang, mis. inci)
Elemen(i,j) dalam matriks menyatakan rata-rata intensitas cahaya pada area
citra yang direpresentasikan oleh pixel.
Resolusi (derajat rincian yang dapat dilihat) citra ditentukan oleh
pembagian gambar menjadi jumlah piksel tertentu. Semakin banyak jumlah
pixel, semakin tinggi resolusi gambar (gambar semakin halus secara visual),
karena informasi yang hilang akibat pengelompokan intensitas saat sampling,
semakin kecil.
b. Kuantisasi
Intensitas kontinyu dikuantisasikan menjadi suatu nilai intensitas
diskret.Kuantisasi membagi skala keabuan (0, L) menjadi G buah level yang
dinyatakan dengan suatu harga bilangan integer, umumnya perpangkatan dari 2,
G = 2m, G : derajat keabuan
m : bilangan bulat positif
b. Citra Grayscale
Citra grayscale adalah citra yang nilai intensitas pikselnya berdasarkan
derajat keabuan.Citra grayscale merupakan citra digital yang hanya memiliki satu
nilai kanal pada setiap pikselnya, artinya nilai dari Red = Green = Blue. Nilai-nilai
tersebut digunakan untuk menunjukkan intensitas warna.Citra yang ditampilkan
dari citra jenis ini terdiri atas warna abu-abu, bervariasi pada warna hitam pada
bagian yang intensitas terlemah dan warna putih pada intensitas terkuat. Citra
grayscale berbeda dengan citra ”hitam-putih”, dimana pada konteks komputer, citra
hitam putih hanya terdiri atas 2 warna saja yaitu ”hitam” dan ”putih” saja. Pada
citra grayscale warna bervariasi antara hitam dan putih, tetapi variasi warna
diantaranya sangat banyak. Citra grayscale seringkali merupakan perhitungan dari
intensitas cahaya pada setiap piksel pada spektrum elektromagnetik single band
Citra grayscale disimpan dalam format 8 bit untuk setiap sample piksel,
yang memungkinkan sebanyak 256 intensitas. Untuk mengubah citra berwarna
yang mempunyai nilai matrik masing-masing R, G dan B menjadi citra grayscale
dengan nilai X, maka konversi dapat dilakukan dengan mengambil rata-rata dari
nilai R, G dan B sehingga dapat dituliskan menjadi:
X = (R+G+B)/3
c. Citra Biner
Citra biner adalah citra dimana piksel-pikselnya hanya memiliki dua buah
nilai derajat keabuan (grayscale) yaitu hitam dan putih. Pixel-pixel (picture
elements) suatu objek akan bernilai 1 sedangkan pixel–pixel latar belakang bernilai
0. Pada waktu menampilkan gambar, 0 adalah putih dan 1 adalah hitam. Jadi, pada
citra biner, latar belakang berwarna putih sedangkan objek berwarna hitam.Citra
biner banyak digunakan dalam kehidupan sehari-hari seperti pada citra logo suatu
instansi yang hanya memiliki warna hitam dan putih, citra hasil pemindaian suatu
objek seperti yang dihasilkan scanner, citra kode batang atau bar code yang sering
terdapat pada kemasan suatu produk, dan lain sebagainya.
Citra biner sering pula dikodekan dalam angka 0 dan 1 tergntung citra itu
sendiri. Gambar berikut akan memperlihatkan kita sebuah citra huruf ‘B’ serta
repreentasi biner dari derajat keabuannya.Meskipun komputer saat ini dapat
memproses citra hitam-putih (greyscale) maupun citra berwarna, namun citra biner
masih tetap dipertahankan keberadaannya. Alasan penggunaan citra biner adalah
karena ia memiliki sejumlah keuntungan sebagai berikut:
1. Kebutuhan memori kecil karena nilai derajat keabuan hanya membutuhkan
representasi 1 bit. Kebutuhan memori untuk citra biner inipun masih dapat
berkurang secara berarti dengan metode pemampatan run-length encoding
(RLE). Metode RLE akan dijelaskan lebih lanjut pada materi pengkodean
citra biner.
2. Waktu pemrosesan lebih cepat dibandingkan dengan citra hitam-putih
karena banyak operasi pada citra biner yang dilakukan sebagai operasi
logika (AND, OR, NOT) ketimbang operasi aritmetika bilangan bulat.
d. Citra Terindeks
Kebanyakan citra warna hanya memiliki sebagian kecil dari 16 juta warna
yang mungkin. Untuk kenyamanan dalam menyimpanan dan penangan berkas file,
citra warna bertipe index mempunyai sebuah peta warna yang terkait indeks warna,
yang hanya menyimpan daftar semua warna yang digunakan pada citra tersebut.
Setiap piksel pada citra warna berindeks mempunyai nilai yang tidak mewakili
warna yang diberikan (seperti pada citra warna RGB), tetapi nilai tersebut hanya
mewakili sebuah indeks warna ,yang mana representasi warna tersebut tersimpan
pada peta warna.
Ilustrasi 4-neighbors :
▪ Pixels
▪ N4(p)
x, y-1
x-1, y x,y x+1, y
x, y+1
b. Diagonal Neighbors
Diagonal Neighbors biasanya dinotasikan dengan ND(p). Pada jenis
ini, piksel memiliki 4 piksel tetangga secara diagonal, dan jika dituliskan
menjadi :
(x-1,y-1),
(x+1, y-1),
(x+1, y+1),
(x-1, y+1)
▪ ND(p)
c. 8-neighbors
8-neighbors merupakan gabungan dari 4-neighbors dan Diagonal
Neighbors dan dinotasikan sebagai N8(p). Jika dituliskan, kedelapan piksel
tetangga tersebut menjadi :
(x-1, y-1),
(x, y-1),
(x+1, y-1),
(x+1, y),
(x+1, y+1),
(x, y+1),
(x-1, y+1),
(x-1, y)
Ilustrasi 8-neighbors :
▪ Pixels
▪ N8(p)
b. Connectivity
Dua buah piksel p dan q dikatakan terhubung (connected) apabila
terdapat jalur (path) yang terdiri dari piksel – piksel di dalam himpunan
bagian (subset) S. Untuk setiap piksel p yang berada di dalam S, himpunan
piksel – piksel lain yang terhubung dengannya di dalam S disebut
connected component dari S. jika S hanya memiliki satu buah connected
component, maka S disebut connected set.
c. Regions and Boundaries
Misalkan R adalah subset dari piksel – piksel di dalam sebuah citra.
R dikatakan sebuah Region jika R merupakan connected set. Sedangkan
Boundary (border/ contour) dari sebuah region R adalah himpunan piksel di
dalam region yang memiliki satu atau lebih neighbor yang tidak berada di
dalam region R. Jika R merupakan keseluruhan citra, maka boundary
didefinisikan sebagai baris dan kolom yang pertama dan terakhir dari citra
tersebut.
3. Distance Measures
Untuk piksel p, q, dan z dengan koordinat (x, y), (s, t), dan (v, w),
dimana D adalah distance function atau metric, jika :
a. D(p, q) >= 0 ( D(p, q) = 0 iff p = q )
b. D(p, q) = D(q, p), and
c. D(p, z) <= D(p, q) + D(q, z)
C adalah citra baru yang intensitas setiap pixel-nya adalah jumlah dari
intensitas tiap pixel pada A dan B. Jika hasil penjumlahan intensitas lebih besar
dari 255, maka intensitasnya dibulatkan ke 255. Algoritma penjumlahan dua
buah citra ditunjukkan pada Algoritma 4.4.
{ int i, j, temp;
C adalah citra baru yang intensitas setiap pixel-nya adalah selisih antara
intensitas pixel pada A dan B. Ada kemungkinan hasil operasi ini menghasilkan
nilai negatif, oleh karena itu, operasi pengurangan citra perlu melibatkan
operasi clipping.
Contoh aplikasi operasi pengurangan citra adalah untuk memperoleh
suatu objek dari dua buah citra [HEN95]. Citra pertama misalnya foto sebuah
ruangan yang kosong, citra kedua adalah foto ruangan yang sama tetapi ada
orang di dalamnya. Hasil pengurangan citra kedua dengan gambar pertama
menghasilkan citra yang latar belakangnya hitam, sedangkan latar depannya
(objek orang) berwarna putih. Algoritmanya ditunjukkan pada Algoritma 4.5.
C[i][j]=A[i][j] - B[i][j];
if (C[i][j] != 0) C[i][j]=255; /* nyatakan objek berwarna putih*/
}
}
Algoritma 4.5. Pengurangan dua buah citra untuk mendapatkan objek di dalamnya.
3. Perkalian Citra
Persamaannya:
C(x, y) = A(x, y)B(x,y) (4.13)
Perkalian citra sering digunakan untuk mengoreksi kenirlanjaran sensor
dengan cara mengalikan matriks citra dengan matrik koreksi. Jadi, dalam hal
ini A adalah citra sedangkan B adalah matriks koreksi. Hasil operasi mungkin
bernilai riil, karena itu semua nilai dibulatkan ke nilai bulat terdekat, nilai
maksimum adalah 255.
Algoritma perkalian citra dengan matriks koreksi ditunjukkan pada
Algoritma 4.3. Kita mengasumsikan di sini ukuran citra dan matriks koreksi
adalah .
Contoh 4.1. [GAL90] Mengalikan citra A dengan matriks koreksi:
temp=0;
for (k=0; k<=N-1; k++)
{
temp = temp + A[i][k]*B[k][j];
/* clipping*/
if (temp < 0)
C[i][j] =0;
else
Persamaannya:
B(x, y) = A(x, y)c (4.14)
6. Inverse(Negasi):
Tujuan dari penggunaan operasi invers ini adalah untuk membuat citra
negative. Seperti apa citra negative nantinya akan kita coba pada pembuatan
program. Untuk membuat citra menjadi negative dibutuhkan rumus perhitungan yang
diterapkan dalam pemrograman. Berikut ini adalah rumus yang diperlukan
Dari rumus di atas ini yang dimaksud dengan fmaksimum adalah nilai tertinggi
dalam bit warna. Misalnya untuk citra grayscale 8 bit, maka fmaksimumnya adalah
255, untuk citra grayscale 7 bit fmaksimumnya adalah 127
Untuk membuat citra menjadi negative, maka kita bias menggunakan teori dan
rumus di atas untuk diimplementasikan ke dalam program pengolahan citra yang
akan kita buat.
F. Operasi Logika yang Meliputi NOT, AND, OR, XOR.
Operasi bitwise pada pengolahan citra digunakan untuk memanipulasi sebuah
gambar dan juga dapat digunakan untuk mengambil bagian penting dari sebuah gambar.
4 Operasi Bitwise yang paling penting meliputi :
▪ AND
▪ OR
▪ NOT
▪ XOR
Pada operasi bitwise dapat berfungsi untuk membantu penyeleksian gambar
( image masking ). Sehingga pembuatan gambar dapat dilakukan dengan bantuan operasi
bitwise ini.
Catatan : Operasi Bitwise hanya dapat dilakukan / di implementasikan dengan masukan
imput gambar dengan dimensi yg sama.
G.
LATIHAN PRAKTIKUM
Tiap elemen gambar lebarnya 1 inchi & tingginya 1,25 inchi akan direpresentasikan
dengan suatu nilai yang mewakili rata-rata intensitas cahaya pada area tersebut
▪ Area 1 x 1,25 inci pada sudut kiri atas gambar direpresentasikan oleh (0,0)
▪ Area 1 x 1,25 inci pada sudut kanan bawah gambar direpresentasikan oleh (3,4)
2. Cara mengubah Citra Warna menjadi Gray-scale
a. Buat aplikasi AppWizard seperti pada praktikum 1 dan beri nama project dengan
GrayScale
b. Buat Menu seperti pada praktikum 2 dengan tambahan Test sedangkan submenunya
OpenFile dan GrayScale
c. Untuk mengedit isi program tekan tombol Edit Code atau buka file GrayScaleView.cpp
d. Tambahkan program untuk mengubah citra warna menjadi gray-scale seperti dibawah ini:
////////////////////////////////////////////////////////////////////
/////////
// CGrayScaleView message handlers
void CGrayScaleView::OnTestLoadgambar()
{
// TODO: Add your command handler code here
static char BASED_CODE szFilter[]="Bitmap Files (*.bmp)|
*.bmp||";
CFileDialog m_ldFile(TRUE, "*.bmp", name,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter);
if(m_ldFile.DoModal()==IDOK)
{
name=m_ldFile.GetPathName();
LoadGambar();
}
}
// Menampilkan gambar hasil dari open file
void CGrayScaleView::LoadGambar(void)
{
CDC* pDC = GetDC();
CDC dcMem;
HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(), name,
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(hBitmap)
{
if(m_bmpBitmap.DeleteObject())
m_bmpBitmap.Detach(); m_bmpBitmap.Attach(hBitmap);
}
dcMem.CreateCompatibleDC(pDC);
dcMem.SelectObject(&m_bmpBitmap);
pDC->BitBlt(0,0,250,210,&dcMem,0,0,SRCCOPY); }
// Attributes
public:
CGrayScaleDoc* GetDocument();
CString name;
CBitmap m_bmpBitmap;
// Operations
public:
void LoadGambar(void);
5. Hitung jarak antara piksel x dengan piksel y jika diketahui x1=3, y1=4, x2=4, y2=3!
Penyelesaian:
9. Function Cerah
function hasil = Cerah(citra,input) hasil = citra;
[m,n] = size(citra); for k = 1:m
for l = 1:n
hasil(k,l) = citra(k,l)+input; end
end
subplot(2,2,1);imshow(citra);title('citra asli');
subplot(2,2,2);imshow(hasil);title('hasil citracerah'); end
% Simpan Cerah.m
i = imread('cameraman.tif'); Cerah(i,50);
% Simpan nama file boleh apa saja.
10. Operasi Bitwise
Input Gambar 1:
Input Gambar 2:
Hasil Output :
b. Bitwise OR operation on image
Operasi ini digunakan untuk mengahasilkan hasil disjunction dari dua bentuk gambar.
Nama File : Operasi_OR.py
Penjelasan:
Hasil Output :
Hasil Output
d. Bitwise NOT operation on image :
Pada operasi bitwise NOT menampilkan hasil inversi gambar
Penjelasan
TUGAS PRAKTIKUM
1. Buatlah Source Code perkalian citra A dengan scalar C yang akan menghasilkan citra baru B
yang intensitasnya lebih terang dari semula. Menggunakan :
B(x,y) = A(x,y) * c
Jawaban :
A = double(imread('cameraman.tif'));
[r c] = size(A);
for x = 1 : r
for y = 1 : c
B(x,y) = A(x,y) .* 2;
end
end
B = clipping(B);
figure, imshow(uint8(B));
Hasil Perkalian :
2. Ubahlah program konversi citra berwarna menjadi citra gray scale di atas dengan mengubah
nilai gray scale dengan
x = 0.5r + 0.2g + 0.3b
x = 0.2r + 0.5g + 0.3b
x = 0.5r + 0.5g + 0b
x = 0.5r + 0g + 0.5b
Perhatikan bagaimana perbedaan hasil konversi dengan tiga macam rumus di atas!
3. Jika a=10 dan b=15, hitunglah jarak Euclidean antara a dan b melalui phyton!
Penyelesaian:
4. Diketahui sebuah citra digital dengan ukuran 512 x 512 pixel dan memiliki ukuran pixel
depth sebesar 8 bit. Hitunglah nilai keabuan dan jumlah memori yang dibutuhkan untuk
menyimpan citra digital tersebut !
Penyelesaian :
Diketahui : Dijawab :
m = 8 bit Hitung derajat keabuan dengan rumus : G= 2m
M = 512 G= 28
N = 512 G= 256
1. Berikut ini merupakan proses yang dilakukan computer vision dalam pemrosesan sebuah
citra adalah …
a. Memperoleh atau mengakuisisi citra digital.
b. Melakukan teknik komputasi untuk memperoses atau memodifikasi data citra
(operasi – operasi pengolahan citra).
c. Menganalisis dan menginterpretasi citra dan menggunakan hasil pemrosesan
untuk tujuan tertentu
d. a,b,dan c semua salah
e. a.b, dan c semua benar
2. Jumlah bit untuk merepresentasikan nilai kebuan pixel disebut ?
a. Pixel bit
b. Pixel value
c. Pixel depth
d. Pixel shallow
e. Gray scale
3. Apa yang membedakan citra warna berwarna dengan citra berwarna dengan transparansi?
a. Citra berwarna dengan transparansi memiliki nilai null pada warna Black
b. Susunan Komponen citra berwarna adalah CMYK
c. Citra berwarna dengan transparansi memiliki komponen Alpha
d. Komponen Citra berwarna dengan transparansi adalah Luma, Chroma blue, Chrome Red
e. Rentang RGB pada Citra berwarna dengan transparasi hanya 0-128
4. Dua buah piksel p dan q yang berada di dalam V dikatakan 4-adjacency jika….
a. p berada di dalam N4(p)
b. q berada di dalam N4(p)
c. s berada di dalam N4(p)
d. p dan q berada di dalam N4(p)
e. p dan s berada di dalam N4(p)
5. Apakah Tujuan dari perkalian/pembagian citra dengan skalar ?
a. Untuk Memperjelas pixel
b. Untuk kalibrasi kecerahan
c. Berfungsi Menyatukan Pixel
d. A dan B benar
e. Semua Salah