Báo cáo môn học : Mô hình hóa hình học (cao học : Khoa học máy tính) Đề tài : Tái tạo mặt cong B-spline
Trang 1LỜI MỞ ĐẦU
Mô hình hóa hình học là một trong những lĩnh vực phát triển rất nhanh của ngành Công nghệ thông tin Nó được ứng dụng rộng rãi trong nhiều lĩnh vực khoa học và công nghệ, chẳng hạn như y học, kiến trúc, giải trí
Một trong những lĩnh vực của mô hình hóa hình học là xây dựng các đường cong
và mặt cong để mô phỏng các vật thể trong thế giới thực.Tiểu luận giải quyết bài toán
“tái tạo mặt cong B-spline đều bậc 3 từ một tập điểm đã cho”
Mặc dù đã hết sức cố gắng, nhưng do điều kiện thời gian và khả năng còn nhiều hạn chế nên tiểu luận vẫn chưa còn nhiều thiếu sót Rất mong nhận được sự góp ý, phê bình, đánh giá để nội dung tìm hiểu của tiểu luận được hoàn thiện hơn
Chúng em xin gửi lời cảm ơn đặc biệt đến TS Nguyễn Tấn Khôi đã cung cấp, định hướng và hướng dẫn để chúng em hoàn thành tiểu luận này
Đà Nẵng, ngày 05 tháng 02 năm 2014
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 1
I ĐƯỜNG VÀ MẶT CONG THAM SỐ BEZIER 3
I.1 Biểu diễn các đường cong Bezier 3
I.2 Các tính chất của đường cong Bezier 5
I.3 Mặt cong Bezier 5
II ĐƯỜNG VÀ MẶT CONG B-SPLINE 6
II.1 Đánh giá các đường cong Bezier 6
II.2 Định nghĩa 7
II.3 Mặt cong tham số B-spline 9
II.3.1 Phương trình mặt cong B-spline 9
III TÁI TẠO ĐỐI TƯỢNG B-SPLINE BẰNG PHƯƠNG PHÁP BÌNH PHƯƠNG TỐI THIỂU 9
III.1 Tái tạo đường cong B-spline đi qua một tập điểm cho trước 9
III.2 Các phương pháp tái tạo mặt cong B-spline 11
III.2.1 Phương pháp Nội suy 11
III.2.2 Phương pháp Xấp xỉ 14
III.3 Tái tạo đường và mặt cong B-spline với phương pháp bình phương tối thiểu 20
TÀI LI U THAM KHẢO 25
Trang 3I ĐƯỜNG VÀ MẶT CONG THAM SỐ BEZIER
Đường cong Bezier là một đường cong tham số được biểu diễn dạng hàm đa thức theo tham số t Bậc của đa thức phụ thuộc vào số lượng điểm điều khiển được dùng để định nghĩa đường cong Phương pháp này sử dụng các điểm điều khiển và tạo ra một đường cong xấp xỉ
Chính điều này đã làm cho đường cong dễ hiệu chỉnh và tái tạo lại hình dáng đường cong, đó là lý do đường cong Bezier phổ biến Đa giác điều khiển của đường cong Bezier là đa giác thu được khi các điểm điều khiển được nối lại theo thứ tự với các đoạn thẳng
Chúng ta cũng có thể ứng dụng đường cong B-spline để tạo font chữ một cách dễ dàng, nghĩa là từ các vecto kiểm soát đã có ta sử dụng chương trình để vẽ đường cong này qua phương trình B-spline của chúng
I.1 Biểu diễn các đường cong Bezier
Đường cong Bezier dựa trên (n+1) điểm kiểm soát P0,P1 , ,P được cho bởi công thức:
Trang 4Đường cong Bezier bậc 2 Đường cong Bezier bậc 3
Để thích hợp cho việc xử lý trên máy tính, ta biểu diễn hai ma trận n
Ví dụ: Ma trận Bez3 cho các đường Bezier bậc 3
Trang 5I.2 Các tính chất của đường cong Bezier
Đường cong Bezier có các tính chất:
+ Nội suy được các điểm đầu và cuối: P(0) = P0; P(n) = Pn
+ Tính bất biến Affine:Khi biến đổi một đường cong Bezier, ta không cần biến đổi mọi điểm trên đường cong một cách riêng rẻ mà chỉ cần biến đổi các điểm kiểm soát của đường cong đó rồi sử dụng công thức Bernstein để tái tạo lại đường cong Bezier đã được biến đổi
+ Tính chất của bao lồi: Đường cong Bezier P(t) không bao giờ đi ra ngoài bao lồi của nó.Ở đây, bao lồi của các điểm kiểm soát là tập đỉnh nhỏ nhất chứa tất cả các điểm kiểm soát đó
+ Độ chính xác tuyến tính: Đường cong Bezier có thể trở thành một đường thẳng khi tất cả các điểm kiểm soát nằm trên một đường thẳng vì khi đó bao lồi của chúng là một đường thẳng nên đường Bezier bị kẹp vào bên trong bao lồi nên nó cũng trở thành đường thẳng
+ Bất kỳ một đường thẳng hay mặt phẳng nào cũng luôn luôn cắt đường cong Bezier ít lần hơn so với cắt đa giác kiểm soát
+ Đạo hàm của các đường Bezier:Là một đường cong Bezier khác được tạo ra từ
các vector kiểm soát Pk
I.3 Mặt cong Bezier
Các mặt cong có thể biểu diễn ở dạng tham số qua hàm vector với 2 tham số là u,
v Dạng tổng quát của mặt cong:
Trang 6Đây gọi là tích Tensor cho băng Bezier
Nghĩa là mỗi đường viền u là một đường cong Bezier chuẩn, ở những giá trị u khác nhau thì các điểm kiểm soát cũng nằm ở những vị trí khác nhau
Khi u biến thiên thì mỗi điểm kiểm soát P ui sẽ chạy trên một đường cong cụ
thể Do đó, mặt cong có thể xem như là một sự dịch chuyển hay trượt đường Bezier trong không gian
Ta tưởng tượng một đa giác kiểm soát chuyển động trong không gian và thay đổi dạng khi chuyển động Ở mỗi vị trí, đa giác này tạo nên một đường cong Bezier và do đó tạo thành mặt cong trong quá trình trượt
Trong trường hợp này, khối đa diện kiểm soát sẽ có (m+1).(n+1) đỉnh
II ĐƯỜNG VÀ MẶT CONG B-SPLINE
II.1 Đánh giá các đường cong Bezier
Bằng các điểm kiểm soát, ta có thể tạo ra các dạng đường cong khác nhau bằng cách hiệu chỉnh các điểm kiểm soát cho tới khi tạo ra được một dạng đường cong mong muốn Công việc này lặp đi lặp lại cho đến khi toàn bộ đường cong thỏa yêu cầu
Tuy nhiên, khi ta thay đổi bất kỳ một điểm kiểm soát nào thì toàn bộ đường cong
bị thay đổi theo Nhưng trong thực tế, ta thường mong muốn chỉ thay đổi một ít về dạng đường cong ở gần khu vực đang hiệu chỉnh các điểm kiểm soát
Tính cục bộ yếu của đường cong Bezier được biểu hiện qua các đa thức n
k
B t đều khác 0 trên toàn khoảng [0,1] Mặt khác đường cong p(t) lại là một tổ hợp tuyến tính của các điểm kiểm soát được gia trọng bởi các hàm n
k
B t nên ta kết luận rằng mỗi điểm kiểm soát có ảnh hưởng đến đường cong ở tất cả các giá trị t [0,1] Do đó, hiệu chỉnh bất kỳ một điểm kiểm soát nào cũng sẽ ảnh hưởng đến dạng của toàn thể đường cong
Để giải quyết bài toán này, ta sử dụng một tập hợp các hàm trộn khác nhau Các hàm trộn này có giá mang (support: khoảng mà trên đó hàm lấy giá trị khác 0) chỉ là một phần của khoảng [0,1] Ngoài giá mang này chúng có giá trị là 0
Thường ta chọn các hàm trộn là các đa thức trên các giá mang đó, các giá mang này kề nhau Như vậy, các hàm trộn chính là một tập các đa thức được định nghĩa trên những khoảng kề nhau được nối lại với nhau để tạo nên một đường cong liên tục Các đường cong kết quả được gọi là đa thức riêng phần hay từng phần (piecewise polynomial)
Trang 7Ví dụ: ta định nghĩa hàm g(t) gồm 3 đa thức a(t), b(t), c(t) như sau:
có giá mang
có giá mang có giá mang
Các giá trị của t ứng với các chỗ nối của các đoạn gọi là nút (knut), chẳng hạn t=0,1,2,3 là bốn nút của g(t) Hơn nữa, tại các chỗ nối của đường cong g(t) là trơn, khơng
Với mỗi điểm kiểm sốt Pk , ta cĩ một hàm trộn tương ứng Rk(t) và tập các nút gọi là vector nút T=(t0,t1, ,tn) với ti R, ti ti+1 Khi đĩ:
Rk(t) là các hàm trộn liên tục trong mỗi đoạn con [ti , ti+1]và liên tục trên mỗi nút Mỗi Rk(t) là một đa thức riêng phần
Do đĩ đường cong p(t) là tổng của các đa thức này, lấy trên các điểm kiểm sốt
Trang 8Các đoạn đường cong riêng phần này gặp nhau ở các điểm nút và tạo cho đường cong trở nên liên tục Ta gọi những đường cong như vậy là SPLINE
Cho trước một vector nút thì có thể có nhiều họ hàm trộn được dùng để tạo ra một đường cong Spline có thể định nghĩa trên vector nút đó Một họ các hàm như vậy được gọi là cơ sở cho các Spline
Trong số các họ hàm này, có một cơ sở cụ thể mà các hàm trộn của nó có giá mang nhỏ nhất và nhờ vậy nó đem lại khả năng kiểm soát cục bộ lớn nhất Đó là các B-Spline, với B viết tắt của chữ Basic (cơ sở)
Đối với các hàm B-Spline, mỗi đa thức riêng phần tạo ra nó có một cấp n nào đó
Do đó, thay vì dùng ký hiệu Rk(t) cho các hàm riêng phần này ta sẽ ký hiệu các hàm trộn này là Nk,n(t)
Do đó các đường cong B-Spline có thể biểu diễn lại:
* (n+1) điểm kiểm soát
Cấp m của các hàm B-Spline và công thức cơ bản cho hàm B-Spline Nk,n(t) là:
Trang 9II.3 Mặt cong tham số B-spline
Có hai loại mặt được sử dụng trong các hệ thống mô hình hóa: tham số (parametric) và ẩn (implicit) Mặt cong tham số B-spline thường dùng để thiết kế các mặt cong tự do, mặt cong này được định nghĩa như sau:
f(u,v) = (x(u,v),y(u,v),z(u,v)) với u, v là các tham số
II.3.1 Phương trình mặt cong B-spline
Cho tập hợp (m+1) x (n+1) điểm kiểm soát {Pi,j} với 0im và 0jn
Phương trình mặt cong tham số B-spline:
Tiểu luận xét đến mặt cong đều bậc 3, do vậy p = q = 3
Ta có thể viết lại như sau : S(u,v) =
Ni,3(u) Ni,3(v).Pij
III TÁI TẠO ĐỐI TƯỢNG B-SPLINE BẰNG PHƯƠNG PHÁP BÌNH PHƯƠNG TỐI THIỂU
III.1 Tái tạo đường cong B-spline đi qua một tập điểm cho trước
Từ các điểm nằm trên đường cong, ta sẽ tìm tập các điểm kiểm soát của chúng Bài toán có thể được miêu tả như sau:
Trang 10Xác định các điểm kiểm soát dựa trên một số điểm đã biết nằm trên đường cong Nếu các điểm đã biết thuộc đường cong thì ta có:
Với 2
k n+l
j+l ta có ma trận
[P] = [N][B] (*)
Các tham số t j của mỗi điểm cho trước có thể xem là độ đo khoảng cách của điểm
đó đến đường cong B-spline Ta có thể tính được tham số t j thông qua độ dài dây cung
giữa các điểm đó Với j+1 điểm trên đường cong cho trước, tham số tại điểm trên đường cong cho trước thứ b được tính bởi công thức:
Trang 11tmax = giá trị lớn nhất trong vecto nút
Trong trường hợp 2 k n+l j+l (n=j), ma trận N vuông, tập các điểm kiểm soát có thể xác định thông qua ma trận nghịch đảo
[B] = [N]-1[P]
Trong trường hợp 2 k n+l j+l (n<j), ma trận N không phải ma trận vuông
Ta phải tìm cách biến đổi ma trận N thành ma trận vuông, từ đó tìm đa giác kiểm soát [P] = [N][B]
[N]T[P] = [N]T [N] [B]
[B] = [[N]T[N]] [N]T[P]
III.2 Các phương pháp tái tạo mặt cong B-spline
III.2.1 Phương pháp Nội suy
Nội suy là thuật toán dựng đường cong đáp ứng chính xác dữ liệu cho trước đi qua tọa độ điểm và đáp ứng vector đạo hàm tại điểm liên quan
Nội suy gồm hai phương pháp:
+ Nội suy toàn cục (Global Interpolation)
+ Nội suy cục bộ (Local Interpolation)
a Nội suy toàn cục đường cong
Phương pháp đơn giản phù hợp với một tập các điểm dữ liệu với một đường cong B-Spline là phương pháp nội suy toàn cục Ý nghĩa của toàn cục sẽ được làm rõ như sau:
Giả sử chúng ta có n+1 điểm dữ liệu D0, D1, …, Dn và muốn để phù hợp chúng với một đường cong B-spline bằng p, p ≤ n là một đầu vào Chúng ta có thể chọn một tập hợp các giá trị tham số t0, t1,…, tn Lưu ý rằng số lượng các thông số bằng số điểm dữ liệu, bởi vì tham số tk tương ứng với dữ liệu điểm Dk Từ các thông số này, một vector nút của m+1 được tính bằng m = n + p + 1 Vì vậy, ta có một vector nút và bậc p¸phần duy nhất còn thiếu là một tập hợp điểm kiểm soát n + 1 Nội suy toàn cục là cách đơn giản để tìm kiếm các điểm kiểm soát
Trang 12Giả sử nội suy đường cong B-spline như sau:
Ta sẽ thu thập vector Dk và Pi vào hai ma trận D và P như sau:
Ở đây, điểm dữ liệu Dk là một vector trong không gian s chiều (tức là Dk = [dk1,
…, dks]) và xuất hiện trên hàng thứ i của ma trận P Lưu ý rằng trong không gian ba chiều, thì ta có s = 3 và trong một
mặt phẳng ta có s = 2
Ta có: Di = N.Pi
Trang 13Sau đó, tính toán cho pi từ N và di cho cột thứ i P, tìm tất cả các i trong khoảng từ
0 đến h, và ta sẽ có một P hoàn chỉnh Vì vậy, việc xây dựng đường cong B-spline có n+1 điểm dữ liệu liên quan đến việc giải phương trình tuyến tính
b Nội suy toàn cục mặt cong
Giả sử chúng ta có m+1 hàng và n+1 cột của các điểm dữ liệu Dịj (0 ≤ i ≤ m và 0
≤ j ≤ n) và muốn tìm một mặt cong B-spline bậc (p,q) có chứa tất cả trong số đó Tương
tự như trường hợp đường cong, ta có điểm dữ liệu và bậc p, q như là đầu vào Để xác định một mặt cong nội suy B-spline, chúng ta cần hai vector knot U và V, một cho mỗi hướng và thiết lập các điểm kiểm soát Giống như trường hợp đường cong, số lượng các điểm kiểm soát và số lượng các điểm dữ liệu là bằng nhau (tức là (m+1)(n+1) điểm kiểm soát trong m+1 hàng và n+1 cột) Ta có thể tính toán hai thông số Sc (0 ≤ c ≤ m) theo hướng u và td (0 ≤ d ≤ n) theo hướng v bằng cách thiết lập e, f vào m và n tương ứng Chúng ta cũng có được knot vector U và V cho u và v hướng tương ứng Vì vậy những gì còn lại là tìm điểm kiểm soát mong muốn
Đây là bài toán nội suy đường cong Chính xác hơn, các đường cong nội suy toàn cục có thể được áp dụng cho mỗi cột của các điểm dữ liệu để có được một cột của các điểm kiểm soát Qcd Vì ta đã có n +1 cột của các điểm dữ liệu thì ta sẽ có được n +1 cột của Q
Áp dụng phương trình của Qid dưới đây, các điểm dữ liệu trên hàng i của Q ( tức
là, Qi0, Qi1, , Qin ) là các điểm trên một đường cong B-spline, đánh giá ở t0, t1, , tn, bậc q được xác định bởi n + 1 điểm kiểm soát chưa biết Pi0 , Pi1, , P Do đó, ứng dụng nội suy đường cong với bậc q và các tham số t0, t1, , tn hàng i của Q cho hàng i của các điểm kiểm soát mong muốn
Một khi tất cả các hàng của các điểm kiểm soát được tìm thấy, các điểm kiểm soát này, cùng với các nút vectơ và bậc p và q xác định một B-spline nội suy mặt cong của bậc ( p , q ) của các điểm dữ liệu đã cho Vì vậy, nội suy mặt cong bằng cách sử dụng B-spline bao gồm ( m +1) + ( n +1) nội suy đường cong
Trang 14III.2.2 Phương pháp Xấp xỉ
Thuật toán dựng đường cong xấp xỉ với một tập điểm ban đầu không nhất thiết phải đáp ứng chính xác dữ liệu cho trước (dữ liệu từ máy đo, máy quét tọa độ, số lượng điểm rất lớn và có thể bao gồm cả nhiễu do tính toán xử lý, trong trường hợp này điều quan trọng là định dạng được “ hình dạng” từ dữ liệu chứ không cần nắn đường cong theo từng điểm nhưng phải đáp ứng sai số cho phép)
*Phân loại các phương pháp xấp xỉ:
+ Xấp xỉ toàn cục: sử dụng toàn bộ số điểm dữ liệu Q cho trước
+ Xấp xỉ cục bộ: là dựng tuần tự các phân đoạn đường cong đáp ứng sai số cho phép
Để tái tạo một đường cong theo phương pháp xấp xỉ ta có các cách:
Cách 1:
1 Chọn số điểm điều khiển tối thiểu
2 Dựng đường cong xấp xỉ theo phương pháo nội suy toàn cục
3 Kiểm tra độ sai lệch của đường cong xấp xỉ tại mỗi điểm dữ liệu
4 Nếu độ sai lệch nằm trong ngưỡng € cho phép thì kết thúc Ngược lại, tăng số điểm điều khiển và trở về Bước 2
Cách 2:
1 Chọn số điểm điều khiển tương đối lớn đẻ đường cong xấp xỉ trong bước tính toán đầu tiên đáp ứng sai số cho phép €
2 Dựng đường cong xấp xỉ theo phương pháp nội suy toàn cục
3 Kiểm tra độ chính xác của đường cong xấp xỉ tại mỗi điểm dữ liệu
4 Nếu độ sai lệch lớn hơn ngưỡng € cho phép, trờ lại đường cong xấp xỉ trước đó Ngược lại, giảm số đỉnh điều khiển và trờ lại Bước 2
Phương pháp xấp xỉ toàn cục cho phép táo tạo các đường cong không nhất thiết phải chưa toàn bộ điểm dữ liệu, trừ các điểm dữ liệu đầu tiên và điểm cuối cùng Để đánh giá một đường cong xấp xỉ, ta sử dụng khoảng cách lỗi khoảng cách ngắn nhất từ điểm
dữ liệu đến đường cong Nếu tổng cách khoảng cách lỗi nhỏ hơn một ngưỡng cho phép đường cong đạt yêu cầu Như vậy với một đường cong nội suy, khoảng cách lỗi của mỗi điểm dữ liệu bằng không
Trang 15a Xấp xỉ toàn cục đường cong
Cho tập (n+1) điểm dữ liệu D = (D0, D1, …, Dn) bậc p và giá trị h, sao cho
n>h≥p≥l, cần tìm đường cong B-spline C(u) bậc p có (h+1) {pi} điểm điều khiển và đáp ứng cách điều kiện sau:
- Đường cong đi qua điểm đầu và điểm cuối
- Đường cong xấp xỉ đa thức theo phương pháp bình phương tối thiểu
Với số đỉnh h và bậc p đã xác định, ta xây dựng được vecto tham số và từ đó xây dựng được vecto nút T = {t0, t1, …, tn}
Phương trình đường cong B-spline : C(u) =
h
i
Ni,p(u)Pi) + Nh,p(u).Dn
Biểu diễn biểu thức Dk – C(tk) dưới dạng :
Dk – C(tk) = Dk – [N0,p(tk)D0 + (
1 1
h
i
|Qk – (
1 1
h
i
Ni,p(tk)Pi)|2 = ( Qk – (
1 1
h
i
Ni,p(tk)Pi)) * ( Qk – (
1 1
h
i
Ni,p(tk)Pi))