Tải bản đầy đủ (.ppt) (44 trang)

slike bài giảng đồ họa máy tính các thuật toán tô màu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (241.39 KB, 44 trang )

ĐỒ HỌA RASTER
ĐỒ HỌA RASTER


CÁC THUẬT TOÁN TÔ MÀU
CÁC THUẬT TOÁN TÔ MÀU
Giảng viên : Bùi Tiến Lên
Trang 2
Bài toán tô màu
Bài toán tô màu
Tô màu là thao tác tìm các điểm sáng “nằm bên trong”
một vùng khép kín.
Input :
Vùng S
Output :
{(x
1
, y
1
), (x
2
, y
2
) … (x
n
, y
n
)}
Trang 3
Các hướng tiếp cận
Các hướng tiếp cận


Có hai phương pháp
- Tô màu theo lân cận
- Tô màu theo dòng quét
Toõ maứu theo laõn caọn
Toõ maứu theo laõn caọn
Trang 5
Lân cận là gì ?
Lân cận là gì ?
Có hai loại lân cận : lân cận 4 và lân cận 8.
Lân cận 4
N
4
(x, y) = {(x-1, y), (x, y+1), (x+1, y), (x, y-1)}
Lân cận 8
N
8
(x, y) = {(x-1, y), (x-1, y+1), (x, y+1), (x+1, y+1), (x+1, y),
(x+1, y-1), (x, y-1), (x-1, y-1)}
(x,y) phảitrái
dưới
trên
x
y
(x,y)
x
y
trái
Trang 6
Thuật toán đệ qui
Thuật toán đệ qui

bước 1 Kẻ biên vùng cần tô
bước 2 Xác đònh một điểm (x, y) nằm bên trong vùng
cần tô
bươc 3 Tô điểm (x, y), sau đó tô loang sang những điểm
lân cận
x
y
Trang 7
Caứi ủaởt ủeọ qui
Caứi ủaởt ủeọ qui
// To loang
void BoundaryFill(CDC *pDC, int x, int y,
int fill_color, int boundary_color)
{
int color;
color = pDC->GetPixel(x, y);
if((color != fill_color) && (color != boundary_color))
{
pDC->SetPixel(x, y, fill_color);
BoundaryFill(pDC, x-1, y, fill_color, boundary_color);
BoundaryFill(pDC, x, y+1, fill_color, boundary_color);
BoundaryFill(pDC, x+1, y, fill_color, boundary_color);
BoundaryFill(pDC, x, y-1, fill_color, boundary_color);
}
}
Trang 8
Nhận xét thuật toán đệ qui
Nhận xét thuật toán đệ qui
Ưu điểm
Có thể tô vùng có hình dạng

bất kỳ.
Khuyết điểm
Không thể dùng để tô các
vùng có kích thước lớn.
kích
thước !
kích
thước !
Trang 9
Thuật toán cải tiến
Thuật toán cải tiến
bước 1
Cất điểm hạt giống đầu tiên vào kho.
bước 2
Lặp nếu kho không rỗng
- c
1
Lấy điểm hạt giống.
- c
2
Tô điểm hạt giống sau đó tô loang sang trái và
sang phải.
- c
3
Bổ sung những điểm hạt giống mới vào kho từ
dòng trên và dòng dưới.
Trang 10
Thuật toán cải tiến
Thuật toán cải tiến
hạt giống : điểm sáng

kho : chứa các điểm hạt giống
Trang 11
Thuật toán cải tiến
Thuật toán cải tiến
biên biên
Minh họa tô loang
Trang 12
Thuật toán cải tiến
Thuật toán cải tiến
Tiêu chuẩn để là điểm hạt giống
1. Điểm này chưa được tô và không phải điểm biên.
2. Điểm này thoả :
-
Điểm trái đầu tiên.
-
hoặc bên trái của nó là điểm biên (nếu nó không
phải là điểm trái đầu tiên).
Trang 13
Thuật toán cải tiến
Thuật toán cải tiến
biên biên
Minh họa bổ sung những điểm hạt giống mới
biên biên
biên
hạt giống
Trang 14
Tô theo lân cận - Một số vấn đề
Tô theo lân cận - Một số vấn đề
Sử dụng
lân cận nào ?

Trang 15
Tô theo lân cận - Một số vấn đề
Tô theo lân cận - Một số vấn đề
Đường biên
màu gì ?
Trang 16
Tô theo lân cận - Một số vấn đề
Tô theo lân cận - Một số vấn đề
Toâ maøu theo doøng queùt
Toâ maøu theo doøng queùt
Trang 18
Khái niệm dòng quét
Khái niệm dòng quét
Dòng quét là dòng điểm sáng trên màn hình
y
Trang 19
Toâ hình chöõ nhaät
Toâ hình chöõ nhaät
l r
b
t
y
y
Trang 20
Tô hình tam giác
Tô hình tam giác
Input
(X
1
, Y

1
), (X
2
, Y
2
), (X
3
, Y
3
)
Cách tô
bước 1 : Sắp xếp các đỉnh
Y
1
≤ Y
2
≤ Y
3
bước 2 : Phân trường hợp
Theo tung độ
Trang 21
Toâ hình tam giaùc
Toâ hình tam giaùc
Y
1
= Y
2
= Y
3
1 3 2

Y
1
< Y
2
= Y
3
1
2
3
Y
1
= Y
2
< Y
3
12
3
Y
1
< Y
2
< Y
3
1
2
3
Trang 22
Tô hình tam giác
Tô hình tam giác
Tô tam giác (Y

1
= Y
2
= Y
3
)
1. Tìm X
min
, X
max
2. Tô dòng Y
1
bắt đầu tại cột X
min
, kết thúc tại cột X
max
1 3 2
Y
1
X
min
X
max
Trang 23
Tô hình tam giác
Tô hình tam giác
Tô tam giác (Y
1
< Y
2

= Y
3
)
Lặp y : Y
1
… Y
2
1. Tìm hoành độ giao điểm x
l
, x
r

giữa dòng quét y với các cạnh
trái và cạnh phải của tam giác.
2. Tô dòng y bắt đầu tại cột x
l
, kết
thúc tại cột x
r
.
1
2 3
Y
1
Y
2
y
y
x
l

x
r
Trang 24
Tô hình tam giác
Tô hình tam giác
Ví dụ
Các hoành độ giao điểm của các dòng quét với cạnh
(2, 2), (11, 6).
6
5
4
3
2
1
2
8
4
17
4
26
4
35
4
44
4
Trang 25
Tô hình tam giác
Tô hình tam giác
12
12

cumoi
1
YY
XX
k
với
kxx
X là đầu x
điểm giao độ hoành tính Cách


=
+=
1
2

×