TUGAS MANDIRI
PENGOLAHAN CITRA DIGITAL MENGGUNAKAN OCTAVE
MATA KULIAH : PEMROGRAMAN CITRA DIGITAL
NAMA : AWDRIANUS LABA
NPM : 130210162
KODE KELAS : 142-T128T-M5
DOSEN : Cosmas Eko Suharyanto,S.kom
UNIVERSITAS PUTERA BATAM
2015
DAFTAR ISI
Daftar Isi.......................................................................................................... ii
Bab I Pendahuluan......................................................................................... 1
1.1 Latar Belakang.................................................................................... 1
1.2 Tujuan Makalah.................................................................................. 1
1.3 Metode Studi....................................................................................... 2
1.4 Waktu Studi........................................................................................ 2
Bab II TinjauanPustaka................................................................................. 3
2.1 Pengertian Pengolahan Citra Digital.................................................. 3
2.2 Prinsip Dasar Pengolahan Citra........................................................... 3
2.3 Representasi Citra................................................................................ 5
2.4 Kuantisasi Citra................................................................................... 6
2.5 Kualitas Citra....................................................................................... 7
2.6 Membaca Citra.................................................................................... 7
2.7 Mengetahui Ukuran Citra.................................................................... 7
2.8 Menampilkan Citra.............................................................................. 8
2.9 Mengenal Jenis Citra........................................................................... 8
Bab III Pembahasan....................................................................................... 11
3.1 Operasi Piksel dan Histogram............................................................ 11
3.1.1 Operasi Piksel............................................................................ 11
i
3.1.2 Menggunakan Histogram Citra................................................. 11
3.1.3 Meningkatkan Kecerahan.......................................................... 13
3.1.4 Meregangkan Kontras................................................................ 14
3.1.5 Membalik Citra.......................................................................... 15
3.1.6 Pemotongan Aras Keabuan....................................................... 16
3.2 Operasi Ketetanggan Piksel.................................................................. 17
3.2.1 Pengertian Ketetanggan Piksel.................................................. 17
3.2.2 Aplikasi Tetangga Piksel........................................................... 17
3.2.2.1 Filter Batas.................................................................... 17
3.2.2.2 Filter Perataan............................................................... 20
3.2.2.3 Filter Median................................................................. 21
3.2.3 Konvolusi................................................................................... 23
3.2.4 Frekuensi................................................................................... 24
3.2.5 Filter Lolos Rendah................................................................... 25
3.2.6 Filter High Boost....................................................................... 25
3.2.7 Efek Embos................................................................................ 25
3.3 Operasi Geometrik............................................................................... 25
3.3.1 Pengantar Operasi Geometrik.................................................... 25
3.3.2 Pergeseran Citra ..................................................................... 25
3.3.3 Pemutaran Citra......................................................................... 27
3.3.4 Interpolasi Piksel....................................................................... 29
3.3.5 Pemutaran Citra Sembarang Koordinat..................................... 31
3.3.6 Pemutaran Citra Secara Utuh.................................................... 33
3.3.7 Perbesaran Citra......................................................................... 37
3.3.8 Pengecilan Citra......................................................................... 39
3.3.9 Pencerminan Citra..................................................................... 40
3.3.10 Efek Ripple.............................................................................. 45
BAB IV Penutup............................................................................................. 48
4.1 Kesimpulan............................................................................................ 48
ii
4.2 Saran ................................................................................................ 48
DAFTAR PUSTAKA
iii
BAB I
PENDAHULUAN
1.1 LatarBelakangMasalah
Perkembangan teknologi pada masa sekarang telah memasuki era digital.
Proses digitalisasi teknologi juga telah mengubah suatu citra
berkembangdanlebihmenarikbuatsemua orang dalammenggunakannya.
Teknologisemakinmenarikkarenaadanya multimedia yang membuatsebuahteknologi
yang dulunyadisajikanhanyaberupasebuahteks,
namunsekarangsudahberupagambar,musik,videodan lain lain.
Pengolahan yang berupa teks sekarang hampir telah beralih berupa image atau
citra. Mulai dari lahir sampai akhir hayat citra selalu mengabadikan setiap kegiatan
dan moment yang berharga bagi seseorang. Untuk itu diperlukan suatu pengolahan
agar citra yang dihasilkan bisa dimanipulasi sesuai keinginan. Pengolahan citra tidak
hanya dalam dunia fotografi, tetapi juga telah memasuki berbagai aspek seperti :
kedokteran, biologi, fisika dan lain sebagainya. Sebagai seorang jurusan informatika
kita, harus mengetahui bagaimana sebuah citra diolah dengan menggunakan
algoritma dan penulisan program.Jadi sederhananya, citra yang diolah mnggunakan
kode program dengan ketentuan yang ada.
1.2 Tujuan Makalah
Tujuan dari makalah ini, bertujuan untuk memenuhi tugas matakuliah
pengolahan citra,juga untuk menambah pengetahuan bagi penulis pada matakuliah
Pengolahan Citra,dan semoga bisa bermanfaat bagi pembacasekalian.
4
1.3 Metodepenulisan
Metode yang penulis gunakan adalah tinjauan pustaka. Dalam metode ini
penulis bersumber dari buku dan internet untuk menyelesaikan makalah ini
1.4 Waktu Studi
Studi dilakukan pada bulan akhir Februari2015 sampai dengan akhirJuly 2015
5
BAB II
TINJAUAN PUSTAKA
2.1 Pengertian Pengolahan Citra Digital
Secara umum, istilah pengolahan citra digital menyatakan “pemrosesan
gambar berdimensi-dua melalui komputer digital” (Jain, 1989). Menurut Efford
(2000), pengolahan citra adalah istilah umum untuk berbagai teknik yang
keberadaannya untuk memanipulasi dan memodifikasi citra dengan berbagai cara.
Foto adalah contoh gambar berdimensi dua yang bisa diolah dengan mudah. Setiap
foto dalam bentuk citra digital (misalnya berasal dari kamera digital) dapat diolah
melalui perangkat-lunak tertentu.
2.2 Prinsip Dasar dalam Pengolahan Citra
Aplikasi-aplikasi pada umumnya menggunakan prinsip dasar dalam
pengolahan citra seperti peningkatan kecerahan dan kontras, penghilangan derau pada
citra, dan pencarian bentuk objek
1. PeningkatanKecerahandanKontras
Dengan menggunakan pengolahan citra, citra yang kurang cerah dan kurang
kontras menjadi bisa diolah menjadi citra yang lebih kontras.
6
(a) Citra dengan derau berbentuk kotak-kotak (b) Citra dengan derau telah dihilangkan
Gambar 2.1Pengolahan citra memungkinkan pengubahan kontras pada citra
2. PenghilanganDerau
Penghilangan deraukan menghasilkan citra dengan kualitas yang bagus
sehingga noise yang ada dapat dihilangkan.
Gambar 2.2 Pengolahan citra memungkinkan untuk menghilangkan derau pada
citra
7
3. PencarianBentukObjek
Untukkepentinganmengenalisuatuobjek di dalamcitra,
objekperludipisahkanterlebihduludarilatarbelakangnya. Salah satupendekatan yang
umumdipakaiuntukkeperluaniniadalahpenemuanbatasobjek.
Gambar 2.3Pengolahan citra memungkinkan untuk mendapatkan bentuk objek
2.3 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. Sistem koordinat yang dipakai untuk menyatakan citra
digital ditunjukkan pada Gambar dibawah ini
8
Gambar 2.4Sistem koordinat citra berukuran M x N
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).
2.4 Kuantisasi Citra
Kuantisasi adalah prosedur yang dipakai untuk membuat suatu isyarat yang
bersifat kontinue ke dalam bentuk diskret.
Tabel 2.1Jangkauan nilai pada citra keabuan
9
Komponen
warna
Bit per
Piksel
Jangkauan Penggunaan
1 1 0-1 Citra biner: dokumen
faksimili
8 0-255 Umum: foto dan hasil
pemindai
12 0-4095 Kualitas tinggi: foto dan
hasil pemindai
14 0-16383 Kualitas profesional: foto
dan hasil pemindai
16 0-65535 Kualitas tertinggi: citra
kedokteran dan astronomi
Tabel 2.2Jangkauan nilai pada citra berwarna
Komponen
Warna
Bit per
Piksel
Jangkauan Penggunaan
3 24 0-1 RGB umum
36 0-4095 RGB kualitas tinggi
42 0-16383 RGB kualitas profesional
4 32 0-255 CMYK (cetakan digital)
Gambar 2.5Kuantisasi citra dengan menggunakan berbagai bit
2.5 Kualitas Citra
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.
10
2.6 Membaca Citra
Octave menyediakan perintah yang berguna untuk membaca citra yang tersimpan
dalam bentuk file.Perintah itu bernama imread. Bentuk pemanggilannya:
Img = imread(nama_file_citra). Format file gambar yang bisa dibaca oleh imread
adalah TIFF, PNG, JPG, GIF.
>> Img = imread(’C:\Image\mandrill.png’);
>>
2.7 MengetahuiUkuran 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
2.8 Menampilkan Citra
Citra dapat ditampilkan dengan mudah melalui fungsi imshow. Contoh berikut
digunakan untuk menampilkan citra yang terdapat di Img:
>> imshow(Img);
2.9 MengenalJenis Citra
Ada tiga jenis citra yang umum digunakan dalam pemrosesan citra. Ketiga jenis
citra tersebut yaitu citra berwarna, citra berskala keabuan, dan citra biner.
11
1. 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. Tabel 2.4 menunjukkan contoh warna dan nilai R,G,
dan B.
Tabel 2.4 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
Kuning 0 255 255
Gambar 2.6Citra berwarna
2. 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. Contoh citra
berskala keabuan telah dibahas pada Subbab 2.5.
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
12
hitam dan nilai 1 menyatakan warna putih. Citra jenis ini banyak dipakai dalam
pemrosesan citra, misalnya untuk kepentingan memperoleh tepi bentuk suatu objek.
Gambar 2.7Citra di kanan menyatakan bentuk citra di kiri
dengan mengabaikan komposisi warna
13
BAB III
PEMBAHASAN
3.1 Operasi Piksel dan Histogram
3.1.1. Operasi piksel
Operasi pikseladalahoperasipengolahancitra yang memetakanhubungansetiappiksel
yang bergantungpadapikselitusendiri. Jika f(y, x)
menyatakannilaisebuahpikselpadacitra f dan g(y, x)
menyatakanpikselhasilpengolahandari f(y, x), hubungannyadapatdinyatakandengan ;
g ( y , x )=T ( f ( y , x ))
3.1.2. Menggunakan Histogram Citra
Histogram citra merupakan diagram yang menggambarkan frekuensi setiap nilai
intensitas yang muncul di seluruh piksel citra. Nilai yang besar menyatakan bahwa
piksel-piksel yang mempunyai intensitas tersebut sangat banyak.
Algoritma Menghitung histogram citra aras keabuan
Masukan:
• f(M, N) : citra berukuran M baris dan N kolom
• L : jumlah aras keabuan
1. Buatlah larik hist sebanyak 2L elemen dan isi dengan nol.
2. FOR i 1 TO M
FOR j 1 TO N
hist(f(M, N)+1) hist(f(M, N)+1) + 1
END-FOR
END-FOR
14
Program Histogram
==> function histo(Img)
> % HISTO Digunakan sebagai contoh pembuatan histogram
>
> [jum_baris, jum_kolom] = size(Img);
> Img = double(Img);
>
> Histog = zeros(256, 1);
> for baris=1 : jum_baris
> for kolom=1 : jum_kolom
> Histog(Img(baris, kolom)+1) = ...
> Histog(Img(baris, kolom)+1) + 1;
> end
> end
>
> % Tampilkan dalam bentuk diagram batang
> Horis = (0:255)';
> bar(Horis, Histog);
> endfunction
==> Img = imread('C:\Image\welcome.png');
warning: your version of GraphicsMagick limits images to 16 bits per pixel
==> histo(Img);
15
Gambar 3.1Citra welcome.png dan histogramnya
3.1.3. Meningkatkan Kecerahan
Operasidasar yang seringdilakukanpadacitraadalahpeningkatankecerahan
(
brightness).Operasiinidiperlukandengantujuanuntukmembuatgambarmenjadilebihtera
ng.
Secaramatematis,
peningkatankecerahandilakukandengancaramenambahkansuatukonstantaterhadapnilai
seluruhpiksel. Misalkan, f(y, x)
menyatakannilaipikselpadacitraberskalakeabuanpadakoordinat(y, x). Maka, citrabaru
g ( y , x )=f ( y ,x )+β
Telahmeningkatnilaikecerahansemuapikselnyasebesarβterhadapcitraasli f(y, x).
Apabila β berupa bilangan negatif, kecerahan akan menurun ataumenjadilebihgelap
16
Program Peningkatan Kecerahan
andree==> barelang = imread('C:\Image\mendung.png');
andree==> C = barelang + 80;
andree==> figure(1);
andree==> subplot(1,2,1);imshow(barelang);
andree==> subplot(1,2,2);imshow(C);
(1) Gambar asli (2) gambar hasil peningkatan kecerahan
Gambar 3.2 Citra barelang.png dengan peningkatan kecerahan
3.1.4. Meregangkan Kontras
Kontras dalam suatu citra menyatakan distribusi warna terang dan warna
gelap. Suatu citra berskala keabuan dikatakan memiliki kontras rendah apabila
distribusi warna cenderung pada jangkauan aras keabuan yang sempit. Sebaliknya,
citra mempunyai kontras tinggi, apabila jangkauan aras keabuan lebih terdistribusi
secara melebar. Kontras dapat diukur berdasarkan perbedaan antara nilai intensitas
tertinggi dan nilai intensitas terendah yang menyusun piksel-piksel dalam citra.
Program Kontras
17
octave:1> Img = imread('C:\Image\mawar.png');
warning: your version of GraphicsMagick limits images to 16 bits per pixel
octave:2> K = 2.5 * Img;
octave:3> figure(1);
octave:4> subplot(1,2,1);imshow(Img);
octave:5> subplot(1,2,2);imshow(K);
octave:6>
(a) Gambar asli (b) citra hasil peningkatan kontas
Gambar 3.3 Citra mawar.pngdengan peningkatan kontras
3.1.5. Membalik Citra
Membuat citra terlihat negatif dengan rumus
g ( y , x )=255−f ( y , x )
Program Membalik Citra
18
==> anisa = imread('C:\Image\anisa.png');
warning: your version of GraphicsMagick limits images to 16 bits per pixel
==> R = 255 - anisa;
==> figure(2);
==> subplot(1,2,1);imshow(anisa);
==> subplot(1,2,2);imshow(R);
(a) Gambar asli (b) Citra hasil pembalikan
Gambar 3.4Citra anisa dan pembalikannya
3.1.6. Pemotongan Aras Keabuan
Efek pemotongan (clipping) diperoleh bila dilakukan operasi seperti berikut:
g ( y , x )={ 0 ,∧x ≤ f 1
f ( y , x ) ,∧ f 1< f ( y , x )< f 2
255 ,∧x ≥ f 2
19
Nilai g dinolkan atau dipotong habis untuk intensitas asli dari 0 hingga f1
karena dipandang tidak mengandung informasi atau objek menarik. Demikian pula
untuk nilai intensitas dari f2 ke atas, yang mungkin hanya mengadung derau.
(a) Gambar asli (b) Hasil citra
Gambar 3.4 Citra pemotongan aras keabuan
3.2 Operasi Ketetanggan Piksel
3.2.1. Pengertian Tetangga Piksel
Operasiketetanggaanpikse
ladalahoperasipengolahancitrauntukmendapatkannilaisuatupiksel yang
melibatkannilaipiksel-pikseltetangganya.
Gambar 3.5 Dua macam ketetanggaan piksel
20
Pada 4-ketetanggaan
T 1=(b , k+1 ) , T2= (b−1 , k ) , T3=(b , k−1 ) , T 4= (b+1 , k )
Pada 8-ketetanggaan
T 1=(b , k+1 ) , T2= (b−1 , k−1 ) ,
T 3=(b , k−1 ) ,T 4=(b−1, k−1 )
T 5=(b , k−1 ) ,T 6=(b+1 ,k−1 ) ,
T 7=(b+1 , k−1 ) ,T 8=(b+1 ,k+1 )
3.2.2. Aplikasi Tetangga Piksel
3.2.2.1. Filter Batas
Filter batas adalah filter yang dikemukakan dalam Davies (1990). Idenya adalah
mencegah piksel yang intensitasnya di luar intensitas piksel-piksel tetangga. Algoritma
yang digunakan untuk keperluan ini dapat dilihat berikut ini.
ALGORITMA 4.1 – Menghitung piksel dengan filter batas
Masukan:
f(y, x) : Piksel pada posisi (y, x)
Keluaran:
g(y, x) : Nilai intensitas untuk piksel pada citra g pada posisi (y,
x)
1. Carilah nilai intensitas terkecil pada tetangga f(y, x) dengan
menggunakan 8-ketetanggan dan simpan pada minInt.
2. Carilah nilai intensitas terbesar pada tetangga f(y, x) dengan
menggunakan 8-ketetanggan dan simpan pada maksInt.
3. IF f(y, x) < minInt
21
g(y, x) minInt
ELSE
IF f(y. x) > maksInt
g(y, x) maksInt
ELSE
g(y, x) f(y, x)
END-IF
END-IF
Program Filter Batas
==> % FILBATAS Melakukan operasi ketetanggan piksel
==> % menggunakan filter batas
==>
==> F = imread('c:\Image\noise.png');
warning: your version of GraphicsMagick limits images to 16 bits per
pixel
==> Ukuran = size(F);
==> tinggi = Ukuran(1);
==> lebar = Ukuran(2);
==>
==> G = F;
==> for baris=2 : tinggi-1
> for kolom=2 : lebar-1
> minPiksel = min([F(baris-1, kolom-1) ...
> F(baris-1, kolom) F(baris, kolom+1) ...
> F(baris, kolom-1) ...
> F(baris, kolom+1) F(baris+1, kolom-1) ...
22
> F(baris+1, kolom) F(baris+1, kolom+1)]);
> maksPiksel = min([F(baris-1, kolom-1) ...
> F(baris-1, kolom) F(baris, kolom+1) ...
> F(baris, kolom-1) ...
> F(baris, kolom+1) F(baris+1, kolom-1) ...
> F(baris+1, kolom) F(baris+1, kolom+1)]);
>
> if F(baris, kolom) < minPiksel
> G(baris, kolom) = minPiksel;
> else
> if F(baris, kolom) > maksPiksel
> G(baris, kolom) = maksPiksel;
> else
> G(baris, kolom) = F(baris, kolom);
> end
> end
> end
> end
==> figure(1);
==> subplot(1,2,1);imshow(F);
==> subplot(1,2,2);imshow(G);
23
Gambar 3.6Citra noise dan hasilnya
3.2.2.2. Filter Perataan
Filter pererataan (Costa dan Cesar, 2001) dilakukan dengan menggunakan rumus:
g ( y , x )=19 ∑
p=−1
1
∑q=−1
1
f ( y+ p , x+q)
(a) Gambar Asli (b) Setelah diolah
Gambar 3.7Citra perataan
24
3.2.2.3Filter Median
Filter ini dapat dipakai untuk menghilangkan derau bintik-bintik. Nilai yang lebih baik
digunakan untuk suatu piksel ditentukan oleh nilai median dari setiap piksel dan kedelapan
piksel tetangga pada 8-ketetanggaan. Secara matematis, filter dapat dinotasikan seperti
berikut:
g ( y , x )=median¿
f ( y−1 , x−1 ) , f ( y−1 , x ) , f ( y−1 , x+1 ) ,
f ( y , x−1 ) , f ( y , x ) , f ( y , x+1 ) ,
f ( y+1 , x−1 ) , f ( y+1, x ) , f ( y+1, x+1 )¿
Program Filter Median
% FILMEDIAN Melakukan operasi dengan filter median
F = imread('C:\Image\mobil.TIF');
[tinggi, lebar] = size(F);
for baris=2 : tinggi-1
for kolom=2 : lebar-1
data = [F(baris-1, kolom-1) ...
F(baris-1, kolom) ...
F(baris-1, kolom+1) ...
F(baris, kolom-1) ...
F(baris, kolom) ...
F(baris, kolom+1) ...
F(baris+1, kolom-1) ...
F(baris+1, kolom) ...
F(baris+1, kolom+1)];
% Urutkan
25
for i=1 : 8
for j=i+1 : 9
if data(i) > data(j)
tmp = data(i);
data(i) = data(j);
data(j) = tmp;
end
end
end
% Ambil nilai median
G(baris, kolom) = data(5);
end
end
figure(1); imshow(G);
clear;
(a) Gambar asli (b) gambar setelah diolah
Gambar 3.8Citra median
26
3.2.3. Konvolusi
Konvolusi pada citra sering disebut sebagai konvolusi dua-dimensi
(konvolusi 2D). Konvolusi 2D didefinisikan sebagai proses untuk memperoleh suatu
piksel didasarkan pada nilai piksel itu sendiri dan tetangganya, dengan melibatkan
suatu matriks yang disebut kernel yang merepresentasikan pembobotan.
ALGORITMA 4.2 – Konvolusi pada citra dengan mengabaikan bagian tepi
Masukan:
f : Citra yang akan dikonvolusi
h : kernel konvolusi
Keluaran:
g : Citra hasil konvolusi
1. m2 floor(jumlah_baris_kernel h)
2. n2 floor(jumlah_lebar_kernel h)
3. FOR y m2+1 TO tinggi_citra_f – m2
FOR x n2+1 TO lebar_citra_f – n2
// Lakukan konvolusi
jum 0;
FOR p -m2 TO m2
FOR q -n2 TO n2
jum jum * h(p+m2+1, q+n2+1) * f(y-p, x-p)
END-FOR
END-FOR
g2(y, x) jum
END-FOR
END-FOR
4. // Salin posisi g2 ke g dengan membuang yang tidak dikonvolusi
5. FOR y m2+1 TO tinggi_citra_f – m2
27
FOR x n2+1 TO lebar_citra_f – n2
g(y-m2, x-n2) g2(y, x)
END-FOR
END-FOR
(a)Gambar asli (b) setelah konvolusi
Gambar 3.9 Citra hasil konvolusi
3.2.4. Frekuensi
Definisi di Wikipedia menyatakan bahwa frekuensi spasial adalah
karakteristik sebarang struktur yang bersifat periodis sepanjang posisi dalam ruang.
Frekuensi spasial adalah ukuran seberapa sering struktur muncul berulang dalam satu
satuan jarak.
Frekuensi spasial pada citra menunjukkan seberapa sering suatu perubahan aras
keabuan terjadi dari suatu posisi ke posisi berikutnya
3.2.5. Filter lolos rendah
Filter lolos-bawah (low-pass filter) adalah filter yang mempunyai sifat dapat
meloloskan yang berfrekuensi rendah dan menghilangkan yang berfrekuensi tinggi.
Efek filter ini membuat perubahan aras keabuan menjadi lebih lembut.
3.2.6. Filter high boost
Filter lolos-tinggi adalah filter yang ditujukan untuk melewatkan frekuensi
tinggi dan menghalangi yang berfrekuensi rendah. Hal ini biasa dipakai untuk
mendapatkan tepi objek dalam citra atau menajamkan citra
28
3.2.7. Efek emboss
Rahasia pembuatan emboss terletak pada kernel konvolusi dengan sifat
seperti berikut (Oliver, dkk., 1993).
1. Tinggi dan lebar kernel gasal.
2. Bobot dalam kernel bersifat tidak simetris terhadap piksel pusat.
3. Bobot pusat kernel bernilai nol.
4. Jumlah keseluruhan bobot bernilai nol.
3.3 Operasi Geometrik
3.3.1. Pengantar operasi geometrik
Operasi geometrik adalah operasi pada citra yang dilakukan secara geometris
seperti translasi, rotasi, dan penyekalaan. Pada operasi seperti ini terdapat pemetaan
geometrik, yang menyatakan hubungan pemetaan antara piksel pada citra masukan
dan piksel pada citra keluaran
3.3.2. Pergeseran citra
Penggeseran citra ke arah mendatar atau vertikal dapat dilaksanakan dengan
mudah. Rumus yang digunakan sebagai berikut:
xbaru=xlama+sx
ybaru= y lama+sy
Program Pergeseran
% GESER Melakukan operasi penggeseran citra.
F = imread('c:\Image\menara.png');
[tinggi, lebar] = size(F);
sx = 45; % Penggesaran arah horisontal
29
sy = 15; % Penggesaran arah vertikal
F2 = double(F);
G = zeros(size(F2));
for y=1 : tinggi
for x=1 : lebar
xlama = x - sx;
ylama = y - sy;
if (xlama>=1) && (xlama<=lebar) && ...
(ylama>=1) && (ylama<=tinggi)
G(y, x) = F2(ylama, xlama);
else
G(y, x) = 0;
end
end
end
G = uint8(G);
figure(5);
subplot(1,2,1);imshow(F);
subplot(1,2,2);imshow(G);
clear all;
30
(a) gambar asli (b) gambar hasil pergeseran
Gambar 3.9Citra pergeseran
3.3.3. Pemutaran citra
Suatucitradapatdiputardengansudutθ seiring arah jarum jam atau
berlawanan arah jarum jam dengan pusat putaran pada koordinat (0,0).
Program Pemutaran Citra
% ROTASI Melakukan Operasi pemutaran citra.
% Versi 1
% Menggunakan pendekatan pemetaan ke belakang
F = imread('c:\Image\apartemen.png');
[tinggi, lebar] = size(F);
sudut = 10; % Sudut pemutaran
rad = pi * sudut/180;
cosa = cos(rad);
sina = sin(rad);
31
F2 = double(F);
for y=1 : tinggi
for x=1 : lebar
x2 = round(x * cosa + y * sina);
y2 = round(y * cosa - x * sina);
if (x2>=1) && (x2<=lebar) && ...
(y2>=1) && (y2<=tinggi)
G(y, x) = F2(y2, x2);
else
G(y, x) = 0;
end
end
end
G = uint8(G);
figure(4);imshow(F);
figure(5);imshow(G);
clear all;
32
(a) sebelum diputar
(b) setelah diputar
Gambar 3.10PemutaranCitra
3.3.4. Interploasi piksel
Hasil pemutaran citra menggunakan rotasi.m menimbulkan efek bergerigi pada objek
citra. Hal itu diakibatkan oleh penggunaan nilai intensitas didasarkan pada piksel tetangga
terdekat, yang dilakukan melalui:
x2 = round(x * cosa + y * sina);
y2 = round(y * cosa - x * sina);
33
Penggunaan fungsi round (pembulatan ke atas) merupakan upaya untuk
menggunakan intensitas piksel terdekat. Alternatif lain dilakukan dengan menggunakan
floor (pembulatan ke bawah).
(a) Sebelum diputar
(b) setelah diputar
Gambar 3.11Interpolasi Piksel
34
3.3.5. Pemutaran citra sembarang koordinat
Operasi pemutaran citra dapat dilakukan dengan pusat di mana saja; tidak harus dari
(0, 0).Rumus untuk melakukan pemutaran berlawanan arah jarum jam sebesar
xbaru= (x−n )∗cos (θ )+( y−m )∗sin (θ )+n
ybaru=( y−m )∗cos (θ )−( x−n )∗sin (θ )+m
Program Pemutaran Citra Sembarang Koordinat
% ROTASI4 Melakukan operasi pemutaran citra.
% Versi 4 - pusat putaran pada pusat citra
F = imread('c:\Image\panorama.png');
Ukuran = size(F);
tinggi = Ukuran(1);
lebar = Ukuran(2);
sudut = 5; % Sudut pemutaran
rad = pi * sudut/180;
cosa = cos(rad);
sina = sin(rad);
F2 = double(F);
m = floor(tinggi / 2);
n = floor(lebar / 2);
for y=1 : tinggi
for x=1 : lebar
x2 = (x-n) * cosa + (y-m) * sina + n;
y2 = (y-m) * cosa - (x-n) * sina + m;
if (x2>=1) && (x2<=lebar) && ...
(y2>=1) && (y2<=tinggi)
% Lakukan interpolasi bilinear
p = floor(y2);
q = floor(x2);
35
a = y2-p;
b = x2-q;
if (x2==lebar) || (y2 == tinggi)
G(y, x) = F(y2, x2);
else
intensitas = (1-a) * ((1-b) * F(p,q) + ...
b * F(p, q+1)) + ...
a *((1-b)* F(p+1, q) + ...
b * F(p+1, q+1));
G(y, x) = intensitas;
end
else
G(y, x) = 0;
end
end
end
G = uint8(G);
figure(1); imshow(G);
clear all;
36
(a) sebelum diputar
(c) Setelah diputar
Gambar 3.12 Pemutaran Citra Sembarang Koordinat
3.3.6. Pemutaran citra secara utuh
Memutar citra secara keseluruhan berarti semua area citra diputar
secara penuh dengan sudut tertentu.
Program Rotasi Secara Utuh
% ROTASI5 Melakukan operasi pemutaran citra.
% Versi 5
% Memutar dengan hasil utuh
F = imread('c:\Image\BALING.PNG');
Ukuran = size(F);
tinggi = Ukuran(1);
lebar = Ukuran(2);
sudut = 45; % Sudut pemutaran
37
rad = pi * sudut/180;
cosa = cos(rad);
sina = sin(rad);
x11 = 1; y11 = 1;
x12 = lebar; y12 = 1;
x13 = lebar; y13 = tinggi;
x14 = 1; y14 = tinggi;
m = floor(tinggi/2);
n = floor(lebar/2);
% Menentukan pojok
x21 = ((x11-n) * cosa + (y11-m) * sina + n);
y21 = ((y11-m) * cosa - (x11-n) * sina + m);
x22 = ((x12-n) * cosa + (y12-m) * sina + n);
y22 = ((y12-m) * cosa - (x12-n) * sina + m);
x23 = ((x13-n) * cosa + (y13-m) * sina + n);
y23 = ((y13-m) * cosa - (x13-n) * sina + m);
x24 = ((x14-n) * cosa + (y14-m) * sina + n);
y24 = ((y14-m) * cosa - (x14-n) * sina + m);
ymin = min([y21 y22 y23 y24]);
xmin = min([x21 x22 x23 x24]);
38
ymak = max([y21 y22 y23 y24]);
xmak = max([x21 x22 x23 x24]);
lebar_baru = xmak - xmin + 1;
tinggi_baru = ymak - ymin + 1;
tambahan_y = floor((tinggi_baru-tinggi)/2);
tambahan_x = floor((lebar_baru-lebar)/2);
F2=zeros(tinggi_baru, lebar_baru);
for y=1 : tinggi
for x=1 : lebar
F2(y+tambahan_y, x+tambahan_x) = F(y, x);
end
end
figure(1);
imshow( uint8(F2));
% Putar citra
m = floor(tinggi_baru/2);
n = floor(lebar_baru/2);
for y=1 : tinggi_baru
for x=1 : lebar_baru
x2 = round((x-n) * cosa + (y-m) * sina + n);
y2 = round((y-m) * cosa - (x-n) * sina + m);
if (x2>=1) && (x2<=lebar_baru) && ...
(y2>=1) && (y2<=tinggi_baru)
39
G(y, x) = F2(y2,x2);
else
G(y,x) = 0;
end
end
end
figure(2);
G = uint8(G);
imshow(G);
clear all;
(a) Gambar asli
40
(b) Setelah diputar
Gambar 3.13. Pemutaran Citra Secara Utuh
3.3.7. Pembesaran citra
Suatu citra dapat diperbesar dengan membuat setiap piksel menjadi beberapa piksel.
Program Perbesaran Citra
octave:1> function G = perbesar(berkas, sy, sx)
> % PERBESAR Melakukan operasi pembesaran citra.
> % Masukan: berkas = nama berkas image
> % sy : skala pembesaran pada sumbu Y
> % sx : skala pembesaran pada sumbu X
> %
> % Versi 1
>
> F = imread(berkas);
41
> Ukuran = size(F);
> tinggi = Ukuran(1);
> lebar = Ukuran(2);
>
> tinggi_baru = tinggi * sy;
> lebar_baru = lebar * sx;
>
> F2 = double(F);
> for y=1 : tinggi_baru
> y2 = ((y-1) / sy) + 1;
> for x=1 : lebar_baru
> x2 = ((x-1) / sx) + 1;
> G(y, x) = F(floor(y2), floor(x2));
> end
> end
>
> G = uint8(G);
> endfunction
octave:2> Img = Perbesar2('C:\Image\mayudi.png', 4, 4);
octave:3>imshow(Img);
(a) Gambar asli
42
(b) Setelah pembesaran
Gambar 3.14Pembesaran citra
3.3.8. Pengecilan citra
Suatu citra dapat diperkecil dengan membuat setiap piksel menjadi beberapa piksel.
Program Pengecilan Citra
octave:1> function G = perbesar(berkas, sy, sx)
> % PERkecilMelakukan operasi pembesaran citra.
> % Masukan: berkas = nama berkas image
> % sy : skala pembesaran pada sumbu Y
> % sx : skala pembesaran pada sumbu X
> %
> % Versi 1
>
> F = imread(berkas);
> Ukuran = size(F);
43
> tinggi = Ukuran(1);
> lebar = Ukuran(2);
>
> tinggi_baru = tinggi * sy;
> lebar_baru = lebar * sx;
>
> F2 = double(F);
> for y=1 : tinggi_baru
> y2 = ((y-1) / sy) + 1;
> for x=1 : lebar_baru
> x2 = ((x-1) / sx) + 1;
> G(y, x) = F(floor(y2), floor(x2));
> end
> end
>
> G = uint8(G);
> endfunction
octave:2> Img = Perbesar2('C:\Image\mayudi.png', 0,5, 0,5);
octave:3>imshow(Img);
44
(a) Citra asli
(b) Hasil perkecil
Gambar 3.15Pengecilan citra
3.3.9. Pencerminan citra
Pencerminan yang
umumdilakukanberupapencerminansecaravertikaldanpencerminansecara
horizontal.Pencerminansecara horizontal
dilakukandenganmenukarkanduapiksel yang berseberangankir-kanan.
45
ALGORITMA – Mencerminkan gambar secara horizontal
Masukan:
f (M,N): Citra masukan berukuran M baris dan N kolom
Keluaran:
g (M, N): Hasil citra yang telah dicerminkan secara horizontal
FOR baris 1 TO M
FOR kolom 1 TO N
g(baris, kolom) f(N – baris + 1, kolom)
END-FOR
END-FOR
Program Pencerminan secara Horizontal
octave:1> function G = cerminh(F)
> % CERMINH Berfungsi untuk mencerminkan citra
> % secara horizontal
> % Masukan: F = Citra berskala keabuan
>
> [tinggi, lebar] = size(F);
>
> for y=1 : tinggi
> for x=1 : lebar
> x2 = lebar - x + 1;
> y2 = y;
>
> G(y, x) = F(y2, x2);
> end
> end
> endfunction
46
octave:2>
octave:2> G = uint8(G);
error: `G' undefined near line 2 column 11
error: evaluating argument list element number 1
octave:2> F = imread('C:\Image\acha.png');
warning: your version of GraphicsMagick limits images to 16 bits per
pixel
octave:3> G = cerminh(F);
octave:4> figure(2);
octave:5> subplot(1,2,1);imshow(F);
octave:6> subplot(1,2,2);imshow(G);
(a) Gambar asli (b) Gambar Hasil Pencerminan
Gambar 3.16 Pencerminan Citra Secara Horizontal
47
Pencerminan secara Vertical
function G = cerminv(F)
% CERMINV Berfungsi untuk mencerminkan citra
% secara vertikal
% Masukan: F = Citra berskala keabuan
[tinggi, lebar] = size(F);
for y=1 : tinggi
for x=1 : lebar
x2 = x;
y2 = tinggi - y + 1;
G(y, x) = F(y2, x2);
end
end
endfunction
G = uint8(G);
F = imread('C:\Image\acha.png');
G = cerminv(F);
figure(1);
subplot(1,2,1);imshow(F);
subplot(1,2,2);imshow(G);
48
(a) Gambar asli (b) Setelah diolah
Gambar 3.17 Pencerminan Citra Secara Vertical
3.3.10. Efek Ripple
Efek ripple (riak) adalah aplikasi transformasi citra yangmembuat gambar
terlihat bergelombang. Efek riak dapaat dibuat baik pada arah x maupun y.
Transformasinya seperti berikut:
x=x^'+a_x sin 2πy'/T_x
y=y^'+a_y sin 2πx'/T_y
Dalam hal ini, ax dan ay menyatakan amplitudo riak gelombang sinus,
sedangkan Tx dan Ty menyatakan periode gelombang sinus.
Program Ripple
octave:1> function G = ripple(F, ax, ay, tx, ty)
> % RIPPLE Berfungsi untuk melakukan transformasi 'ripple'.
>
> dimensi = size(F);
49
> tinggi = dimensi(1);
> lebar = dimensi(2);
> for y=1 : tinggi
> for x=1 : lebar
> x2 = x + ax * sin(2 * pi * y / tx);
> y2 = y + ay * sin(2 * pi * x / ty);
> if (x2>=1) && (x2<=lebar) && ...
> (y2>=1) && (y2<=tinggi)
>
> % Lakukan interpolasi bilinear
> p = floor(y2);
> q = floor(x2);
> a = y2-p;
> b = x2-q;
>
> if (floor(x2)==lebar) || ...
> (floor(y2) == tinggi)
> G(y, x) = F(floor(y2), floor(x2));
> else
> intensitas = (1-a)*((1-b)*F(p,q) + ...
> b * F(p, q+1)) + ...
> a *((1-b)* F(p+1, q) + ...
> b * F(p+1, q+1));
>
> G(y, x) = intensitas;
> end
> else
> G(y, x) = 0;
50
> end
> end
> end
>
> G = uint8(G);
> endfunction
octave:2> F = imread('C:\image\monas.png');
warning: your version of GraphicsMagick limits images to 16 bits per
pixel
octave:3> G = ripple(F,10,15,120, 250);
octave:4> figure(1);
octave:5> subplot(1,2,1);imshow(F);
octave:6> subplot(1,2,2);imshow(G);
(a) Gambar asli (b) setelah diberi efek
Gambar 3.18 Efek Ripple Citra
51
BAB IV
PENUTUP
4.1 Kesimpulan
Pengolahan citra menjadi suatu yang sangat diperlukan pada era digital saat
ini. Pengolahan dilakukan untuk mendapatkan hasil citra yang diinginkan.
Seorang yang ahli informatika tentu tidak hanya bisa menggunakan aplikasi
pengolahan citra tetapi juga harus mengetahui bagaimana citra tersebut dari citra
asli dimanipulasi menjadi citra yang diinginkan. Tentu saja, ini berhubungan
dengan kode program yang menjadi dasar pengolahan citra. Dalam hal ini dibantu
dengan tool yakni OCTAVE. Dengan tool ini kita mendapatkan gambaran secara
umum proses sebuah citra dioleh ke bentuk lain dengan menggunakan algoritma
dan pemrograman.
4.2 Saran
Sebelum mempelajari pengolahan citra dengan OCTAVE sebaiknya
menguasai dasar pemrograman.
Penggunaan ilmu matematika sangat dibutuhkan dalam pengolahan citra
digital karena berkaitan dengan ukuran.
2
3
3.1
3.2
52
53
Top Related