Dokumen tersebut merupakan makalah tentang tutorial operasi geometrik pada pengolahan citra digital. Makalah ini membahas berbagai operasi geometrik seperti penggeseran, pemutaran, interpolasi piksel, pemutaran berdasarkan koordinat sebarang, serta pembesaran dan pengecilan citra.
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
Tutorial Operasi Geometrik
1. 1
TUGAS MANDIRI
Tutorial Operasi Geometrik
Mata Kuliah: Pengolahan Citra Digital
l
130210097 : Rina Permata Sari
Kode Kelas : 142-T128P-M5
Dosen : Cosmas Eko Suharyanto
PROGRAM STUDI TEKNIK INFORMATIKA
UNIVERSITAS PUTERA BATAM
2015
2. 2
KATA PENGANTAR
ِِمْي ِح ْالر ِمنْح هالر ِ هاَّلل ِمْسِب
Assalamu’alaikum Wr.Wb
Puji syukur kami panjatkan ke hadirat Allah Subhanahu wata’ala, 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
3. 3
DAFTAR ISI
KATA PENGANTAR........................................................................................................................ 2
DAFTAR ISI................................................................................................................................ 3
BAB I..........................................................................................................................................4
PENDAHULUAN........................................................................................................................ 4
1.1 Penagantar Pengolahan Citra...................................................................................................4
BAB II.........................................................................................................................................5
PEMBAHASAN .......................................................................................................................... 5
2.1 Penggeseran citra .................................................................................................................... 5
2.2 Pemutaran citra....................................................................................................................... 6
2.3 Interpolasi piksel..................................................................................................................... 8
2.4 Pemutaran citra berdasarkan sebarang koordinat .......................................................................9
2.5 Pemutaran citra secara utuh ................................................................................................... 11
2.6 Pembesaran citra................................................................................................................... 13
2.7 Pengecilan citra..................................................................................................................... 15
2.8 Pembesaran citra dengan skala vertikal dan horizontal............................................................. 16
2.9 Pencerminan citra.................................................................................................................. 18
2.10 Transformasi affine ............................................................................................................. 19
2.11 Efek ripple .......................................................................................................................... 23
2.12 Efek twirl............................................................................................................................ 24
2.13 Transformasi spherical......................................................................................................... 26
2.14 Transformasi bilinear........................................................................................................... 28
BAB III........................................................................................................................................ 31
PENUTUP ................................................................................................................................... 31
3.1. Kesimpulan.......................................................................................................................... 31
3.2. Kritik dan saran.................................................................................................................... 31
DAFTAR PUSTAKA....................................................................................................................... 32
4. 4
BAB I
PENDAHULUAN
1.1 PengantarPengolahanCitra
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 berdimensi-
dua 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.
5. 5
BAB II
PEMBAHASAN
2.1 Penggeserancitra
Penggeseran citra ke arah mendatar atau vertikal dapat dilaksanakan dengan mudah. Rumus
yang digunakan sebagai berikut:
𝑥 𝑏𝑎𝑟𝑢 = 𝑥 𝑙𝑎𝑚𝑎 + 𝑠 𝑥 (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:Imagekelompok.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
6. 6
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:
𝑥 𝑏𝑎𝑟𝑢 = 𝑥 ∗ 𝐶𝑜𝑠( 𝜃) + 𝑦 ∗ 𝑆𝑖𝑛( 𝜃) (5.3)
𝑦 𝑏𝑎𝑟𝑢 = 𝑦 ∗ 𝐶𝑜𝑠( 𝜃) − 𝑥 ∗ 𝑆𝑖𝑛(𝜃) (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 .
7. 7
F = imread(‘D:Imagegedung.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 .
Gambar. Contohpemutarancitra
8. 8
2.3 Interpolasi 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);
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:Imagegedung.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;
9. 9
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 berdasarkansebarang 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:Imagepintu.jpg);
[tinggi, lebar] = size(F);
10. 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
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
11. 11
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 :
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:Imagepintu.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);
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);
12. 12
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]);
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
13. 13
.
2.6 Pembesarancitra
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);
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));
Gambar. Contoh Pemutaran utuh
14. 14
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:Imagegerbang.jpg', 3, 3);
9. Dan imshow(G);untuk menampilkan hasil penggeseran Citra tersebut .
Gambar. Contoh Pembesaran Citra
15. 15
2.7 Pengecilancitra
Bagaimana kalau ingin memperkecil citra? Secara prinsip, pengecilan citra berarti
mengurangi jumlah piksel. Algoritma yang digunakan untuk mewujudkan perbesar.m
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;
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:Imagegerbang.jpg, 0.5, 0.5);
16. 16
9. Dan imshow(G);untuk menampilkan hasil penggeseran Citra tersebut .
2.8 Pembesarancitra dengan skala vertikaldan 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 )
Gambar. Contoh memperkecil citra
17. 17
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;
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:Imagesuasana.jpg, 0.5, 2.5);
8. Dan imshow(G);untuk menampilkan hasil penggeseran Citra tersebut .
Gambar. Contoh besar vertical dan Horisontal
18. 18
2.9 Pencerminancitra
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);
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
x2 = x;
y2 = tinggi - y + 1;
G(y, x) = F(y2, x2);
end
end
end
19. 19
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:Imagekelompok.jpg); untuk membaca gambar .
9. Ketik G = cerminh(F); imshow(G) atau G = cerminv(F); imshow(G) untuk menampilkan
gambar .
2.10 Transformasiaffine
Transformasi affine adalah transformasi linear yang menyertakan penskalaan, pemutaran,
penggeseran, dan shearing (pembengkokan). Transformasi affine dapat dinyatakan dengan
persamaan seperti berikut:
[
𝑥′
𝑦′
] = [
𝑎11 𝑎12
𝑎21 𝑎22
] [
𝑥
𝑦] + [
𝑡 𝑥
𝑡 𝑦
] (5.10)
Persamaan di atas dapat ditulis pula menjadi seperti berikut:
Gambar. Contoh pencerminan citra
20. 20
[
𝑥′
𝑦′
1
] = [
𝑎11 𝑎12 𝑡 𝑥
𝑎21 𝑎22 𝑡 𝑦
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;
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) + ...
b * F(p+1, q+1));
21. 21
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:
F = imread(‘D:Imagekelompok.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);
Contoh penggabungan rotasi, penskalaan, dan translasi:
22. 22
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.
Gambar. Contoh effek Taffine
23. 23
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:
𝑥 = 𝑥′
+ 𝑎 𝑥 𝑠𝑖𝑛
2𝜋𝑦′
𝑇𝑥
(5.12)
𝑦 = 𝑦′
+ 𝑎 𝑦 𝑠𝑖𝑛
2𝜋𝑥′
𝑇𝑦
(5.13)
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) && ...
(y2=1) && (y2<=tinggi)
% Lakukan interpolasi bilinear
p = floor(y2);
q = floor(x2);
a = y2-p;
b = x2-q;
24. 24
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
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:imagegedung.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.
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 )
25. 25
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
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;
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) + ...
26. 26
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
F = imread(‘D:Imagekotatua.png');
G = swirl(F);
9. Ketik imshow(G)untuk menampilkan gambar .
2.13 Transformasispherical
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 untukmelakukan transformasi 'spherical'
dimensi = size(F);
tinggi = dimensi(1);
lebar = dimensi(2);
xc = round(lebar / 2);
27. 27
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);
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)
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
28. 28
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:Imagekotatua.png');
G = spheri(F, 1.8);
9. Ketik imshow(G)untuk menampilkan gambar .
2.14 Transformasibilinear
Transformasi bilinear mempunyai fungsi pemetaan seperti berikut:
𝑥′
= 𝑎1 𝑥 + 𝑎2 𝑦 + 𝑎3 𝑥𝑦 + 𝑎4 (5.27)
𝑦′
= 𝑏1 𝑥 + 𝑏2 𝑦 + 𝑏3 𝑥𝑦 + 𝑏4 (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)
% Fungsi untuk melakukan transformasi bilinear
dimensi = size(F);
tinggi = dimensi(1);
29. 29
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);
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
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
31. 31
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. Kritikdan 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.