Bài giảng đồ họa : Các thuật toán tô màu part 4
Số trang: 4
Loại file: pdf
Dung lượng: 146.05 KB
Lượt xem: 13
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài toán đặt ra : Cần tô màu vùng tô nếu biết được màu của đường biên vùng tô và một điểm nằm bên trong vùng tô. • Yù tưởng : Bắt đầu từ điểm nằm bên trong vùng tô, kiểm tra các điểm lân cận của nó đã được tô hay có phải là điểm có màu trùng màu biên hay không, nếu không phải thì ta sẽ tô điểm đó. Quá trình này được lặp lại cho tới khi không còn tô được nữa thì dừng....
Nội dung trích xuất từ tài liệu:
Bài giảng đồ họa : Các thuật toán tô màu part 4 ÑOÀ HOÏA MAÙY TÍNH Thuaät toaùn toâ maøu theo ñöôøng bieân • Baøi toaùn ñaët ra : Caàn toâ maøu vuøng toâ neáu bieát ñöôïc maøu cuûa ñöôøng bieân vuøng toâ vaø moät ñieåm naèm beân trong vuøng toâ. • Yù töôûng : Baét ñaàu töø ñieåm naèm beân trong vuøng toâ, kieåm tra caùc ñieåm laân caän cuûa noù ñaõ ñöôïc toâ hay coù phaûi laø ñieåm coù maøu truøng maøu bieân hay khoâng, neáu khoâng phaûi thì ta seõ toâ ñieåm ñoù. Quaù trình naøy ñöôïc laëp laïi cho tôùi khi khoâng coøn toâ ñöôïc nöõa thì döøng.Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 13/16 ÑOÀ HOÏA MAÙY TÍNH • Coù hai quan ñieåm veà caùch toâ naøy, ñoù laø duøng 4 ñieåm laân caän (hình a) hay 8 ñieåm laân caän (hình b). (a) (b) • Caøi ñaët minh hoïa thuaät toaùn toâ maøu theo ñöôøng bieân void BoundaryFill(int x, int y, int FillColor, int BoundaryColor) { int CurrenColor; CurrentColor = getpixel(x,y); if((CurrentColor!=BoundaryColor)&&CurrentColor!= FillColor)) { putpixel(x,y,FillColor); BoundaryFill(x-1, y, FillColor, BoundaryColor); BoundaryFill(x, y+1, FillColor, BoundaryColor); BoundaryFill(x+1, y, FillColor, BoundaryColor); BoundaryFill(x, y-1, FillColor, BoundaryColor); } } // Boundary Fill • Moät soá nhaän xeùt ♦ Thuaät toaùn coù theå hoaït ñoäng khoâng chính xaùc khi coù moät soá ñieåm naèm trong vuøng toâ coù maøu laø maøu caàn toâ cuûa vuøng. ♦ Vieäc thöïc hieän ñeä qui laøm thuaät toaùn khoâng theå duøng cho vuøng toâ lôùn.Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 14/16 ÑOÀ HOÏA MAÙY TÍNH • Moät caûi tieán nhoû : nhaän xeùt raèng vieäc goïi thöïc hieän ñeä qui thuaät toaùn cho 4 ñieåm laân caän cuûa ñieåm hieän haønh khoâng quan taâm tôùi moät trong 4 ñieåm ñoù ñaõ ñöôïc xeùt ôû böôùc tröôùc hay chöa. Ví duï khi ta xeùt 4 ñieåm laân caän cuûa (x, y), thì khi goïi thöïc hieän ñeä qui vôùi ñieåm hieän haønh laø moät trong 4 ñieåm treân, (x, y) vaãn ñöôïc xem laø ñieåm laân caän cuûa chuùng vaø ñöôïc goïi thöïc hieän laïi. void BoundaryFillEnhanced(int x, int y, int F_Color, int B_Color) { int CurrenColor; CurrentColor = getpixel(x,y); if((CurrentColor!=B_Color)&&CurrentColor!= F_Color)) { putpixel(x,y,F_Color); FillLeft(x-1, y, F_Color, B_Color); FillTop(x, y+1, F_Color, B_Color); FillRight(x+1, y, F_Color, B_Color); FillBottom(x, y-1, F_Color, B_Color); } } // BoundaryFillEnhanced void FillLeft(int x, int y, int F_Color, int B_Color) { int CurrenColor; CurrentColor = getpixel(x,y); if((CurrentColor!=B_Color)&&CurrentColor!= F_Color)) { putpixel(x,y,F_Color); FillLeft(x-1, y, F_Color, B_Color); FillTop(x, y+1, F_Color, B_Color); FillBottom(x, y-1, F_Color, B_Color); } } // FillLeftDöông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 15/16 ÑOÀ HOÏA MAÙY TÍNH • Moät caûi tieán khaùc : khoâng caøi ñaët ñeä qui maø toâ theo töøng doøng.Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 16/16
Nội dung trích xuất từ tài liệu:
Bài giảng đồ họa : Các thuật toán tô màu part 4 ÑOÀ HOÏA MAÙY TÍNH Thuaät toaùn toâ maøu theo ñöôøng bieân • Baøi toaùn ñaët ra : Caàn toâ maøu vuøng toâ neáu bieát ñöôïc maøu cuûa ñöôøng bieân vuøng toâ vaø moät ñieåm naèm beân trong vuøng toâ. • Yù töôûng : Baét ñaàu töø ñieåm naèm beân trong vuøng toâ, kieåm tra caùc ñieåm laân caän cuûa noù ñaõ ñöôïc toâ hay coù phaûi laø ñieåm coù maøu truøng maøu bieân hay khoâng, neáu khoâng phaûi thì ta seõ toâ ñieåm ñoù. Quaù trình naøy ñöôïc laëp laïi cho tôùi khi khoâng coøn toâ ñöôïc nöõa thì döøng.Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 13/16 ÑOÀ HOÏA MAÙY TÍNH • Coù hai quan ñieåm veà caùch toâ naøy, ñoù laø duøng 4 ñieåm laân caän (hình a) hay 8 ñieåm laân caän (hình b). (a) (b) • Caøi ñaët minh hoïa thuaät toaùn toâ maøu theo ñöôøng bieân void BoundaryFill(int x, int y, int FillColor, int BoundaryColor) { int CurrenColor; CurrentColor = getpixel(x,y); if((CurrentColor!=BoundaryColor)&&CurrentColor!= FillColor)) { putpixel(x,y,FillColor); BoundaryFill(x-1, y, FillColor, BoundaryColor); BoundaryFill(x, y+1, FillColor, BoundaryColor); BoundaryFill(x+1, y, FillColor, BoundaryColor); BoundaryFill(x, y-1, FillColor, BoundaryColor); } } // Boundary Fill • Moät soá nhaän xeùt ♦ Thuaät toaùn coù theå hoaït ñoäng khoâng chính xaùc khi coù moät soá ñieåm naèm trong vuøng toâ coù maøu laø maøu caàn toâ cuûa vuøng. ♦ Vieäc thöïc hieän ñeä qui laøm thuaät toaùn khoâng theå duøng cho vuøng toâ lôùn.Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 14/16 ÑOÀ HOÏA MAÙY TÍNH • Moät caûi tieán nhoû : nhaän xeùt raèng vieäc goïi thöïc hieän ñeä qui thuaät toaùn cho 4 ñieåm laân caän cuûa ñieåm hieän haønh khoâng quan taâm tôùi moät trong 4 ñieåm ñoù ñaõ ñöôïc xeùt ôû böôùc tröôùc hay chöa. Ví duï khi ta xeùt 4 ñieåm laân caän cuûa (x, y), thì khi goïi thöïc hieän ñeä qui vôùi ñieåm hieän haønh laø moät trong 4 ñieåm treân, (x, y) vaãn ñöôïc xem laø ñieåm laân caän cuûa chuùng vaø ñöôïc goïi thöïc hieän laïi. void BoundaryFillEnhanced(int x, int y, int F_Color, int B_Color) { int CurrenColor; CurrentColor = getpixel(x,y); if((CurrentColor!=B_Color)&&CurrentColor!= F_Color)) { putpixel(x,y,F_Color); FillLeft(x-1, y, F_Color, B_Color); FillTop(x, y+1, F_Color, B_Color); FillRight(x+1, y, F_Color, B_Color); FillBottom(x, y-1, F_Color, B_Color); } } // BoundaryFillEnhanced void FillLeft(int x, int y, int F_Color, int B_Color) { int CurrenColor; CurrentColor = getpixel(x,y); if((CurrentColor!=B_Color)&&CurrentColor!= F_Color)) { putpixel(x,y,F_Color); FillLeft(x-1, y, F_Color, B_Color); FillTop(x, y+1, F_Color, B_Color); FillBottom(x, y-1, F_Color, B_Color); } } // FillLeftDöông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 15/16 ÑOÀ HOÏA MAÙY TÍNH • Moät caûi tieán khaùc : khoâng caøi ñaët ñeä qui maø toâ theo töøng doøng.Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 16/16
Tìm kiếm theo từ khóa liên quan:
Bài giảng đồ họa tài liệu đồ họa giáo trình đồ họa bài tập đồ họa lý thuyết đồ họaTài liệu có liên quan:
-
38 trang 153 0 0
-
Hướng dẫn mã hóa hình ảnh phần 4
9 trang 144 0 0 -
GIÁO TRÌNH ĐỒ HỌA_TÓM TẮT BÀI GIẢNG THIẾT KẾ ỨNG DỤNG II_ĐỒ ÁN MÔN: THIẾT KẾ LỊCH
10 trang 115 0 0 -
Sử dụng Layout Trong AutoCad [DCL]
26 trang 89 0 0 -
Đề thi cuối kỳ và lời giải môn đồ họa máy tính
5 trang 65 1 0 -
Kỹ thuật sắp xếp ảnh minh họa bằng phương pháp contact sheet theo thứ tự dòng và cột p5
18 trang 64 0 0 -
157 trang 57 0 0
-
54 trang 52 0 0
-
hướng dẫn Automation studio 5.5 mô phỏng khí nén thủy lực
20 trang 49 0 0 -
Công cụ xử lý ảnh chuyên nghiệp: Adobe Photoshop CS 8.0
112 trang 47 0 0