Bài giảng Đồ họa máy tính - Tuần 7: Phương pháp tô màu - Lý Quốc Ngọc

Đồ họa máy tính  
Tuần 7: Phương pháp tô màu  
Nội dung  
7.1. Tô màu theo vết dầu loang.  
7.2. Tô màu theo dòng quét.  
2
TS. Lý Quốc Ngọc  
3/24/2014  
7.1. Tô màu theo vết dầu loang  
7.1.1. Phát biểu bài toán  
Cho trước biên kín S được xác định bởi dãy liên tục các  
pixels, hãy tô màu miền trong của S.  
Giới hạn bài toán:  
. Màu biên và màu tô thuần nhất.  
. Màu biên khác màu tô.  
3
TS. Lý Quốc Ngọc  
7.1. Tô màu theo vết dầu loang.  
7.1.2. Phương pháp  
L1. Khởi đầu từ điểm P (x,y) trong S với màu tô C(P)  
L2. Khảo sát các điểm trong lân cận của P: NS (P)  
L3. Lặp với mỗi điểm Q thuộc NS(P)  
Nếu C(Q) != C(Boundary) and C(Q) != C(P)  
C(Q) :=C(P)  
P :=Q goto L3  
Nếu khác  
Kết thúc  
4
TS. Lý Quốc Ngọc  
7.1. Tô màu theo vết dầu loang  
7.1.3. Giải thuật  
Procedure Boundary_fill (x, y, fill_color, boundary: integer)  
Var present_color: integer;  
begin  
Present_color := inquire_color;  
if ( present_color != boundary) and (( present_color != fill_color) then  
begin  
Set_pixel (x, y, fill_color);  
Boundary_fill ( x+1, y, fill_color, boundary);  
Boundary_fill ( x-1, y, fill_color, boundary);  
Boundary_fill ( x, y+1, fill_color, boundary);  
Boundary_fill ( x, y-11, fill_color, boundary);  
end  
end  
5
TS. Lý Quốc Ngọc  
7.2. Tô màu theo dòng quét  
7.2.1. Phát biểu bài toán  
Cho đa giác S xác định bởi n đỉnh: P1, P2, ,Pn. Hãy tô  
màu miền trong của S.  
Giới hạn bài toán:  
. Dòng quét nằm ngang.  
. Khoảng cách 2 dòng quét là 1 pixel.  
. Miền được xác định bởi định lý Jordan.  
6
TS. Lý Quốc Ngọc  
7.2. Tô màu theo dòng quét  
7.2.2. Phương pháp  
sọc dựa trên qui tắc xác định miền trong (qui tắc lẽ-  
chẳn).  
Phương pháp chung  
L1. Với mỗi dòng quét  
L2. Xác định giao điểm dòng quét với các cạnh của S.  
L3. Sắp xếp các giao điểm theo thứ tự tăng dần của x  
L4. Lấp đầy pixels giữa các cặp giao điểm lẽ-chẵn.  
7
TS. Lý Quốc Ngọc  
7.2. Tô màu theo dòng quét  
7.2.2. Phương pháp  
Khuyết điểm  
1. Dòng quét đi qua các cạnh // 0x.  
2. Dòng quét đi qua các đỉnh của S.  
8
TS. Lý Quốc Ngọc  
7.2. Tô màu theo dòng quét  
7.2.2. Phương pháp  
Giải quyết vấn đề  
C1. Hiệu chỉnh lại phương pháp.  
C2. Tinh chế dữ liệu đầu vào.  
9
TS. Lý Quốc Ngọc  
7.2. Tô màu theo dòng quét  
7.2.2. Phương pháp  
C2. Tinh chế dữ liệu đầu vào.  
- Loại bỏ các cạnh // Ox.  
- Làm ngắn cạnh tại các đỉnh không cực trị.  
10  
TS. Lý Quốc Ngọc  
7.2. Tô màu theo dòng quét  
7.2.3. Giải thuật  
Cấu trúc dữ liệu AEL (Active Edge List)  
struct AEL {  
Int y_upper;  
Float x_int;  
Float reci_slope;  
Struct AEL *next;  
}
11  
TS. Lý Quốc Ngọc  
7.2. Tô màu theo dòng quét.  
7.2.3. Giải thuật  
Cấu trúc dữ liệu ET (Edge Table)  
struct AEL *ET[MAX_LINES)  
ET[y] trỏ đến danh sách các cạnh có giá trị y của đỉnh thấp  
trùng giá trị y của dòng quét.  
12  
TS. Lý Quốc Ngọc  
7.2. Tô màu theo dòng quét  
Giải thuật sọc dựa trên cấu trúc ET và AEL  
Giai đoạn lấp đầy miền trong của S dựa vào cấu trúc dữ liệu AEL bảng ET.  
L1. Lặp với mỗi dòng quét y từ MIN-Y đến MAX-Y.  
L2.  
L3.  
Nếu ET[y] != NIL thì  
.Thêm các cạnh được trỏ bởi ET[y] vào danh sách AEL được trỏ  
bởi Beglist.  
L4.  
Nếu Beglist != NIL thì  
. Sắp xếp danh sách AEL theo thứ tự tăng dần của x_int.  
. Lấp đầy các pixel giữa các cặp giao điểm lẽ-chẵn ứng với dòng  
quét y dựa vào thông tin trong danh sách AEL đã được sắp thứ tự.  
. Loại bỏ các cạnh trong danh sách AEL có y_upper = y.  
. Cập nhật giá trị x_int bởi lượng reci_slope trong danh sách AEL.  
L4. Kết thúc lặp  
13  
TS. Lý Quốc Ngọc  
pdf 13 trang Thùy Anh 27/04/2022 8740
Bạn đang xem tài liệu "Bài giảng Đồ họa máy tính - Tuần 7: Phương pháp tô màu - Lý Quốc Ngọc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_do_hoa_may_tinh_tuan_7_phuong_phap_to_mau_ly_quoc.pdf