Anda di halaman 1dari 51

TUGAS MANDIRI

Tutorial Operasi Geometrik


Mata Kuliah: Pengolahan Citra Digital

130210129
130210119
130210307
130210082
130210097
Kode Kelas
Dosen

KELOMPOK
: Omay Marjuki
: Untung Prasetyo
: Oven The Sutra Situmeang
: Fitri Dayanti
: Rina Permata Sari
: 142-TI28P-M5
: Cosmas Eko Suharyanto, S.Kom.

PROGRAM STUDI TEKNIK INFORMATIKA


UNIVERSITAS PUTERA BATAM
2015

KATA PENGANTAR

Assalamualaikum Wr.Wb
Puji syukur kami panjatkan ke hadirat Allah Subhanahu wataala, karena berkat
rahmat-Nya kami dapat menyelesaikan makalah yang berjudul Tutorial Operasi Geometrik.
Makalah ini diajukan guna memenuhi tugas mata kuliah Pengolahan Citra Digital.
Kami mengucapkan terima kasih kepada semua pihak yang telah membantu sehingga
makalah ini dapat diselesaikan sesuai dengan waktunya. Makalah ini masih jauh dari
sempurna. Oleh karena itu kami mengharapkan kritik dan saran yang bersifat membangun
demi kesempurnaan makalah ini.
Semoga makalah ini memberikan informasi bagi masyarakat dan bermanfaat untuk
pengembangan ilmu pengetahuan bagi kita semua.

Batam, Juni 2015

Penulis

Kelompok

DAFTAR ISI
2

KATA PENGANTAR.................................................................................................................ii
DAFTAR ISI.............................................................................................................................iii
BAB I.........................................................................................................................................1
PENDAHULUAN......................................................................................................................1
1.1 Penagantar Pengolahan Citra..............................................................................................1
BAB II........................................................................................................................................2
PEMBAHASAN........................................................................................................................2
2.1 Penggeseran citra.................................................................................................................2
2.2 Pemutaran citra.....................................................................................................................3
2.3 Interpolasi piksel..................................................................................................................5
2.4 Pemutaran citra berdasarkan sebarang koordinat.................................................................6
2.5 Pemutaran citra secara utuh.................................................................................................8
2.6 Pembesaran citra................................................................................................................10
2.7 Pengecilan citra..................................................................................................................12
2.8 Pembesaran citra dengan skala vertikal dan horizontal.....................................................13
2.9 Pencerminan citra...............................................................................................................15
2.10 Transformasi affine..........................................................................................................16
2.11 Efek ripple........................................................................................................................20
2.12 Efek twirl..........................................................................................................................21
2.13 Transformasi spherical.....................................................................................................23
2.14 Transformasi bilinear.......................................................................................................25
BAB III.....................................................................................................................................27
PENUTUP................................................................................................................................27
3.1. Kesimpulan.......................................................................................................................27
3.2. Kritik dan saran.................................................................................................................27
DAFTAR PUSTAKA...............................................................................................................28

BAB I
PENDAHULUAN

1.1 Pengantar Pengolahan Citra


Pengolahan citra adalah salah satu cabang dari ilmu informatika. Pengolahan citra berkutat
pada usaha untuk melakukan transformasi suatu citra/gambar menjadi citra lain dengan
menggunakan teknik tertentu. Pengolahan citra merupakan bidang yang bersifat multidisiplin,
yang terdiri dari banyak aspek, antara lain fisika, elektronika, matematika, seni dan teknologi
komputer.
Pengolahan citra (image processing) memiliki hubungan yang sangat erat dengan disiplin
ilmu yang lain. jika sebuah ilmu disiplin ilmu dinyatakan dengan bentuk proses suatu input
menjadi output, maka pengolahan citra memiliki input berupa citra serta output juga berupa
citra.
Secara umum, istilah pengolahan citra digital menyatakan pemrosesan gambar berdimensidua melalui komputer digital (Jain, 1989). Menurut Efford (2000), pengolahan citra adalah
istilah umum untuk berbagai teknik yang k
eberadaannya 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.
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. Secara prinsip, terdapat dua cara yang dapat dipakai. Pertama yaitu pemetaan ke
depan dan kedua berupa pemetaan ke belakang.

BAB II
PEMBAHASAN
2.1 Penggeseran citra
Penggeseran citra ke arah mendatar atau vertikal dapat dilaksanakan dengan mudah. Rumus
yang digunakan sebagai berikut:

x baru=x lama + s x

y baru = y lama +s y

(5.1)

(5.2)

Untuk penyederhanaan pembahasan, sx dan sy dianggap bertipe bilangan bulat.

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )

3. Ketik Sintax berikut pada Notepad .

F = imread(D:\Image\kelompok.jpg);

[tinggi, lebar] = size(F);

sx = 45; % Penggesaran arah horisontal

sy = -35; % 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

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7. Ketikan G = uint8(G);Di Line selanjutnya dan figure(1); imshow(G);untuk menampilkan


hasil penggeseran Citra tersebut .

Gambar. Contoh penggeseran citra

2.2 Pemutaran citra

Suatu citra dapat diputar dengan sudut

seiring arah jarum jam atau berlawanan arah

jarum jam dengan pusat putaran pada koordinat (0,0). Gambar 5.3 menjelaskan bentuk
pemutaran citra. Adapun rumus yang digunakan untuk memutar citra dengan sudut

berlawanan arah jam berupa:


4

x baru=xcos ( ) + ysin ( )

(5.3)

y baru = ycos ( )xsin ()

(5.4)

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )

3. Ketik Sintax berikut pada Notepad .

F = imread(D:\Image\gedung.jpg);

[tinggi, lebar] = size(F);

sudut = 10; % Sudut pemutaran

rad = pi * sudut/180;

cosa = cos(rad);

sina = sin(rad);

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

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7. Ketikan G = uint8(G);Di Line selanjutnya dan figure(1); imshow(G);untuk menampilkan


hasil penggeseran Citra tersebut .
6

2.3 Interpolasi piksel

Gambar. Contoh pemutaran


citra

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);

Penggunaan fungsi round (pembulatan ke atas) merupakan upaya untuk menggunakan


intensitas piksel terdekat. Alternatif lain dilakukan dengan menggunakan floor (pembulatan
ke bawah).

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )

3. Ketik Sintax berikut pada Notepad .

F = imread(D:\Image\gedung.png');

[tinggi, lebar] = size(F);

sudut = 15; % Sudut pemutaran

rad = pi * sudut/180;

cosa = cos(rad);

sina = sin(rad);

F2 = double(F);

for y=1 : tinggi

for x=1 : lebar

x2 = x * cosa + y * sina;

y2 = y * cosa - x * sina;

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 (x2 == lebar) || (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;

end

end

end

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7. Ketikan G = uint8(G);Di Line selanjutnya dan figure(1); imshow(G);untuk menampilkan


hasil penggeseran Citra tersebut .

2.4 Pemutaran citra berdasarkan sebarang koordinat


Operasi pemutaran citra dapat dilakukan dengan pusat di mana saja; tidak harus dari (0, 0).

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )

3. Ketik Sintax berikut pada Notepad .

F = imread(D:\Image\pintu.jpg);

[tinggi, lebar] = size(F);

10

sudut = 10; % Sudut pemutaran

rad = pi * sudut/180;

cosa = cos(rad);

sina = sin(rad);

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

11

end

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7. Ketikan G = uint8(G);Di Line selanjutnya dan figure(1); imshow(G);untuk menampilkan


hasil penggeseran Citra tersebut .

Gambar. Contoh Pemutaran citra berdasarkan sebarang


koordinat

2.5 Pemutaran citra secara utuh


Pada seluruh contoh yang telah diberikan, ada bagian gambar yang hilang ketika pemutaran
dilaksanakan. Namun, adakalanya dihendaki agar pemutaran citra tidak membuat ada bagian
citra asli hilang. Untuk keperluan ini, ukuran citra hasil pemutaran harus diubah sesuai
dengan sudut putaran.

Turorialnya adalah sebagai berikut :

12

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )
3. Ketik Sintax berikut pada Notepad .

F = imread(D:\Image\pintu.jpg);

[tinggi, lebar] = size(F);

sudut = 45; % Sudut pemutaran

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);

13

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]);

14

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

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7. Ketikan G = uint8(G);Di Line selanjutnya dan figure(1); imshow(G);untuk menampilkan


hasil penggeseran Citra tersebut
15

.
Gambar. Contoh Pemutaran utuh

2.6 Pembesaran citra


Suatu citra dapat diperbesar dengan membuat setiap piksel menjadi beberapa piksel.

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )
3. Ketik Sintax berikut pada Notepad .
function G = perbesar(berkas, sy, sx)

F = imread(berkas);

[tinggi, lebar] = size(F);

16

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

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7. Ketikan G = uint8(G);Di Line

8. Selanjutnya ketik Img = perbesar('D:\Image\gerbang.jpg', 3, 3);

17

9. Dan imshow(G);untuk menampilkan hasil penggeseran Citra tersebut .

Gambar. Contoh Pembesaran Citra

2.7 Pengecilan citra


Bagaimana kalau ingin memperkecil citra? Secara prinsip, pengecilan citra berarti
mengurangi jumlah piksel. Algoritma yang digunakan untuk mewujudkan perbesar.m
18

maupun perbesar2.m dapat digunakan untuk keperluan ini dengan m berupa bilangan pecahan
seperti 1/2, , 1/8, dan seterusnya.

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )
3. Ketik Sintax berikut pada Notepad .
function G = perbesar(berkas, sy, sx)

F = imread(berkas);

[tinggi, lebar] = size(F);

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;

19

G(y, x) = F(floor(y2), floor(x2));

end

end

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7. Ketikan G = uint8(G);Di Line

8. Selanjutnya ketik Img = perbesar2(D:\Image\gerbang.jpg, 0.5, 0.5);

9. Dan imshow(G);untuk menampilkan hasil penggeseran Citra tersebut .

20

Gambar. Contoh memperkecil citra

2.8 Pembesaran citra dengan skala vertikal dan horizontal


Fungsi perbesar dan perbesar2 dapat digunakan untuk melakukan perbesaran/pengecilan
dengan skala horizontal dan vertikal yang berbeda.

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )
3. Ketik Sintax berikut pada Notepad .
function G = perbesar(berkas, sy, sx)

F = imread(berkas);

21

[tinggi, lebar] = size(F);

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

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .
7. Selanjutnya ketik Img = perbesar(D:\Image\suasana.jpg, 0.5, 2.5);

22

8. Dan imshow(G);untuk menampilkan hasil penggeseran Citra tersebut .

Gambar. Contoh besar vertical dan Horisontal

2.9 Pencerminan citra


Pencerminan yang umum dilakukan berupa pencerminan secara vertikal dan pencerminan
secara horizontal.

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )
3. Ketik Sintax berikut pada Notepad .

function G = cerminh(F)

[tinggi, lebar] = size(F);

23

for y=1 : tinggi

for x=1 : lebar

x2 = lebar - x + 1;

y2 = y;

G(y, x) = F(y2, x2);

end

end

end

Atau

function H = cerminv(F)

[tinggi, lebar] = size(F);

for y=1 : tinggi

for x=1 : lebar

24

x2 = x;

y2 = tinggi - y + 1;

G(y, x) = F(y2, x2);

end

end

end

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7. Ketikan G = uint8(G);Di Line

8. Ketik F = imread(D:\Image\kelompok.jpg); untuk membaca gambar .

9. Ketik G = cerminh(F); imshow(G) atau G = cerminv(F); imshow(G) untuk menampilkan


gambar .

25

Gambar. Contoh pencerminan citra

2.10 Transformasi affine


Transformasi affine adalah transformasi linear yang menyertakan penskalaan, pemutaran,
penggeseran, dan shearing (pembengkokan). Transformasi affine dapat dinyatakan dengan
persamaan seperti berikut:

[ ][

][ ] [ ]

x ' = a11 a12 x + t x


y'
a21 a22 y t y

(5.10)

Persamaan di atas dapat ditulis pula menjadi seperti berikut:

26

[ ][

][ ]

a11 a12 t x x
x'
y ' = a21 a22 t y y
1
0
0 1 1

(5.11)

Berdasarkan persamaan di atas, terlihat bahwa transformasi affine memiliki enam derajat
kebebasan: dua untuk translasi (tx dan ty) dan empat buah untuk rotasi, penskalaan, stretching,
dan shearing (a11, a12, a21, dan a22).

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )
3. Ketik Sintax berikut pada Notepad .

function G = taffine(F, a11, a12, a21, a22, tx, ty)

[tinggi, lebar] = size(F);

for y=1 : tinggi

for x=1 : lebar

x2 = a11 * x + a12 * y + tx;

27

y2 = a21 * x + a22 * y + 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) + ...

28

b * F(p+1, q+1));

G(y, x) = intensitas;

end

else

G(y, x) = 0;

end

end

end

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7. Ketikan G = uint8(G);Di Line

8. Pilih dan ketik sintak berikut sesuai dengan keinginan .

Contoh penggunaan fungsi taffine untuk melakukan pembengkokan:

29

F = imread(D:\Image\kelompok.jpg);

G = taffine(F,1,0.15,0,1,0,0);

imshow(G)

Contoh berikut digunakan untuk memutar gambar:

rad = 10 * pi / 180;

G = taffine(F,cos(rad),sin(rad),

-sin(rad),cos(rad),0,0);

imshow(G)

Contoh penggabungan rotasi dan translasi:

G = taffine(F,cos(rad),sin(rad),-sin(rad),

cos(rad),-30,-50);

30

Contoh penggabungan rotasi, penskalaan, dan translasi:

G = taffine(F,2 * cos(rad),sin(rad),-sin(rad),

2 * cos(rad),-30,-50);

Perlu diketahui, angka seperti 2 di depan cos(rad) menyatakan bahwa hasilnya adalah
kebalikannya, yaitu kalinya.

31

\
Gambar. Contoh effek Taffine

2.11 Efek ripple


Efek ripple (riak) adalah aplikasi transformasi citra yang membuat gambar terlihat
bergelombang. Efek riakdapaat dibuat baik pada arah x maupun y. Transformasinya seperti
berikut:

x=x ' + ax sin

2 y '
Tx

(5.12)

y= y ' +a y sin

2 x '
Ty

(5.13)

32

Dalam hal ini, ax dan ay menyatakan amplitudoriak gelombang sinus, sedangkan Tx dan Ty
menyatakan periode gelombang sinus.

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )
3. Ketik Sintax berikut pada Notepad .

function G = ripple(F, ax, ay, tx, ty)

% RIPPLE Berfungsi untuk melakukan transformasi 'ripple'.

dimensi = size(F);

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) && ...

33

(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));

34

G(y, x) = intensitas;

end

else

G(y, x) = 0;

end

end

end

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7.Ketikan G = uint8(G); Di Line

8.Pilih dan ketik sintak

F = imread(D:\image\gedung.png');

G = ripple(F,10,15,120, 250);
9. Ketik imshow(G)untuk menampilkan gambar .

2.12 Efek twirl


Transformasi twirl(olak atau puntiran) dilakukan dengan memutar citra berdasarkan titik
pusat citra, tetapi tidak bersifat linear.

35

Turorialnya adalah sebagai berikut :

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )
3. Ketik Sintax berikut pada Notepad .

function G = twirl(F)

% TWIRL Berfungsi untuk melakukan transformasi 'twirl'

dimensi = size(F);

tinggi = dimensi(1);

lebar = dimensi(2);

xc = round(lebar / 2);

yc = round(tinggi / 2);

alpha = 43 * pi / 180;

rmaks = 0.5 * sqrt(xc^2 + yc ^ 2); % 1/2 diagonal citra

36

for y=1 : tinggi

for x=1 : lebar

r = sqrt((x-xc)^2+(y-yc)^2);

beta = atan2(y-yc, x-xc) +

alpha * (rmaks - r) / rmaks;

x2 = xc + r * cos(beta);

y2 = yc + r * sin(beta);

if (x2=1) && (x2<=lebar) && ...

(y2=1) && (y2<=tinggi)

% Lakukan interpolasi bilinear

p = floor(y2);

q = floor(x2);

a = y2-p;

b = x2-q;

37

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;

end

end

end

38

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7. Ketikan G = uint8(G);Di Line

8. Pilih dan ketik sintak

F = imread(D:\Image\kotatua.png');
G = swirl(F);
9. Ketik imshow(G)untuk menampilkan gambar .

2.13 Transformasi spherical


Transformasi spherical memberikan efek bulatan (bola), seperti melihat gambar
menggunakan lensa pembesar.

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )
3. Ketik Sintax berikut pada Notepad .

function G = spheri(F, rho)

% SPHERI Berfungsi untuk melakukan transformasi 'spherical'

dimensi = size(F);

39

tinggi = dimensi(1);

lebar = dimensi(2);

xc = round(lebar / 2);

yc = round(tinggi / 2);

rmaks = xc; % 1/2 lebar gambar

for y=1 : tinggi

for x=1 : lebar

r = sqrt((x-xc)^2+(y-yc)^2);

z = sqrt(rmaks^2-r^2);

bx = (1 - 1/rho) * asin((x-xc)/...

sqrt((x-xc)^2+z^2));

by = (1 - 1/rho) * asin((y-yc)/...

sqrt((y-yc)^2+z^2));

if r <= rmaks

x2 = x - z * tan(bx);

40

y2 = y - z * tan(by);

else

x2 = x;

y2 = y;

end

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)

41

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;

end

end

end

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

42

7.Ketikan G = uint8(G);Di Line

8.Pilih dan ketik sintak

F = imread(D:\Image\kotatua.png');
G = spheri(F, 1.8);
9. Ketik imshow(G)untuk menampilkan gambar .

2.14 Transformasi bilinear

Transformasi bilinear mempunyai fungsi pemetaan seperti berikut:

'

x =a1 x + a2 y +a 3 xy +a 4

(5.27)

y ' =b1 x+ b2 y+ b3 xy + b4

(5.28)

Transformasi ini termasuk dalam transformasi nonlinear mengingat terdapat pencampuran xy.

1. Buka Aplikasi Octave 3.6.3

2. Buka aplikasi Notepad pada windows ( Langkah ini bisa dilewati apabila ingin langsung
mengetikan sintax pada jendela Octave 3.6.3 )
3. Ketik Sintax berikut pada Notepad .

function G = tbilin(F, a1, a2, a3, a4, b1, b2, b3, b4)

43

% Fungsi untuk melakukan transformasi bilinear

dimensi = size(F);

tinggi = dimensi(1);

lebar = dimensi(2);

for y=1 : tinggi

for x=1 : lebar

x2 = a1 * x + a2 * y + a3 * x * y + a4;

y2 = b1 * x + b2 * y + b3 * x * y + b4;

if (x2=1) && (x2<=lebar) && ...

(y2=1) && (y2<=tinggi)

% Lakukan interpolasi bilinear

p = floor(y2);

q = floor(x2);

44

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;

end

45

end

end

4. Buka kembali jendela Octave 3.6.3


5. Klik kanan pada bagian tepi atas Jendela Octave 3.6.3
6. Pilih edit lalu paste pada pilihan tersebut .

7.Ketikan G = uint8(G);Di Line

8.Pilih dan ketik sintak

F = imread(c:\Image\kotatua.tiff');

G = tbilin(F, 1.2,0.1,0.005,-45,0.1,1,0.005,-30);
9. Ketik imshow(G)untuk menampilkan gambar .

46

BAB III
PENUTUP
3.1. Kesimpulan
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.2. Kritik dan saran


Dalam penulisan makalah ini jauh dari kata sempurna. Oleh karena itu penulis mengharapkan
saran dan kritik yang membangun dari para pembaca untuk meningkatkan kualitas dari isi
makalah ini dikemudian hari.

47

DAFTAR PUSTAKA
Kadir, Abdul & Adhi Susanto. (2013). Teori dan Aplikasi Pengolahan Citra. ANDI. Yogyakarta.

48