Báo cáo đề tài thuật toán tô màu theo đường biên dòng quét
LOGO BÁO CÁO ĐỀ TÀI Nhóm 2 – Đại Học TinK2 ĐẠI HỌC SƯ PHẠM KỸ THUẬT VINH KHOA CÔNG NGHỆ THÔNG TIN THUẬT TOÁN TÔ MÀU THEO ĐƯỜNG BIÊN & DÒNG QUÉT LOGO Nội dung trình bày 1 2 !"#$ 3 %&' 5 4 !()*+ 44 4 LOGO Nhóm 2 – Đại Học TinK2 Lời nói đầu ,-./012 .3415!657189 203:17 #1116 11#) ; .< 5= > 1 ? # =1'@AB1C D E . ! F) G+ 3415!762.1.H920 2 1 I J1 K 1 #L1 11 # LI:1B1MBD12'G N #L1 ? 9 1 ' # ..@ LOGO 46 O1 P D 5. #L1 / 5Q1 1R :I I 2 2 2S 1JT5U11#LI:1B" /V..C101W.D . ! # B . ! F) G+ J1 K 11 # LI :1 B 1M B .11R#11JT5U1Q D 1 2' G 10 J1 BV 415! Lời nói đầu Nhóm 2 – Đại Học TinK2 LOGO E/#L1O#FX1M/ .Y1@Z W.D#X1##L1 [..#L1OIU2'W 1M11B= [.J1\1.]^ Lời nói đầu Nhóm 2 – Đại Học TinK2 LOGO Nhóm 2 – Đại Học TinK2 Giới Thiệu Chung 1.Giới thiệu đề tài 1.Giới thiệu đề tài [HF 1'1M.5 3.!#B7 .!F)G+ 3%1_1F?57 (!. `.!B `.!F)G+ LOGO Nhóm 2 – Đại Học TinK2 Giới Thiệu Chung 2.Tô màu là gì? 2.Tô màu là gì? - ..H95/%.Z11M11D.N V. 9 1 H 9 # O]1 J1 KBa.H#2+I20-5#B (=#B]#:I51 bE1.#15.c1= `;1KK011D.1. ` */' K 11 D. BV . d=/NaI_1=I21!.H .X1_2I.H. - de11'I110D."5.! AD.31D-5]76.!F) G+.FO!#B LOGO Nhóm 2 – Đại Học TinK2 Giới Thiệu Chung $.1.# b(?5 H.1_1111f1M1 .H V @ .156 .< I T . 5 .HB,.cIJ/ - (?5"1Y#L1Ba. 15 LOGO 1.Bài toán đặt ra 1.Bài toán đặt ra : : d..H9'B'#L1.1M#B9 .HD.V.B9 2. Ý tưởng : 2. Ý tưởng : b HW1#L1J1KBV11#B61Q I\ B # B 9 1 3B # B7BVH10.Z1 b $Z A .H D. 3J6/7 Bg 2h 9 6 i f6,5=-G/A11f1'2:I. 1M#B bj:1BZA.HD.V.B962D. 11 D. 5\ 1 1M Y #L1 . .@ 6 / D.5\11.9.B2k['1 #LI2IWND...@ *W/#L15:I5=1'221)#L1 ?WFA3J!.W87 Thuật toán tô màu theo đường biên Nhóm 2 – Đại Học TinK2 LOGO Thuật toán tô màu theo đường biên Nhóm 2 – Đại Học TinK2 [...]... Đại Học TinK2 LOGO Thuật toán tô màu theo đường biên Một cải tiến khác : không cài đặt đệ qui mà tô theo từng dòng (xem hình 4) Nhóm 2 – Đại Học TinK2 LOGO Thuật toán tô màu theo đường biên 4.3 Đề xuất: Chúng ta sẽ lần lượt tô từng đoạn giao theo dòng quét ngang thay vì tô theo 4 điểm lân cận Như vậy chúng ta chỉ cần lưu lại các thông tin của điểm bắt đầu mỗi đoạn giao của dòng quét ngang thay vì.. .Thuật toán tô màu theo đường biên 3.Giải thuật Procedure ToMau(x,y,color,colorbiên); -curcolor=getpixel(x,y); -If (curcolorcolor) And (curcolorcolorbiên) Then -Begin PutPixel(x,y,color); ToMau(x-1,y,color,colorbiên); ToMau(x+1,y,color,colorbiên); ToMau(x,y-1,color,colorbiên); ToMau(x,y+1,color,colorbiên); -End; Return; Nhóm 2 – Đại Học TinK2 LOGO Thuật toán tô màu. .. TinK2 LOGO Tô Màu Theo Dòng Quét( Scan-line) 4.Cuối cùng , nếu 1 tung độ bé hơn YSCAN còn tung độ kia lớn hơn YSCAN thì dòng quét cắt cạnh đó Để tìm giao điểm giữa cạnh đa giác và dòng quét, ta có nhận xét sau : Nhóm 2 – Đại Học TinK2 LOGO Tô Màu Theo Dòng Quét( Scan-line) Lưu đồ thuật toán scan – line Trong đó m là hệ số góc của cạnh Nhóm 2 – Đại Học TinK2 LOGO Tô Màu Theo Dòng Quét( Scan-line) 3.3 Xử... được tô bởi điểm hiện hành Chúng ta sẽ tô các dòng quét ngang lên trên, sau khi tô xong, các dòng quét còn lại theo hướng xuống sẽ được tô Như vậy, với mỗi điểm (x,y) ta chỉ cần lưu lại tối đa 2 điểm trên và dưới (trường hợp vùng tô bị "lủng" ở giữa), còn không ta cứ vậy tô lên trên cho đến khi gặp màu đường biên, rồi lại cứ vậy tô xuống dưới Nhóm 2 – Đại Học TinK2 LOGO Thuật toán tô màu theo đường biên. .. toán tô màu theo đường biên 3.1 Nhận xét: - Thuật toán trên có dùng đệ quy và do đó có thể gây ra tràn stack nếu vùng tô quá lớn, mặt khác với bất kỳ điểm (x,y) nào nó cũng đều phải gọi thủ tục tô 4 điểm xung quanh mặc dù có thể các điểm đó đã được tô - Thuật toán có thể không chính xác khi có một số điểm nằm trong vùng tô có màu là màu cần tô của vùng - Việc thực hiện gọi đệ qui làm thuật toán không... cách tô này Đó là dùng 4 điểm lân cận (có thể gọi là 4 liên thông) hay 8 điểm lân cận (8 liên thông) (xem hình 2) Nhóm 2 – Đại Học TinK2 LOGO Tô Màu Theo Dòng Quét( Scan-line) 1.Tìm hiểu về thuật toán: Phương pháp này sẽ xác định phần giao của các dòng quét kế tiếp nhau với đường biên của vùng tô Sau đó, sẽ tiến hành tô màu các điểm thuộc phần giao này Phương pháp này thường được dùng để tô màu. .. Boundary_fill ( x+1,y, mauto, maubien ); Boundary_fill ( x-1,y, mauto, maubien ); Boundary_fill ( x,y+1, mauto, maubien ); Boundary_fill ( x,y-1, mauto, maubien ); end; end; Nhóm 2 – Đại Học TinK2 LOGO Thuật toán tô màu theo đường biên 4.2 Minh họa thuật toán: Cho hình vẽ được mô tả như sau: Nhóm 2 – Đại Học TinK2 LOGO Thuật toán tô màu theo đường biên Ví dụ 1: Trong hình 3 ta có thể xét điểm (x,y) có... LOGO Tô Màu Theo Dòng Quét( Scan-line) 4.3.Thủ tục xác định khi dòng quét cắt một cạnh của đa giác Procedure Toadogiao(Var ys:Integer;y0,y1,x0,x1:Integer); Var m,b:real; Begin If ((ys>y0) and (ysy1)) Then Begin j:=j+1; If x0=x1 Then Xgd[j]:=x0{ Neula canh thang dung } Else Begin m:=((y1-y0)/(x1-x0)); b:=(-m*x0+y0); Xgd[j]:=round((ys-b)/m); End; End; End; Nhóm 2 – Đại Học TinK2 LOGO Tô Màu Theo Dòng Quét( Scan-line)... có n cạnh thì cạnh thứ i có các đỉnh có ký hiệu ((i-1) mod n) và (i mod n) Đỉnh thứ k được ký hiệu bởi (k mod n).Nó đứng sau bởi 1 đỉnh có ký hiệu là ((k-1+n) mod n)vàđứng trước bởi 1 đỉnh có ký hiệu là ((k+1) mod n) Nhóm 2 – Đại Học TinK2 LOGO Tô Màu Theo Dòng Quét( Scan-line) 5.3 Kết quả tô màu Nhóm 2 – Đại Học TinK2 LOGO Tô Màu Theo Dòng Quét( Scan-line) 6 Chương trình cài đặt Một số thủ tục và hàm... Theo Dòng Quét( Scan-line) 5.Vẽ hình 5.1 Thuật khử điểm Để có thể vẽ được một cách chính xác , ta phải áp dụng một kỹ thuật khử một số điểm đặc biệt để sao cho tổng số giao điểm trên một dòng quét bao giờ cũng là số chẵn.Khi đó mỗi dòng quét sẽ làm sáng các Pixel từ một điểm mang chỉ số lẻ sang một điểm mang chỉ số chẵn Nhóm 2 – Đại Học TinK2 LOGO Tô Màu Theo Dòng Quét( Scan-line) 5.2 Thuật truy xuất . màu theo đường biên Nhóm 2 – Đại Học TinK2 LOGO Thuật toán tô màu theo đường biên Nhóm 2 – Đại Học TinK2 LOGO Thuật toán tô màu theo đường biên Nhóm 2 – Đại Học TinK2 3.Giải thuật 3.Giải thuật 1!F!. thông: 1!F!$F/uo553J6/6.6.B!!!7l .u!!l B! .um!IJ!53J6/7l o3.upq.7F3.upq.B!7! B! IIJ!53J6/6157l $F/uo553J`86/6.6.B!7l $F/uo553Jb86/6.6.B!7l $F/uo553J6/`86.6.B!7l $F/uo553J6/b86.6.B!7l !Fl !Fl LOGO Thuật toán tô màu theo đường biên Nhóm 2 – Đại Học TinK2 4.2 Minh họa thuật toán: 4.2 Minh họa thuật toán: dWN#L1.# LOGO Thuật toán tô màu theo đường biên Nhóm. sau: 1!F!$F/uo553J6/6.6.B!!!7l .u!!l B! .um!IJ!53J6/7l o3.upq.7F3.upq.B!7! B! IIJ!53J6/6157l $F/uo553J`86/6.6.B!7l $F/uo553J6/`86.6.B!7l !Fl !Fl LOGO Thuật toán tô màu theo đường biên Nhóm 2 – Đại Học TinK2 Một cải tiến khác : không cài đặt đệ qui mà tô theo từng dòng (xem hình 4). LOGO Thuật toán tô màu theo đường biên Nhóm 2