Các thuật toán tô màu• Bằng các điểm và đoạn thẳng, chúng ta có thể dễ dàng biểu diễn các đối tượng với các đường biên khép kín bao quanh.. • Tô màu: – Xác định điểm ảnh nằm trong đối tư
Trang 2Các hệ màu
Trang 5Các thuật toán tô màu
• Bằng các điểm và đoạn thẳng, chúng ta có thể dễ dàng biểu diễn các đối tượng với các đường biên khép kín bao quanh.
• Đối tượng đặc?
• Tô màu:
– Xác định điểm ảnh nằm trong đối tượng
– Thíêt lập 1 màu xác định cho những điểm ảnh thuộc đối tượng
• Loại đường biên
– Đa giác, đường tròn, các đường đơn giản
– Đường khép kín bất kỳ
• Phương pháp tô màu
1 Tô màu theo dòng quét (scan-line fill)
2 Tô màu dựa theo đường biên (boundary fill)
Trang 6Phương pháp tiếp cận dựa theo
đường biên Boundary-fill
• Thông thường đường biên của
2 Kiểm tra các điểm lân cận
Nếu không phải điểm đã tô hoặc
điểm biên thì tô màu cho điểm đó
Trang 7Thuật toán tô màu dựa theo đường
biên Boundary-fill
Trang 8Minh hoạ thuật toán tô màu dựa theo đường biên Boundary-fill
• Phải đảm bảo đường
biên là khép kín và
màu cần tô khác màu
biên
• Thuật toán thực hiện
gọi đệ qui nên dễ dẫn
tới tràn stack khi vùng
tô lớn
• Dư thừa khi vẫn gọi
đệ qui cho các điểm
Trang 9Tô màu 4 hướng hoặc 8 hướng
• Nếu chỉ xét bốn
điểm lân cận (trái,
phải, trên, dưới) thì
tây, đông bắc, đông
nam, tây bắc, tây
Trang 10Tô màu theo 8 hướng
Trang 11Thuật toán Flood-fill
Trang 12Thuật toán Flood-fill không dùng đệ qui
• 1 Khởi tạo 1 điểm nằm trong vùng tô
• 2 Thực hiện tô loang dần theo chiều ngang (trái
• qua phải và phải qua trái) cho đến khi dụng biên thì dừng lại
• 3 Ứng với mỗi điểm trên dòng quét ngang, thực hiện loang để tìm những điểm ảnh có hoành độ nhỏ nhất sát với biên chưa được tô nằm trên và dưới, sau đó lưu vào Stack
• 4 Lặp bước 2 nếu còn một điểm trong Stack chưa được tô
Trang 13Minh hoạ thuật toán Flood-fill
không dùng đệ qui
Trang 15Phương pháp tiếp cận dựa theo dòng quét
Trang 16Ví dụ
Trang 17Xét trường hợp – cắt hai cạnh
Trang 18Trường hợp – đi qua một đỉnh
Trang 19Trường hợp – đi qua cạnh nằm ngang
Trang 20Minh họa thuật toán
Trang 21Nhắc lại 3 trường hợp đặc biệt
Trang 22Phân loại các trường hợp
Trang 23Rút ngắn cạnh theo tung độ
Trang 24Tiền xử lý đa giác
Trang 25Tối ưu tốc độ
Trang 26Bảng các cạnh bucket
Trang 27Tạo bảng cạnh ET
Trang 28Thuật toán tô màu đa giác
Trang 29Active Edge Table
Trang 30Active Edge Table
Trang 31Vòng lặp tiếp theo
Trang 33Integer Active Edge Table
Trang 34Integer Active Edge Table
Trang 35Edge hash table
Trang 36Câu hỏi