operasi filling
TRANSCRIPT
-
7/24/2019 Operasi Filling
1/15
Area Filling
Setelah berhasil membangun objek grafismaka langkah selanjutnya adalahmelakukan customisasi terhadap atributobjek grafis
2
Atribut dari objek grafis dapat berupa: Ukuran garis batas
Tipe garis batas
Warna garis batas Warna objek (Fill color / Area Filling)
-
7/24/2019 Operasi Filling
2/15
Area Filling
Dalam grafis, selain digunakanprimtif-primitif grafis, diperlukanalgoritma khusus untuk mengisi
3
.grafik diterapkan pada objek yangmemiliki hole.
Contoh :
-
7/24/2019 Operasi Filling
3/15
Area Filling
Beberapa algortima yang dapat
digunakan untuk melakukan area filling,
yaitu :
4
Scan Line Boundary Fill Algorithm
Flood Fill Algorithm
-
7/24/2019 Operasi Filling
4/15
Scan Line Fill Algorithm
Dimulai dari kiri atas layar
Bergerak ke kanan hingga batas kanan layar Ulangi untuk baris-baris berikutnya
Jika ditemukan suatu batas area, maka dilakukanoperasiputpixelhingga ditemukan batas area
5
berikutnya
Kelemahan :
Algoritma akan gagal jika ditemui titik-titik ujung,
sehingga perlu penanganan khusus. Solusi : periksa semua informasi titik ujung
berdasarkan list vektor yang dimiliki setiap primitif.
-
7/24/2019 Operasi Filling
5/15
Scan Line Fill Algorithm
Ilustrasi Proses Scan Line
6
Ada masalah ??
-
7/24/2019 Operasi Filling
6/15
Boundary Fill
Dengan teknik ini pengisian warna
dilakukan berdasarkan penentuan titikawal.
Posisi awal diletakkan ada area fillin .
7
Kemudian semua titik tetangga diujiterhadap batas area
Ada 2 metoda untuk mencari titik tetangga
: 4 Connected
8 Connected
-
7/24/2019 Operasi Filling
7/15
Boundary Fill
4 Connected1
4 X 2
3
8
8 Connected
1 2 3
8 X 4
7 6 5
-
7/24/2019 Operasi Filling
8/15
Algoritma 4-Connected
Procedure BFill (x,y,fillcol,boundcol);
Var Currcol : integer;Begin
Currcol getpixel(x,y);If Currcolboundcol and Currcolfillcol then
9
BeginPutpixel (x,y,fillcol);Bfill(x+1,y,fillcol,boundcol);Bfill(x-1,y,fillcol,boundcol);Bfill(x,y+1,fillcol,boundcol);
Bfill(x,y-1,fillcol,boundcol);End;
End;
-
7/24/2019 Operasi Filling
9/15
Algoritma 8-Connected
Procedure BFill (x,y,fillcol,boundcol);Var
Currcol : integer;Begin
Currcol getpixel(x,y);
If (Currcolboundcol) and (Currcolfillcol) thenBegin
10
u p xe x,y, co ;
Bfill(x-1,y-1,fillcol,boundcol);Bfill(x,y-1,fillcol,boundcol);Bfill(x+1,y-1,fillcol,boundcol);Bfill(x-1,y-1,fillcol,boundcol);Bfill(x+1,y-1,fillcol,boundcol);Bfill(x-1,y+1,fillcol,boundcol);
Bfill(x,y+1,fillcol,boundcol);Bfill(x+1,y+1,fillcol,boundcol);
End;End;
-
7/24/2019 Operasi Filling
10/15
Boundary Fill
7 8 9 . . . .
6
5
4
3
1
4 X 2
3
11
2
1
Seed position (x,y)
BFill (x,y,Red,Black);
-
7/24/2019 Operasi Filling
11/15
Boundary Fill
Bila Area Fill menjadi atribut dariobjek maka warna batas dari prosesini akan sama dengan warna batas
12
.
Ingat bahwa boundry objek tidakboleh ada lubang
-
7/24/2019 Operasi Filling
12/15
Flood Fill Algorithm
Proses flood fill mirip denganboundary fill, dimana inti dari prosesini adalah mengubah suatu warna
13
-
7/24/2019 Operasi Filling
13/15
Flood Fill Algorithm
Procedure floodFill (x,y,fillColor,oldColor);
BeginIf getpixel(x,y)= oldColor thenBegin
Putpixel (x,y,fillColor);
14
oo x+ ,y, o or,o o or ;floodFill (x-1,y,fillColor,oldColor);floodFill (x,y+1,fillColor,oldColor);floodFill (x,y-1,fillColor,oldColor);
End;
End;
-
7/24/2019 Operasi Filling
14/15
Apa perbedaan dari Boundary Fill dan Flood
fill, kapan kita memakai Flood fill dankapan kita memakai Boundary Fill
Untuk menjamin keamanan dari algoritma
15
ditambahkan sebuah parameterpenghentian yang lain, yaitu posisi daripixel yang diproses apakah masih didalam
objek atau sudah diluar Ingat bahwa area fill dan garis batas
merupakan 2 buah atribut yang berbeda
-
7/24/2019 Operasi Filling
15/15
16