Tugas mandiri pengolahan citra digital

67
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

Transcript of Tugas mandiri pengolahan citra digital

Page 1: Tugas mandiri pengolahan citra digital

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

Page 2: Tugas mandiri pengolahan citra digital

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

Page 3: Tugas mandiri pengolahan citra digital

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

Page 4: Tugas mandiri pengolahan citra digital

4.2 Saran ................................................................................................ 48

DAFTAR PUSTAKA

iii

Page 5: Tugas mandiri pengolahan citra digital

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

Page 6: Tugas mandiri pengolahan citra digital

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

Page 7: Tugas mandiri pengolahan citra digital

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

Page 8: Tugas mandiri pengolahan citra digital

(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

Page 9: Tugas mandiri pengolahan citra digital

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

Page 10: Tugas mandiri pengolahan citra digital

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

Page 11: Tugas mandiri pengolahan citra digital

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

Page 12: Tugas mandiri pengolahan citra digital

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

Page 13: Tugas mandiri pengolahan citra digital

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

Page 14: Tugas mandiri pengolahan citra digital

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

Page 15: Tugas mandiri pengolahan citra digital

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

Page 16: Tugas mandiri pengolahan citra digital

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

Page 17: Tugas mandiri pengolahan citra digital

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

Page 18: Tugas mandiri pengolahan citra digital

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

Page 19: Tugas mandiri pengolahan citra digital

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

Page 20: Tugas mandiri pengolahan citra digital

==> 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

Page 21: Tugas mandiri pengolahan citra digital

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

Page 22: Tugas mandiri pengolahan citra digital

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

Page 23: Tugas mandiri pengolahan citra digital

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

Page 24: Tugas mandiri pengolahan citra digital

> 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

Page 25: Tugas mandiri pengolahan citra digital

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

Page 26: Tugas mandiri pengolahan citra digital

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

Page 27: Tugas mandiri pengolahan citra digital

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

Page 28: Tugas mandiri pengolahan citra digital

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

Page 29: Tugas mandiri pengolahan citra digital

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

Page 30: Tugas mandiri pengolahan citra digital

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

Page 31: Tugas mandiri pengolahan citra digital

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

Page 32: Tugas mandiri pengolahan citra digital

(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

Page 33: Tugas mandiri pengolahan citra digital

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

Page 34: Tugas mandiri pengolahan citra digital

(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

Page 35: Tugas mandiri pengolahan citra digital

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

Page 36: Tugas mandiri pengolahan citra digital

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

Page 37: Tugas mandiri pengolahan citra digital

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

Page 38: Tugas mandiri pengolahan citra digital

(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

Page 39: Tugas mandiri pengolahan citra digital

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

Page 40: Tugas mandiri pengolahan citra digital

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

Page 41: Tugas mandiri pengolahan citra digital

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

Page 42: Tugas mandiri pengolahan citra digital

(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

Page 43: Tugas mandiri pengolahan citra digital

> 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

Page 44: Tugas mandiri pengolahan citra digital

(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

Page 45: Tugas mandiri pengolahan citra digital

> 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

Page 46: Tugas mandiri pengolahan citra digital

(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

Page 47: Tugas mandiri pengolahan citra digital

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

Page 48: Tugas mandiri pengolahan citra digital

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

Page 49: Tugas mandiri pengolahan citra digital

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

Page 50: Tugas mandiri pengolahan citra digital

(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

Page 51: Tugas mandiri pengolahan citra digital

> 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

Page 52: Tugas mandiri pengolahan citra digital

> 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

Page 53: Tugas mandiri pengolahan citra digital

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

Page 54: Tugas mandiri pengolahan citra digital

53