Các kết quả đạt được khi sử dụng phần mềm FastRBF:

Một phần của tài liệu Hàm rbf và một số ứng dụng trong đồ họa máy tính (Trang 44 - 60)

. các điểm tính toán đƣa ra khớp bằng RBF

3.5.Các kết quả đạt được khi sử dụng phần mềm FastRBF:

3.5.1. Khớp và tính toán dữ liệu 3D:

Trƣớc tiên, chúng ta tải dữ liệu điểm 3D bằng lệnh sau:

data=fastrbf_load('C:\Program Files\FarField Technology\FastRBF v1.4\Matlab\tutorial\FitAndEval\data.p3d')

Ta thu đƣợc kết quả nhƣ sau:

data =

Location: [3x5000 double]

Value: [1x5000 double]

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

colormap(jet(256)) fastrbf_view(data)

Sau khi dùng 2 lệnh trên ta thu đƣợc hình ảnh của dữ liệu 3D đã đƣợc tải nhƣ trong hình 3.1

Hình 3.1: Dữ liệu 3D đƣợc tải vào.

Để an toàn chúng ta xử lý dữ liệu bằng hàm unique nhƣ sau: data=fastrbf_unique(data)

Ta thu đƣợc kết quả:

data =

Location: [3x5000 double] Value: [1x5000 double]

Vì phạm vi giá trị dữ liệu là 0,1 chúng ta khớp một hàm RBF với độ chính xác 0,001 sử dụng hàm fit

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

rbf=fastrbf_fit(data,0.001)

Sau khi khớp ta đƣợc kết quả:

rbf = AchievedAcc: 3.3439e-004 DefaultEvalAcc: 1.0000e-005 Centres: [3x5000 double] Coeffs: [1x5004 double] PolyBase: [0.5000 0.5001 0.5000]

DataMin: [3.8337e-005 2.0880e-004 4.3258e-005] DataMax: [1.0000 0.9999 1.0000] BasicFunc: 0 BasicFuncParam: 0 BasicFuncParam2: 1 PolyDegree: 1 Rho: 0 FitType: 0 Version: 'FastRBF V 1.4.2' 3.5.1.1. Rút gọn tâm RBF:

Để rút gọn tâm RBF ta sử dụng câu lệnh sau:

rbf=fastrbf_fit(data,0.001,‟reduce‟,‟verbose‟)

Sau khi rút gọn tâm ta thu đƣợc kết quả:

rbf = AchievedAcc: 9.0459e-004 DefaultEvalAcc: 1.0000e-005 Centres: [3x843 double] Coeffs: [1x847 double] PolyBase: [0.5000 0.5001 0.5000]

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn DataMax: [1.0000 0.9999 1.0000] BasicFunc: 0 BasicFuncParam: 0 BasicFuncParam2: 1 PolyDegree: 1 Rho: 0 FitType: 1 Version: 'FastRBF V 1.4.2' Indices: [1x843 double]

Rút gọn tâm có kết quả là 843 tâm so với 5000 tâm của phƣơng pháp trực tiếp.

3.5.1.2. Tính toán lƣới 3D:

Bây giờ chúng ta tính toán hàm RBF 3D trên một lƣới bằng câu lệnh:

g=fastrbf_grideval(rbf,‟spacing‟,0.02)

Ta thu đƣợc kết quả: (adsbygoogle = window.adsbygoogle || []).push({});

g =

Value: [51x51x51 double]

Min: [3.8337e-005 2.0880e-004 4.3258e-005] Max: [1.0000 1.0002 1.0000]

Spacing: [0.0200 0.0200 0.0200]

Chúng ta phải đổi trật tự mảng giá trị và các đối số bằng các lệnh sau:

[gX, gY, gZ] = fastrbf_gridcoords(g); gV = permute(g.Value, [2 1 3]);

slice(gY, gX, gZ, gV, .7, .7, .3); colorbar; axis tight;

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Hình 3.2: Lƣới thu đƣợc sau khi đổi trật tự mảng giá trị và các đối số

3.5.2. Khớp dữ liệu bề mặt 3D:

3.5.2.1. Khớp bề mặt vào dữ liệu lƣới:

Dữ liệu lƣới đƣợc tạo ra từ rất nhiều loại máy quét và thƣờng chứa các lỗ không đều, cả lỗ lớn và lỗ nhỏ.

Bƣớc đầu tiên ta nhập vào tệp holey_face.obj bằng câu lệnh sau:

mesh = fastrbf_import('C:\Program Files\FarField Technology\FastRBF v1.4\Matlab\tutorial\SurfaceFit\holey_face.obj')

Sau khi thực hiện lệnh ta thu đƣợc kết quả:

Mesh =

Location: [3x3328 double]

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Dùng lênh: fastrbf_view(Mesh); để hiển thị đƣợc hình ảnh của bề mặt nhƣ trong hình 3.3

Hình 3.3. Hình ảnh của bề mặt đƣa vào

Sau đó xác định các đƣờng pháp tuyến bằng câu lệnh sau:

MeshWithNormals = fastrbf_normalsfrommesh(Mesh)

Sau khi dùng lệnh trên ta thu đƣợc kết quả:

MeshWithNormals =

Location: [3x3328 double]

Tri: [3x6283 double]

Gradient: [3x3328 double]

Để hiển thị bề mặt với các đƣờng pháp tuyến ta dùng lệnh:

fastrbf_view(MeshWithNormals, 'fv');

Sau khi dùng lệnh trên ta thu đƣợc bề mặt với các đƣờng pháp tuyến nhƣ đƣợc mô tả trong hình 3.4 (adsbygoogle = window.adsbygoogle || []).push({});

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Hình 3.4. Bề mặt với các đƣờng pháp tuyến

Trong ví dụ này, độ dài đƣờng pháp tuyến tối đa là 5mm sẽ đƣợc sử dụng. Các đƣờng pháp tuyến ngắn hơn 0,5mm sẽ đƣợc loại bỏ bằng lệnh sau:

Density = fastrbf_densityfromnormals(MeshWithNormals, 0.5, 5.0)

Sau khi thực hiện lệnh trên thu đƣợc kết quả:

Density =

Location: [3x6656 double] Value: [1x6656 double] Gradient: [3x6656 double]

Để hiển thị đƣợc kết quả (Hình 3.5) sau khi loại bỏ các đƣờng pháp tuyến ngắn hơn 0,5mm ta dùng lệnh:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Hình 3.5: Bề mặt với các đƣờng pháp tuyến có độ dài nhỏ hơn 0,5mm bị loại bỏ

Trƣớc khi khớp dữ liệu dùng lệnh sau:

Density = fastrbf_unique(Density)

Sau khi dùng lệnh trên ta thu đƣợc:

Density =

Location: [3x6653 double] Value: [1x6653 double] Gradient: [3x6653 double]

Để so sánh lợi ích của việc rút gọn tâm đầu tiên chúng ta khớp không có sự rút gọn tâm. Bằng câu lệnh sau:

rbf = fastrbf_fit(Density, 0.5, ‟direct‟)

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Finished fitting RBF rbf = AchievedAcc: 0.1093 DefaultEvalAcc: 0.0050 Centres: [3x6653 double] Coeffs: [1x6657 double] PolyBase: [2.3315 -7.9726 52.4559] DataMin: [-74.7032 -121.5387 7.3864] DataMax: [79.3662 105.5934 97.5255] BasicFunc: 0 BasicFuncParam: 0 BasicFuncParam2: 1 PolyDegree: 1 Rho: 0 FitType: 0 Version: 'FastRBF V 1.4.2'

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Hình 3.6: Bề mặt sau khi khớp không có sự rút gọn tâm

Bây giờ chúng ta sẽ khớp bề mặt với sự rút gọn tâm bằng câu lệnh sau:

rbf = fastrbf_fit(Density, 0.5,‟reduce‟)

Sau khi thực h iện lệnh ta thu đƣợc:

rbf = AchievedAcc: 0.4614 DefaultEvalAcc: 0.0050 Centres: [3x1628 double] Coeffs: [1x1632 double] PolyBase: [2.3315 -7.9726 52.4559] DataMin: [-74.7032 -121.5387 7.3864] DataMax: [79.3662 105.5934 97.5255]

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn BasicFunc: 0 BasicFuncParam: 0 BasicFuncParam2: 1 PolyDegree: 1 Rho: 0 FitType: 1 Version: 'FastRBF V 1.4.2' Indices: [1x1628 double]

Dùng lệnh: fastrbf_view(rbf); để hiển thị kết quả nhƣ trong hình 3.7

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Trong trƣờng hợp này, khi khớp dữ liệu với việc rút gọn tâm chỉ yêu cầu 1157 tâm còn khớp dữ liệu không có việc rút gọn tâm yêu cầu 3984 tâm.

Tiếp theo, chúng ta có thể tính giá trị của nó trên một lƣới 3D bằng lệnh sau: (adsbygoogle = window.adsbygoogle || []).push({});

g = fastrbf_grideval(rbf, 0.1, ‟spacing‟, 3); slice(g.Value, 40, 27, 15);

Sau khi tính giá trị trên lƣới 3D ta có kết quả nhƣ trong hình 3.8

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Đẳng mặt trong lƣới 3D đƣợc hiểu là tại các điểm hàm RBF có giá trị bằng không. Một lƣới mới đƣợc sinh ra bằng câu lệnh sau:

NewMesh = fastrbf_isosurf(rbf, 2)

Bằng lệnh: fastrbf_view(NewMesh); ta thu đƣợc hình 3.9.

Hình 3.9: Lƣới mới đƣợc sinh ra

Cuối cùng, chúng ta xuất lƣới thành file newmesh.obj để cho phép nó có thể tải đƣợc vào trong các gói 3D khác bằng lệnh sau:

fastrbf_export(NewMesh, ‟NewMesh.obj‟)

3.5.1.2. Gia công đẳng mặt:

Chúng ta bắt đầu bằng việc tải dữ liệu quét laser từ một bàn tay và khớp một hàm RBF vào một lƣới không đầy đủ. Các điểm ngoài bề mặt đƣợc sinh ra bởi sự nhô ra trong khoảng 0,5mm và 5mm bên ngoài bề mặt bàn tay.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Trƣớc hết ta đƣa dữ liệu bàn tay vào bằng câu lệnh sau:

Mesh = fastrbf_import(‟Hand.obj‟);

Density = fastrbf_densityfromnormals(Mesh, 0.5, 5.0); Density = fastrbf_unique(Density);

rbf = fastrbf_fit(Density, 0.25,‟reduce‟);

Bây giờ chúng ta muốn rút ra một lƣới đa giác. Một lƣới 1mm có thể đƣợc sinh ra bằng lệnh sau:

NewMesh = fastrbf_isosurf(rbf, 1);

Dùng lệnh: figure; fastrbf_view(NewMesh); để xem hình ảnh chi tiết của lƣới mới sinh ra nhƣ hình 3.10.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

3.6. Kết luận:

Với việc khai thác phần mềm FastRBF giúp ta hiểu vể quy trình và các bƣớc để khôi phục, biểu diễn các đối tƣợng 3D một cách rõ ràng và cụ thể. Từ đó hiểu rõ hơn về bài toán khôi phục và biểu diễn các đối tƣợng 3D, cụ thể hơn là những vấn đề bề mặt ẩn, khớp một hàm ẩn vào bề mặt…

Qua một số thí dụ đã trình bày, chúng ta thấy đƣợc những lợi ích của phần mềm FastRBF trong việc khôi phục và biểu diễn các đối tƣợng 3D. Đây là một phần mềm rất hữu ích cho những đối tƣợng cần sử dụng những kết quả của nó vào công việc của mình. Qua đó, chúng ta hiểu rõ hơn về vấn đề khôi phục và biểu diễn các đối tƣợng 3D để từ đó vận dụng vào từng trƣờng hợp cụ thể trong quá trình làm việc.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

KẾT LUẬN

Luận văn đề cập đến hàm cơ sở bán kính, một hàm có nhiều ứng dụng khác nhau trong đó là ứng dụng trong đồ họa máy tính. Đây là một ứng dụng quan trọng trong nhiều lĩnh vực khoa học. Kết quả của luận văn gồm có:

1. Trình bày tóm lƣợc các kết quả quan trọng về ứng dụng hàm RBF vào đồ họa máy tính mà xuất phát điểm là giải quyết bài toán nội suy dữ liệu rời rạc. Từ việc nghiên cứu tính khả nghịch của ma trận nội suy dẫn đến các nghiên cứu về hàm RBF. Các phƣơng pháp xây dựng hàm RBF đảm bảo tính đặt đúng của bài toán nội suy mà nền tảng là các kiến thức về hàm xác định dƣơng, hàm xác định dƣơng chặt, hàm đơn điệu hoàn toàn (GA, IMQ …). Thông qua các hàm xác định dƣơng có điều kiện, xây dựng mô hình nội suy với độ chính xác đa thức và các hàm RBF sử dụng tƣơng ứng (TPS, MQ…).

2. Trong chƣơng 2, luận văn đã trình bày ứng dụng hàm RBF vào việc khôi phục và biểu diễn các đối tƣợng 3D. Các vấn đề: Bề mặt ẩn; Khớp một hàm ẩn vào bề mặt; Nội suy hàm cơ sở bán kính; Các phƣơng pháp nhanh; Rút gọn tâm… đã đƣợc đƣa ra để giải quyết bài toán ứng dụng hàm RBF vào việc khôi phục và biểu diễn các đối tƣợng 3D.

3. Trong chƣơng 3, luận văn đã giới thiệu sơ lƣợc về phần mềm FastRBF và đƣa ra các kết quả trên một số thí dụ cụ thể.

Mặc dù đã hết sức cố gắng xong luận văn còn nhiều hạn chế và không thể tránh khỏi những sai sót. Em rất mong nhận đƣợc sự phê bình, đóng góp ý kiến của các thầy cô và bạn đọc. (adsbygoogle = window.adsbygoogle || []).push({});

Cuối cùng, một lần nữa em xin chân thành cảm ơn sự giúp đỡ, chỉ bảo nhiệt tình của thầy giáo PGS.TS. Đặng Quang Á.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Một phần của tài liệu Hàm rbf và một số ứng dụng trong đồ họa máy tính (Trang 44 - 60)