1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo môn học : Mô hình hóa hình học Đề tài : Tái tạo mặt cong B-spline

25 751 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 877,12 KB

Nội dung

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 1

LỜ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 2

MỤ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 3

I ĐƯỜ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 5

I.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 7

Ví 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 8

Cá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 9

II.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 0im và 0jn

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 10

Xá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 11

tmax = 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 12

Giả 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 13

Sau đó, 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 14

III.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 15

a 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))

Ngày đăng: 13/03/2014, 11:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w