Hình ảnh tái tạo đường cong từ các điểm dữ liệu D Hình 2.2 Ảnh hưởng của các bậc đến hình dạng của đường cong Hình 2.3 Tính bao lồi của đường cong B-spline Hình 2.4.. Các nút trong và kh
Trang 2MỤC LỤC
MỤC LỤC 1
DANH MỤC HÌNH VẼ 2
MỞ ĐẦU 3
1 Tổng quan đề tài 4
2 Cơ sở lý thuyết 4
2.1 Nội suy các điểm dữ liệu 4
2.2 Đường cong B-spline đồng nhất 4
2.3 Tính chất đường cong B-spline 5
2.4 Vecto nút 9
2.5 Hàm cơ sở 9
3 Tổ chức cấu trúc dữ liệu và thuật toán 12
3.1 Phát biểu bài toán 12
3.2 Cấu trúc dữ liệu 13
3.3 Thuật toán 13
3.4 Các ví dụ minh họa 14
4 Chương trình và kết quả 22
4.1 Tổ chức chương trình 22
4.2 Ngôn ngữ cài đặt 24
4.3 Kết quả 24
Ví dụ 1 : 24
Ví dụ 2: 28
4.4 Nhận xét và đánh giá 30
5 Kết luận và hướng phát triển 30
5.1 Kết luận 30
Trang 35.2 Hướng phát triển 30 TÀI LIỆU THAM KHẢO 31 PHỤ LỤC 32
Trang 4DANH MỤC HÌNH VẼ
Hình 2.1 Hình ảnh tái tạo đường cong từ các điểm dữ liệu D
Hình 2.2 Ảnh hưởng của các bậc đến hình dạng của đường cong
Hình 2.3 Tính bao lồi của đường cong B-spline
Hình 2.4 Đường cong B-spline bậc p = 3 và đồ thị các hàm cơ sở
Hình 2.5 Các nút trong và khoảng tham số xác định của đường cong B-spline Hình 3.1 Hình ảnh đường cong được tái tạo của ví dụ 1
Hình 3.2 Hình ảnh đường cong được tái tạo của ví dụ 2
Hình 4.1 Giao diện chương trình trước khi nhập dữ liệu.
Hình 4.2 Giao diện chương trình khi kết thúc.
Hình 4.3 Kết quả được in ra file ouput.txt
Hình 4.4 Tọa độ các đỉnh và vector nút được nhập vào trang web
Hình 4.5 Đường cong được tái tạo 3D nhờ vào trang web
Hình 4.6 Giao diện chương trình khi kết thúc với bộ dữ liệu của ví dụ 2
Hình 4.7 Kết quả được in ra file ouput.txt với bộ dữ liệu của ví dụ 2
Hình 4.8 Tọa độ các đỉnh và vector nút được nhập vào trang web
Hình 4.9 Đường cong được tái tạo 3D nhờ vào trang web
Trang 5MỞ ĐẦU
Công nghệ thông tin ngày càng phát triển mạnh mẽ và dồ họa máy tính là mộtlĩnh vực công nghệ phát triển rất nhanh Đồ họa đã được áp dụng rộng rãi trong nhiềulĩnh vực khác nhau từ khoa học, công nghệ, y tế, kỹ thuật đến giải trí… Đồ họa máytính phát triển dựa trên các kết quả của hình học khác, đặc biệt bao gồm đại số và giảitích Hiện nay, với sự phát triển của phần cứng máy tính, đồ họa cũng phát triển nhanhhơn, tuy vậy nền tảng của nó vẫn là cơ sở mô hình hóa hình học Có nhiều bài toán đặt
ra trong đồ họa máy tính Một trong những bái toán cơ bản của nó là xử lí các đườngcong và mặt cong
Trang 61 Tổng quan đề tài
Bản báo cáo trình bày phương pháp tái tạo đường và mặt cong tham số từ tậpđiểm dữ liệu cho trước với một độ chính xác cho phép, ở đây là đường cong B-splineđồng nhất Để tái tạo đường cong và mặt cong tham số, ta cần xây dựng các vectơtham số từ tập điểm dữ liệu, sau đó các vectơ nút được suy ra từ vectơ tham số vàđược sử dụng trong phương pháp tái tạo đường cong
Đối tượng nghiên cứu: Đường cong B-spline đồng nhất
Phạm vi: Tái tạo đường cong B-spline đồng nhất
Phương pháp: Nội suy đường cong
2 Cơ sở lý thuyết
Giả sử ta có (n + 1) điểm dữ liệu D = {D i } = {D0, D1, D2,…, Dn}, đường cong
B-spline C(u) được xây dựng từ các điểm dữ liệu D có thể theo cách nội suy:
2.1 Nội suy các điểm dữ liệu
Nội suy là phương pháp tái tạo đường cong sao cho toạ độ tất cả các điểm dữliệu nằm trên đường cong và thoả mãn vectơ đạo hàm tại điểm dữ liệu này
Điểm
dữ liệu Sai số
a) Xấp xỉ điểm dữ liệu b) Nội suy điểm dữ liệu
Hình 2.1 Tái tạo đường cong từ các điểm dữ liệu D
Có hai phương pháp nội suy:
Nội suy toàn cục (Global Interpolation)
Nội suy cục bộ (Local Interpolation)
Bắt đầu tại điểm dữ liệu D0 và lần lượt duyệt qua các điểm trung gian theo thứ
tự D1, D2,…,D n , đường cong C(u) kết thúc tại D n Ta xác định toạ độ của một số điểmban đầu thuộc đường cong, sau đó xây dựng phương trình toán học và hiệu chỉnh
để đường cong đi qua hết các điểm trên
Trang 72.2 Đường cong B-spline đồng nhất
Đường cong B-spline đồng nhất (uniform) là một trường hợp đặc biệt củađường cong B-spline không đồng nhất (non-uniform) với vector nút đồng nhất có
khoảng cách giữa tất cả các nút bằng nhau: u i+1 – ui = , với i = 0 n + p Điều này
cho phép các phép biến đổi dịch chuyển (translation), tỉ lệ (scaling) trên vector nút không ảnh hưởng đến hình dạng của hàm B-spline cơ sở N i,k(u) Đây là đường cong có
các điểm đầu và cuối không đi qua các đỉnh điều khiển đầu và cuối tương ứng
Một đường cong B-spline đồng nhất được xác định bằng tập hợp (n + 1) đỉnh điều khiển P 0 (x 0, y0, z0) đến Pn(xn, yn, zn), với p là bậc của đường cong
Phương trình biểu diễn một đường cong B-spline đồng nhất như sau:
, 0
P i n là tập các đỉnh kiểm điều khiển của đường cong;
Vector nút U đồng nhất có (n + p + 2) phần tử là một dãy các giá trị số không
giảm
Chọn vector nút đồng nhất U 0 1 2 3, , , , , n p 1 có
ui = i
ui+k – ui = i + k – i = k
Từ hàm cơ sở của đường cong B-spline không đồng nhất ta suy ra hàm cơ sở
B- spline N i,p(u) thứ i bậc p được xác định trong các khoảng giá trị của
vector nút đồng nhất U 0 1 2 3, , , , , n p 1 được biểu diễn như sau:
,
,( )
Trang 82.3 Tính chất đường cong B-spline
Đường cong B-spline là dạng tổng quát của đường cong Bézier nên có đầy đủcác tính chất của đường cong Bézier Ngoài ra, đường cong B-spline còn có một sốtính chất mở rộng khác
Xét đường cong B-spline C(u) bậc p có (n + 1) đỉnh điều khiển và vector nút cắt U = { u 0 = u1 = = up , u p+1 , …., u n -p-1 , u n-p = un -p+1 = = um} Một đường congB-spline được biểu diễn ở dạng tham số bằng các hàm cơ sở đệ quy và các giá trị nútliên hệ với các biến tham số và các đỉnh điều khiển Các tính chất của đường cong nhưsau:
Bậc p của đường cong: 1 p n: Khi bậc càng cao, đường cong B-spline sẽcàng xa các đỉnh điều khiển Hình 2.2 minh hoạ ảnh hưởng của bậc đếnđường cong
Vector nút có m = n + p + 2 phần tử Việc chọn vector nút có ảnh hưởng lớnđến các hàm cơ sở Ni,p(u) và do đó sẽ ảnh hưởng đến hình dạng đường cong
Mỗi đỉnh điều khiển cần đến một hàm cơ sở và có m = n + p + 1 hàm cơ sở
Ảnh hưởng cục bộ: Khi dịch chuyển một đỉnh điều khiển chỉ ảnh hưởng đếnvài phân đoạn lân cận của đỉnh điều khiển đó, không ảnh hưởng đến toàn bộđường cong
Trang 9
Hình 2.2 Ảnh hưởng của các bậc đến hình dạng của đường cong
Tính bao lồi mạnh: Toàn bộ đường cong B-Spline hay một đoạn cong luônnằm trong phần bao lồi của các khung điều khiển tương ứng
1
[ ,i i )
ta có đoạn cong C(u) nằm trong phần bao lồi của các đỉnh điều
khiểnP i p , P i p 1 , , P i Chỉ có (p + 1) hàm cơ sở N i p, ( ), ,u N i p 1,p( ),u N i p p , ( ) 0u trong
Một điểm nằm trên đường cong B-spline C(u) bậc p thì sẽ nằm trong bao lồi của p điểm lân cận
Trang 10 Biến đổi cục bộ (Local Modification Scheme): Nếu vị trí đỉnh Pi thay đổi, tích
Đường cong C(u) liên tục cấp Cp-k tại nút u bội k
Nếu tham số u không phải là các giá trị trong vector nút, điểm C(u) nằm trong đoạn cong bậc p và khả vi vô hạn lần Nếu u là một giá trị trong vector nút và bội k, thì hàm N i p, ( )u liên tục cấpC p k , và do vậy, đường cong C(u) cũng liên tục cấp C p k tại nút bội k.
Tính giảm biến động (variation diminishing): Xét một đường cong nằm trongmột mặt phẳng, số điểm giao nhau của một đường thẳng trong mặt phẳng vớiđường cong sẽ ít hơn số lần mà đường thẳng giao nhau với khung điều khiển
u i+1
u i
Hình 2.3 Tính bao lồi của đường cong B-spline
Đường cong Bézier là một trường hợp đặc biệt của đường cong B-spline
khép: Khi p = n, vector U có 2(p + 1) nút và lặp lại tại (p + 1) nút đầu tiên và (p + 1)
nút cuối cùng, đường cong B-spline trở thành đường cong Bézier Bất biến đối với cácphép biến đổi affine (phép tịnh tiến, phép quay, phép vị tự), phép chiếu phối cảnh Khi
áp dụng một phép biến đổi affine lên đường cong, ta chỉ cần thực hiện trên các đỉnhđiều khiển, sau đó dựng đường cong B-spline dựa trên các đỉnh đã biến đổi, không cầnphải thực hiện biến đổi trên đường cong
Trang 112.4 Vecto nút
Đường cong tham số bao gồm nhiều đoạn cong liên tục nhau tại các điểm kếtnối Các điểm kết nối này nằm ngay trên các đường cong Giá trị tham số tại cácđiểm kết nối được gọi là nút Một đường cong có vector nút bao gồm tập các phần tửđược xác định bởi nút đầu và nút cuối, thường nằm trong đoạn [0, 1]
Vector nút là một thành phần quan trọng của đường cong B-spline Số nút m của một vector nút liên quan đến bậc p và số đỉnh điều khiển (n + 1) của một đường cong.
Giá trị của mỗi nút ảnh hưởng đến quá trình tham số hoá của từng đoạn cong đa thứccủa đường cong như sau:
Xác định miền tham số của đường cong;
Xác định hàm cơ sở, các đỉnh điều khiển liên quan đến mỗi nút;
Điểm kết nối giữa các đoạn cong đa thức của đường cong
được định nghĩa dạng biểu thức đệ quy (theo
de Boor, Cox, Mansfield) như sau:
1 , 0
1
1 1
10
,
i
i k i
Trang 12Để tránh trường hợp mẫu số bằng 0 khi ui k ui
, ui k 1 ui1
, ký hiệu
0
0= 0
Mỗi hàm N u ,i k được xác định trên k khoảng cách của vector nút.
Đường cong B-spline được xác định trong đoạn tham số [ , u up n]
và bao gồmnhiều đoạn cong, các đoạn cong này gặp nhau tại các điểm được xác định tương ứngvới các giá trị của vector nút: C u C u ( ), (p p1), , ( ) C un
Chú ý các phần tử P i , u i,N i p, ( )u
luôn có chỉ số i bắt đầu cùng một giá trị
(ví dụ bắt đầu i 0)
Hàm cơ sở B-spline bậc p,N ui p, ( )
chỉ phụ thuộc vào bậc p và vector nút U,
được biểu diễn bằng cách kết hợp tuyến tính các hàm cơ sở B-spline có bậc thấp hơn
, , , 1 1, 1, 1
1,0,
Trong hệ toạ độ Cartesian, một điểm trên đường cong B-spline tương ứng với
tham số u có toạ độ như sau:
, 0
, 0
, 0
n
y
i p i i
n
z
i p i i
Trang 13Hình 2.4 Đường cong B-spline bậc p = 3 và đồ thị các hàm cơ sở
Có thể xem các đỉnh điều khiển của đường cong giống như các nam châm hútđường cong Lực hút của các đỉnh điều khiển được mô tả toán học bằng hàm cơ sở B-
spline Khoảng tham số u của đường cong được xác định trên vector nút U như sau:
u 0 = u 1 = u 2 = … = u p+1 u p+2 … u n-1 u n u n+1 = … = u n+p = u n+p+1
Các nút trong Khoảng tham số của đường cong
Hình 2.5 Các nút trong và khoảng tham số xác định của đường cong
Trang 14tại mỗi nút đơn.
3 Tổ chức cấu trúc dữ liệu và thuật toán
3.1 Phát biểu bài toán
Đầu vào là tập hợp các điểm được nhập từ bàn phím, hoặc được lấy từ fileinput.txt có sẵn
Trang 15Đầu ra là tọa độ các đỉnh của đường cong B-spline do chương trình tính toánxuất ra màn hình và được lưu vào file output.txt
B3: Xây dựng véctơ nút U cho đường cong B-spline nội suy
Để cho điểm đầu và cuối P0 D P0, n2 D n , ta xây dựng vectơ nút lặp (p + 1)
giá trị tại đầu và cuối
Với số đỉnh n và bậc p = 3 đã xác định, véctơ nút U có (n + 7) phần tử: U =
u0 , ,u1 ,u n6 được xây dựng theo dạng mở đồng nhất
Ta cần tìm các đỉnh điều khiển: P P1, 2,, P n1 dựa vào phương trình đường
cong, vectơ nút U và các điểm dữ liệu D.
Để đường cong nội suy, toạ độ các điểm dữ liệu {D i} phải thuộc đường cong C(u) tại tham số tương ứng
Trang 16 Ma trận N là giá trị hàm cơ sở tính được khi truyền các tham số u vào.
Ma trận nghịch đảo của N là ma trận dùng phương pháp Gauss để tính toán
Ma trận nhân là kết quả sau khi nhân ma trận nghịch đảo của N với ma trậnchứa tập điểm dữ liệu
Bước 5: Kiểm tra và đánh giá đường cong tái tạo.
Xây dựng một đường cong B-spline bâ ̣c p = 3 (cubic) đồng nhất nô ̣i suy các
điểm dữ liê ̣u này
Bước 1: Thiết lập các tham số cho đường cong B-Spline nội suy các điểm
dữ liệu {D i}
Để nô ̣i suy (n + 1) điểm dữ liê ̣u, đường cong B-spline bâ ̣c ba nội suy cần có:
Trang 17 Bậc p = 3
n = 7 đỉnh điều khiển P0,P1,P2,… ,P7 với (n + 1) điểm dữ liệu ta phải nội suy(n + 3) đỉnh điều khiển
Tiếp theo cần đi tính vectơ nút U.
Bước 2: Xây dựng véctơ tham số T
Do yêu cầu xây dựng đường cong B-spline bậc p = 3 nên phần này ta khôngphải xây dựng bộ vectơ tham số T = {t0, t1, …, tn}
Bước 3: Xây dựng véctơ nút U cho đường cong B-spline nội suy
Để cho điểm đầu và cuối P0 = D0 , Pn+2 = Dn, ta xây dựng vectơ nút lặp (p + 1)giá trị tại đầu và cuối
Với 10 đỉnh điều khiển và bậc p=3 đã xác định, véctơ nút U có (n + 7) phần tửđược xây dựng theo dạng mở đồng nhất:
U = u0 , u1 , … , un+6 = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7}
Bước 4: Xây dựng hệ phương trình xác định các đỉnh điều khiển {Pi}
Ta cần tìm các đỉnh điều khiển: P P1, 2,, P n1 dựa vào phương trình đường
cong, vectơ nút U và các điểm dữ liệu D.
Để đường cong nội suy, toạ độ các điểm dữ liệu {D i} phải thuộc đường cong C(u) tại tham số tương ứng
Trang 18Tập N tính được từ vector nút và hàm cơ sở N i,p(u):
Kết hợp với các phương trình trên, ta có hệ (n + 1) phương trình có (n + 1) ẩn:
Trang 19Bac cua duong cong : 3
So dinh dieu khien : 10
Chieu cua diem du lieu : 2
Tap dinh dieu khien P co gia tri la:
Trang 20Hình 3.1 Hình ảnh đường cong được tái tạo của ví dụ 1
Ví dụ 2: Tái tạo đường cong B-spline đồng nhất khép bậc 3 bằng phương pháp
Xây dựng một đường cong B-spline bâ ̣c p = 3 (cubic) đồng nhất nô ̣i suy các
điểm dữ liê ̣u này
Trang 21Bước 1: Thiết lập các tham số cho đường cong B-Spline nội suy các điểm
Tiếp theo cần đi tính vectơ nút U.
Bước 2: Xây dựng véctơ tham số T
Do yêu cầu xây dựng đường cong B-spline bậc p = 3 nên phần này ta khôngphải xây dựng bộ vectơ tham số T = {t0, t1, …, tn}
Bước 3: Xây dựng véctơ nút U cho đường cong B-spline nội suy
Để cho điểm đầu và cuối P0 = D0 , Pn+2 = Dn, ta xây dựng vectơ nút lặp (p + 1)giá trị tại đầu và cuối
Với 8 đỉnh điều khiển và bậc p = 3 đã xác định, véctơ nút U có (n + 7) phần tửđược xây dựng theo dạng mở đồng nhất:
U = u0 , u1 , … , un+6 = {0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5}
Bước 4: Xây dựng hệ phương trình xác định các đỉnh điều khiển {Pi}
Ta cần tìm các đỉnh điều khiển: P P1, 2,, P n1 dựa vào phương trình đường
cong, vectơ nút U và các điểm dữ liệu D.
Để đường cong nội suy, toạ độ các điểm dữ liệu {D i} phải thuộc đường cong C(u) tại tham số tương ứng
Bước 4: Xây dựng hệ phương trình xác định các đỉnh điều khiển {Pi}
Ta cần tìm các đỉnh điều khiển: P P1, 2,, P n1 dựa vào phương trình đường
cong, vectơ nút U và các điểm dữ liệu D.
Để đường cong nội suy, toạ độ các điểm dữ liệu {D i} phải thuộc đường cong C(u) tại tham số tương ứng
Trang 22Tập N tính được từ vector nút và hàm cơ sở N i,p(u):
Kết hợp với các phương trình trên, ta có hệ (n + 1) phương trình có (n + 1) ẩn:
Trang 23Bac cua duong cong : 3
So dinh dieu khien : 8
Chieu cua diem du lieu : 3
Tap dinh dieu khien P co gia tri la:
Trang 24Hình 3.2 Hình ảnh đường cong được tái tạo của ví dụ 2
Xây dựng một đường cong B-spline bâ ̣c p = 3 (cubic) đồng nhất nô ̣i suy các
điểm dữ liê ̣u này
Trang 25Input: Nhập từ file bậc p = 3,số điểm dữ liệu n = 7, số chiều d = 2 và giá trị
của các điểm dữ liệu ứng với số chiều tương ứng{ D0 D7}
Output: Xuất ra màn hình console kết quả của (n+3=10) đỉnh điều khiển
Trang 26zi 2 5 6 4 1 12
Xây dựng một đường cong B-spline bâ ̣c p = 3 (cubic) đồng nhất nô ̣i suy các
điểm dữ liê ̣u này
Input: Nhập từ file bậc p = 3,số điểm dữ liệu n = 5, số chiều d = 3 và giá trị
của các điểm dữ liệu ứng với số chiều tương ứng{ D0 D5}
Output: Xuất ra màn hình console kết quả của (n+3=10) đỉnh điều khiển
Trang 27Hình 4.1 Giao diện chương trình trước khi nhập dữ liệu.
Hình 4.2 Giao diện chương trình khi kết thúc với bộ dữ liệu của ví dụ 1
Trang 28Hình 4.3 Kết quả được in ra file ouput.txt với bộ dữ liệu của ví dụ 1
Sử dụng trang web NURBS demo để tái tạo đường cong
Hình 4.4 Tọa độ các đỉnh và vector nút được nhập vào trang web