TEKNIK PENGOLAHAN CITRA
Kuliah 3 Pengolahan Titik (Point Processing)
Indah Susilawati, S.T., M.Eng.
Program Studi Teknik Informatika Program Studi Sistem Informasi Fakultas Teknologi Informasi Universitas Mercu Buana Yogyakarta 2013
1
KULIAH 3 TEKNIK PENGOLAHAN CITRA PENGOLAHAN TITIK (POINT PROCESSING)
Setiap operasi pengolahan citra pada dasarnya adalah alihragam (transformasi) nilai piksel-piksel yang ada pada citra yang bersangkutan. Operasi ini dapat dibagi menjadi tiga kelas (dari yang paling rumit hingga yang paling sederhana), yaitu: 1. Transformasi. Transformasi mengubah nilai piksel menjadi bentuk lain yang ekivalen. Transformasi biasanya menggunakan algoritma yang efisien dan powerfull. Misalnya adalah DFT (Discrete Fourier Transform). 2. Operasi titik (Point Operations). Untuk mengubah nilai piksel tertentu maka tidak perlu diketahui nilai-nilai piksel tetangga (di sekitar piksel yang bersangkutan). 3. Neighbourhood processing. Untuk mengubah nilai piksel tertentu maka perlu diketahui nilai-nilai piksel tetangga (di sekitar piksel yang bersangkutan). Misalnya adalah operasi penapisan dengan tapis median (median filtering) atau filter rerata dengan jendela 3 x 3 piksel.
Operasi titik merupakan operasi yang paling sederhana, namun juga merupakan operasi pengolahan citra yang paling sering digunakan. Operasi ini terutama sangat berguna dalam pra-pengolahan citra (image pre-processing), yaitu proses paling awal dalam pengolahan citra sebelum proses utama dilakukan.
Operasi Aritmatika Operasi ini dapat dilakukan dengan menggunakan fungsi sederhana berbentuk: y f(x)
pada setiap nilai piksel pada citra, dimana x adalah nilai piksel (input) dan y adalah nilai piksel output. Operasi ini memetakan nilai piksel dengan domain 0 – 255 pada kodomain yang sama (0 – 255). Contoh fungsi seperti ini adalah penjumlahan atau pengurangan nilai piksel dengan suatu konstanta,
2
yxC
; C = konstanta
atau perkalian tiap piksel dengan suatu konstanta, y Cx
; C = konstanta.
Yang perlu diperhatikan dalam hal ini adalah hasil f(x) harus merupakan bilangan bulat dalam jangkauan 0 – 255. Hal ini dapat dilakukan dengan pembulatan hasilnya (jika perlu) dan kemudian melakukan clipping dengan menentukan, 255 jika y 255 y 0 jika y 0
Berikut adalah contoh hasil penjumlahan dan pengurangan konstanta C = 128 pada tiap piksel.
y = x – 128
y = x + 128
Dari grafik, dapat disimpulkan secara garis besar bahwa menambahkan dengan suatu konstanta akan menambah terang citra, dan mengurangkan dengan suatu konstanta akan menambah gelap citra. Contoh Untuk melihat perubahan pada citra akibat penambahan nilai setiap piksel dengan suatu konstanta dapat digunakan script berikut.
3
clear all; clc; I = imread('lena.jpg'); K = imadd(I,50); imshow(K)
Citra asli
Citra ouput
Tugas anda Buatlah coding anda sendiri dalam Matlab untuk menambahkan konstanta C = 128 (tanpa menggunakan fungsi imadd.m) pada citra lena.jpg. Harus diingat bahwa nilai piksel yang mungkin adalah 0 – 255, jika hasil operasi melebihi nilai 255 maka harus dilakukan clipping. tambah_128.m
Contoh Untuk melihat perubahan pada citra akibat pengurangan nilai setiap piksel dengan suatu konstanta dapat digunakan m file berikut. clear all; clc; I = imread('pout.tif'); K = imsubtract(I,75); imshow (I) figure, imshow(K)
4
Modifikasilah scipt dalam Matlab di atas menjadi sce file dalam Scilab; gunakan citra yang anda punya.
citra input
Tugas anda
citra output
citra output
Buatlah coding anda sendiri dalam Matlab untuk mengurangkan konstanta C = 128 (tanpa menggunakan fungsi imsubstract.m) pada citra pout.tif. Harus diingat bahwa nilai piksel yang mungkin adalah 0 – 255, jika hasil operasi lebih kecil dari nol maka harus dilakukan clipping.
Membuat citra menjadi lebih terang atau lebih gelap juga dapat dilakukan dengan fungsi perkalian dan/atau pembagian. Perhatikan grafik berikut.
5
Matlab menyediakan fungsi untuk operasi perkalian dan pembagian piksel citra, yaitu immultiply.m dan imdivide.m. Lakukan algoritma yang sama menggunakan Scilab.
Contoh clear all; clc; I = imread('pout.tif'); J = immultiply(I,0.5); K = imdivide (I,2); L = immultiply (I,2); imshow (I) figure, imshow(J) figure, imshow(K) figure, imshow(L)
citra input
citra x 0.5
citra : 2
citra x 2
6
Tugas anda a. Buatlah coding anda sendiri dalam Matlab untuk mengalikan semua piksel pada citra lena.jpg dengan konstanta C = 0.5 (tanpa menggunakan fungsi immultiply.m). Harus diingat bahwa nilai piksel yang mungkin adalah bilangan bulat antara 0 – 255, jika hasil operasi merupakan bilangan pecahan maka harus dilakukan clipping. b. Buatlah coding anda sendiri dalam Matlab untuk menbagi semua piksel pada citra lena.jpg dengan konstanta C = 2 (tanpa menggunakan fungsi imdivide.m). Harus diingat bahwa nilai piksel yang mungkin adalah bilangan bulat antara 0 – 255, jika hasil operasi merupakan bilangan pecahan maka harus dilakukan clipping. c. Bandingkan citra output pada a dan b.
Komplemen Komplemen dari sebuah citra aras keabuan adalah negatif dari citra tersebut (photographic negative). Fungsi untuk menghasilkan komplemen sebuah citra aras keabuan adalah y=L–x dengan L adalah aras atau level tertinggi piksel (255) dan x adalah nilai piksel citra input. Grafik berikut menggambarkan fungsi komplemen sebuah citra aras keabuan.
7
Matlab menyediakan fungsi untuk menghasilkan komplemen citra, yaitu imcomplement.m. Contoh
clear all; clc; I = imread('cameraman.tif'); K = imcomplement(I); imshow (I) figure, imshow(K)
Modifikasilah scipt dalam Matlab di atas menjadi sce file dalam Scilab; gunakan citra yang anda punya.
citra input
citra output
Tugas anda Buatlah coding anda sendiri dalam Matlab untuk membuat komplemen citra lena.jpg menggunakan formula y = L – x (tanpa menggunakan fungsi imcomplement.m). Negatif.m
Efek khusus yang menarik dapat diperoleh dengan melakukan komplemen sebagian saja, misalnya dengan melakukan komplemen piksel-piksel yang nilainya kurang atau sama dengan 128 (≤ 128) saja (nilai piksel di atas 128 tidak di-komplemen-kan).
Atau
dilakukan 8
sebaliknya.
Grafik-grafik
berikut
menunjukkan fungsi efek khusus ini. Efek fungsi ini sering disebut solarisasi (solarization).
(a)
(b)
(a) komplemen piksel-piksel yang nilainya kurang atau sama dengan 128 (≤ 128) saja (nilai piksel di atas 128 tidak di-komplemen-kan) (b) komplemen piksel-piksel yang nilainya lebih besar atau sama dengan 128 (≥ 128) saja (nilai piksel di bawah 128 tidak di-komplemen-kan)
Tugas anda Buatlah coding anda sendiri dalam Matlab untuk mengimplementasikan solarisari pada citra lena.jpg. (a) solarisasi 1 : komplemenkan piksel yang nilainya kurang atau sama dengan 128 saja (nilai piksel di atas 128 tidak di-komplemen) solarisasi_1.m (b) solarisasi 2 : komplemenkan piksel yang nilainya lebih besar atau sama dengan 128 saja (nilai piksel di bawah 128 tidak di-komplemen) solarisasi_2.m
Operasi Translasi Operasi translasi merupakan operasi geometrik. Pada operasi geometrik, koordinat piksel akan berubah akibat transformasi sedangkan intensitasnya tetap.
9
Hal ini berbeda dengan operasi aritmatika yang menyebabkan intensitas piksel berubah sedangkan koordinatnya tetap. Pengubahan geometrik dari citra u[m,n] menjadi citra baru u’[m,n] dapat ditulis sebagai u’[m’,n’] = u[g1[m,n], g2[m,n]] dengan g1 dan g2 adalah fungsi transformasi geometrik. Atau dapat dinyatakan bahwa m’ = g1[m,n]
n’ = g2 [m,n]
Pada operasi translasi citra, fungsi transformasi geometrik yang digunakan adalah sebagai berikut. m’ = m + y
n’ = n + x
Konstanta y dan x merupakan besaran pergeseran masing-masing dalam arah m dan arah n. Jika citra semula adalah A dan citra hasil translasi adalah B, maka translasi dapat diimplementasikan dengan menyalin citra dari A ke B sebagai berikut. B[m, n] = A[(m + y), (n + x)] Operasi translasi dapat digunakan untuk memotong citra menjadi citra dengan ukuran yang lebih kecil dengan cara membuang sebagian pikselnya pada arah baris (m) dan kolom (n). Pemotongan citra yang demikian sering disebut dengan istilah cropping. Perhatikan gambar contoh. Cropping biasanya digunakan untuk memilih suatu wilayah citra yang dikehendaki (sering disebut dengan istilah ROI atau Region of Interest) atau membuang bagian-bagian pada citra yang tidak dibutuhkan untuk proses pengolahan selanjutnya. Matlab menyediakan fungsi untuk operasi cropping citra, yaitu imcrop.m. Berikut beberapa contoh untuk menggunakan fungsi tersebut. >> I = imread (‘circuit.tif’); >> I2 = imcrop (I) Dengan menggunakan sintaks ini, maka Matlab akan menunggu pengguna (user) untuk memilih daerah yang akan di-cropping (menggunakan mouse). Pengguna dapat melihat hasilnya dengan fungsi imshow.m. >> imshow (I2)
10
Sintaks fungsi imcrop yang lain (baik Matlab maupun Scilab) adalah I3 = imcrop (I, RECT) RECT = [ xmin ymin width height] koordinat cropping Dengan I adalah matriks hasil pembacaan citra, xmin adalah kolom paling kiri, ymin adalah baris paling atas, width adalah lebar yang dikehendaki, dan height adalah tinggi yang dikehendaki. >> I3 = imcrop (I, [1 1 100 200]); >> imshow (I3) >> imshow (I), figure, imshow (I3)
[m0,n0] = [1, 1]
[m,n] [m0’, n0’] = [m0+y0, n0+x0]
[m’, n’] = [m+y, n+x]
11
Homework Buatlah coding anda sendiri dalam Matlab untuk membuat komplemen citra warna peppers.png menggunakan formula y = L – x (tanpa menggunakan fungsi imcomplement.m). Output yang diinginkan adalah berupa satu citra saja.
peppers.png
negatif dari peppers.png
12