Luận án Nghiên cứu nâng cao chất lượng tái tạo hình học bề mặt các sản phẩm cơ khí bằng công nghệ quét 3G sử dụng thiết bị Kinect V2
Chuyển đổi số là khái niệm ra đời trong thời đại internet bùng nổ, đang trở
nên phổ biến trong thời gian gần đây, mô tả việc ứng dụng công nghệ vào tất
cả các mặt của đời sống xã hội. Các ngành công nghiệp có thể thu được nhiều
lợi ích từ việc tận dụng các xu hướng công nghệ như thiết kế dựa trên thuật
toán tối ưu và các mô hình thông minh. Quy trình sản xuất của các ngành
này ngày càng sáng tạo hơn nhờ vào các công nghệ sản xuất bồi đắp (additive
engineering), robot thông minh, trí tuệ nhân tạo và các mô hình dịch vụ mới
hiện đang được phát triển. Một trong những quá trình chuyển đổi số rất thông
dụng là chuyển đổi các biểu diễn dữ liệu lấy mẫu rời rạc của một đối tượng vật
lý thành một biểu diễn số của bề mặt liên tục trong máy tính hay còn được gọi
là quá trình tái tạo hình học bề mặt. Đầu ra của quá trình tái tạo hình học bề
mặt thường được gọi là bản sao số.
Bản sao số là phiên bản kỹ thuật số của một sản phẩm hay quy trình thực,
được sử dụng để tìm hiểu và dự đoán các đặc điểm hiệu suất của sản phẩm trên
thực tế. Các bản sao số được dùng trong suốt vòng đời của sản phẩm để mô
phỏng, dự đoán và tối ưu hóa sản phẩm cũng như hệ thống sản xuất trước khi
đầu tư hệ thống thiết bị thực tế. Bằng sự kết hợp mô phỏng đa chiều vật lý,
phân tích dữ liệu và khả năng học máy, bản sao số có thể mô phỏng các tác động
của việc thay đổi thiết kế, các trường hợp giả định, các điều kiện môi trường,
cũng như vô vàn các biến số khác nhằm loại bỏ nhu cầu mô phỏng bằng mô
hình thật, giảm thiểu thời gian phát triển, cải thiện chất lượng của sản phẩm
để hình thành sản phẩm cuối cùng.
Tóm tắt nội dung tài liệu: Luận án Nghiên cứu nâng cao chất lượng tái tạo hình học bề mặt các sản phẩm cơ khí bằng công nghệ quét 3G sử dụng thiết bị Kinect V2
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Bùi Văn Biên NGHIÊN CỨU NÂNG CAO CHẤT LƯỢNG TÁI TẠO HÌNH HỌC BỀ MẶT CÁC SẢN PHẨM CƠ KHÍ BẰNG CÔNG NGHỆ QUÉT 3D SỬ DỤNG THIẾT BỊ KINECT V2 LUẬN ÁN TIẾN SĨ KỸ THUẬT CƠ KHÍ Hà Nội – 2021 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Bùi Văn Biên NGHIÊN CỨU NÂNG CAO CHẤT LƯỢNG TÁI TẠO HÌNH HỌC BỀ MẶT CÁC SẢN PHẨM CƠ KHÍ BẰNG CÔNG NGHỆ QUÉT 3D SỬ DỤNG THIẾT BỊ KINECT V2 Ngành: Kỹ thuật Cơ khí Mã số: 9520103 LUẬN ÁN TIẾN SĨ KỸ THUẬT CƠ KHÍ NGƯỜI HƯỚNG DẪN KHOA HỌC: GS. TSKH. Bành Tiến Long Hà Nội – 2021 LỜI CAM ĐOAN Tôi xin cam đoan các kết quả trình bày trong luận án là công trình nghiên cứu của tôi dưới sự hướng dẫn của cán bộ hướng dẫn. Các số liệu, các kết quả trình bày trong luận án hoàn toàn trung thực và chưa từng được tác giả khác công bố. Các dữ liệu tham khảo được trích dẫn đầy đủ. Hà Nội, ngày 11 tháng 01 năm 2021 Người hướng dẫn khoa học Nghiên cứu sinh GS.TSKH. Bành Tiến Long Bùi Văn Biên Trang i LỜI CẢM ƠN Trong quá trình nghiên cứu và hoàn thành Luận án, Nghiên cứu sinh đã nhận được sự định hướng, giúp đỡ, các ý kiến đóng góp quý báu và những lời động viên của các nhà khoa học, các thầy cô giáo, đồng nghiệp và gia đình. Trước hết, Nghiên cứu sinh xin bày tỏ lời cảm ơn sâu sắc tới thày GS.TSKH. Bành Tiến Long đã tận tình hướng dẫn và giúp đỡ trong quá trình nghiên cứu. Cho phép Nghiên cứu sinh chân thành cảm ơn các thày cô giáo, các nhà khoa học của Bộ môn Gia công vật liệu và Dụng cụ công nghiệp, Viện Cơ khí, Trường Đại học Bách khoa Hà Nội đã có các góp ý quý báu cho Nghiên cứu sinh trong quá trình thực hiện Luận án này. Nghiên cứu sinh chân thành cảm ơn Ban Giám hiệu, Phòng Đào tạo, Viện Cơ khí, Trường Đại học Bách khoa Hà Nội, cũng như Ban Giám hiệu, Khoa Điện - Cơ, Trường Đại học Hải Phòng đã tạo điều kiện thuận lợi để Nghiên cứu sinh hoàn thành nhiệm vụ nghiên cứu. Cuối cùng Nghiên cứu sinh bày tỏ lời cảm ơn tới các đồng nghiệp, gia đình, bạn bè đã luôn động viên, chia sẻ, ủng hộ và giúp đỡ Nghiên cứu sinh vượt qua khó khăn để đạt được những kết quả nghiên cứu trong Luận án này. NCS Bùi Văn Biên Trang ii MỤC LỤC LỜI CẢM ƠN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii MỤC LỤC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT . . . . . vi DANH MỤC CÁC BẢNG . . . . . . . . . . . . . . . . . . . . . . . vii DANH MỤC CÁC HÌNH VẼ . . . . . . . . . . . . . . . . . . . . . ix MỞ ĐẦU 1 CHƯƠNG 1. Tổng quan về tái tạo hình học bề mặt sản phẩm cơ khí bằng công nghệ quét 3D 7 1.1 Giới thiệu chung . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Tổng quan về thiết bị quét 3D . . . . . . . . . . . . . . . . . . 10 1.2.1 Phân loại thiết bị quét 3D . . . . . . . . . . . . . . . . . . . 10 1.2.2 Máy quét 3D laser . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.3 Máy quét 3D ánh sáng cấu trúc . . . . . . . . . . . . . . . . 13 1.2.4 Máy quét 3D ToF . . . . . . . . . . . . . . . . . . . . . . . . 15 1.3 Thiết bị quét Kinect v2 . . . . . . . . . . . . . . . . . . . . . . 16 1.3.1 Nguyên lý xác định độ sâu trong thiết bị ToF . . . . . . . 16 1.3.2 Kỹ thuật ToF sóng liên tục trong thiết bị ToF . . . . . . . 18 1.3.3 Cấu tạo và đặc tính kỹ thuật của Kinect v2 . . . . . . . . 21 1.3.4 Mô hình của cảm biến IR trong Kinect v2 . . . . . . . . . 23 1.3.5 Thu thập và xử lý dữ liệu . . . . . . . . . . . . . . . . . . . 25 1.4 Quá trình xử lý thông tin hình học . . . . . . . . . . . . . . . 26 1.4.1 Giới thiệu chung . . . . . . . . . . . . . . . . . . . . . . . . 26 1.4.2 Xử lý thông tin hình học bằng Geomagic Design X . . . . 31 1.5 Tổng quan về nâng cao chất lượng quá trình tái tạo hình học bề mặt sử dụng Kinect v2 . . . . . . . . . . . . . . . . . . 35 1.5.1 Tình hình nghiên cứu ngoài nước . . . . . . . . . . . . . . . 35 1.5.2 Tình hình nghiên cứu trong nước . . . . . . . . . . . . . . . 41 1.6 Kết luận chương 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 42 CHƯƠNG 2. Nghiên cứu các yếu tố ảnh hưởng đến quá trình số hóa bề mặt 3D chi tiết cơ khí sử dụng Kinect v2 43 2.1 Quá trình khởi động của Kinect v2 . . . . . . . . . . . . . . . 43 2.1.1 Mô tả thí nghiệm . . . . . . . . . . . . . . . . . . . . . . . . 43 2.1.2 Phương pháp thực hiện . . . . . . . . . . . . . . . . . . . . 44 2.1.3 Kết quả và đánh giá . . . . . . . . . . . . . . . . . . . . . . 45 Trang iii 2.2 Ảnh hưởng của khoảng cách giữa thiết bị và đối tượng . . 50 2.2.1 Mô tả thí nghiệm . . . . . . . . . . . . . . . . . . . . . . . . 51 2.2.2 Phương pháp thực hiện . . . . . . . . . . . . . . . . . . . . 52 2.2.3 Kết quả và đánh giá . . . . . . . . . . . . . . . . . . . . . . 53 2.3 Ảnh hưởng của vị trí điểm ảnh trong ảnh độ sâu . . . . . 55 2.3.1 Mô tả thí nghiệm . . . . . . . . . . . . . . . . . . . . . . . . 56 2.3.2 Phương pháp thực hiện . . . . . . . . . . . . . . . . . . . . 57 2.3.3 Kết quả và đánh giá . . . . . . . . . . . . . . . . . . . . . . 57 2.4 Ảnh hưởng do phản xạ của bề mặt đối tượng quét . . . . 59 2.4.1 Bề mặt phản xạ . . . . . . . . . . . . . . . . . . . . . . . . . 60 2.4.2 Phần mềm KSCAN3D . . . . . . . . . . . . . . . . . . . . . 62 2.4.3 Thiết lập thực nghiệm . . . . . . . . . . . . . . . . . . . . . 64 2.4.4 Kết quả và đánh giá . . . . . . . . . . . . . . . . . . . . . . 66 2.5 Kết luận chương 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 72 CHƯƠNG 3. Nâng cao chất lượng quá trình số hóa bề mặt 3D chi tiết cơ khí sử dụng Kinect v2 74 3.1 Hai phương pháp giảm ảnh hưởng của phản xạ bề mặt . 74 3.1.1 Phương pháp tạo lớp phủ chống phản xạ bề mặt . . . . . 74 3.1.2 Phương pháp ghép đám mây điểm bù vùng trống dữ liệu 82 3.2 Nâng cao chất lượng ảnh độ sâu . . . . . . . . . . . . . . . . 86 3.2.1 Loại bỏ nhiễu trong ảnh độ sâu . . . . . . . . . . . . . . . . 87 3.2.2 Lựa chọn số lượng ảnh độ sâu liên tiếp . . . . . . . . . . . 89 3.3 Nâng cao chất lượng tiền xử lý đám mây điểm . . . . . . . 90 3.3.1 Loại bỏ các điểm ngoại lai trong đám mây điểm . . . . . . 90 3.3.2 Lựa chọn thuật toán đăng ký đám mây điểm . . . . . . . . 91 3.4 Kết luận chương 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 97 CHƯƠNG 4. Quá trình tái tạo hình học bề mặt các sản phẩm cơ khí sử dụng Kinect v2 và ứng dụng 98 4.1 Quá trình tái tạo hình học bề mặt sử dụng Kinect v2 . . 98 4.1.1 Giải thuật tái tạo hình học bề mặt sử dụng Kinect v2 . . . 98 4.1.2 Thực nghiệm tái tạo hình học bề mặt sử dụng Kinect v2 . 100 4.1.3 Đánh giá kết quả . . . . . . . . . . . . . . . . . . . . . . . . 104 4.2 Ứng dụng thiết kế bề mặt khuôn mũ bảo hiểm . . . . . . . 106 4.2.1 Quá trình tái tạo hình học bề mặt . . . . . . . . . . . . . . 106 4.2.2 Quá trình ứng dụng . . . . . . . . . . . . . . . . . . . . . . 109 4.3 Xác định phân bố dữ liệu đám mây điểm xung quanh bề mặt danh nghĩa của chi tiết cơ khí . . . . . . . . . . . . . . . 110 4.3.1 Cơ sở lý thuyết . . . . . . . . . . . . . . . . . . . . . . . . . 110 4.3.2 Phương pháp thực nghiệm . . . . . . . . . . . . . . . . . . . 112 4.3.3 Đánh giá kết quả . . . . . . . . . . . . . . . . . . . . . . . . 113 4.4 Kết luận chương 4 . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Trang iv KẾT LUẬN 116 DANH MỤC CÔNG TRÌNH KHOA HỌC ĐÃ CÔNG BỐ CỦA LUẬN ÁN 118 TÀI LIỆU THAM KHẢO 119 PHỤ LỤC P1 Trang v DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT Danh mục các ký hiệu STT Ký hiệu Giải nghĩa 1 τd Thời gian mà sóng ánh sáng truyền từ bộ phát đến đối tượng và quay trở lại bộ thu 2 d Khoảng cách (độ sâu) từ cảm biến IR của thiết bị Kinect v2 tới đối tượng 3 A Biên độ của tín hiệu hữu ích 4 B Biên độ của ánh sáng nền 5 ∆ϕ Độ lệch pha của tín hiệu hữu ích 6 fmod Tần số sóng điều chế 7 L Giá trị lớn nhất của khoảng cách d 8 σd Nhiễu trong quá trình xác định khoảng cách d 9 (I, u, v) Hệ tọa độ ảnh đơn vị pixel 10 (C, x, y, z) Hệ tọa độ máy ảnh 11 P (x, y, z) Vị trí của điểm vật lý trong hệ tọa độ máy ảnh 12 p(u.v) Vị trí điểm ảnh trong hệ tọa độ ảnh đơn vị pixel 13 f Tiêu cự của cảm biến IR 14 MAD Độ lệch tuyệt đối trung vị 15 dkNN Khoảng cách trung bình của k lân cận gần nhất 16 P Đám mây điểm dữ liệu 17 M Đám mây điểm mô hình 18 T Ma trận tịnh tiến 19 R Ma trận quay 20 cov(X) Ma trận hiệp phương sai của X 21 RPCA Giá trị trung bình phân bố dữ liệu đám mây điểm xác định theo phương pháp PCA Trang vi Danh mục các chữ viết tắt STT Viết tắt Tiếng Anh Tiếng Việt 1 CAD Computer Aided Design Thiết kế có sự hỗ trợ của máy tính 2 CAM Computer Aided Manu- facturing Sản xuất có sự hỗ trợ của máy tính 3 3D Three Dimensional Ba chiều 4 CMM Coordinates Measuring Machine Máy đo tọa độ 5 RE Reverse Engineering Kỹ thuật ngược 6 ToF Time-of-Flight Thời gian truyền sóng 7 SLAM Simultaneous Localiza- tion And Mapping Bản đồ hóa và định vị đồng thời 8 IR Infra-Red Hồng ngoại 9 ICP Iterative Closest Points Các điểm lặp gần nhất 10 2D Two Dimensional Hai chiều 11 NURBS Non-uniform rational B- spline Mặt hoặc đường B-spline hữu tỉ không đồng nhất 12 CNC Computer Numerical Control Điều khiển số bằng máy tính 13 PCA Principal Component Analysis Phân tích thành phần chính Trang vii DANH MỤC CÁC BẢNG Bảng 1.1 Một số máy quét 3D laser thương mại . . . . . . . . . . . . . 13 Bảng 1.2 Một số máy quét 3D ánh sáng cấu trúc thương mại . . . . . 14 Bảng 1.3 Một số máy quét ToF thương mại . . . . . . . . . . . . . . . 16 Bảng 1.4 Các thông số kỹ thuật của Kinect v2 (chỉnh sửa theo nguồn: [25]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Bảng 1.5 Các tham số nội máy ảnh độ sâu và hệ số méo hướng kính của Kinect v2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Bảng 4.1 Giá trị trung bình phân bố dữ liệu đám mây điểm xung quanh bề mặt danh nghĩa được đo bởi Kinect v2 . . . . . . . . . . 114 Trang viii DANH MỤC CÁC HÌNH VẼ Hình 1 Quá trình tái tạo hình học bề mặt: a) Đối tượng vật lý; b) Đám mây điểm; c) Phân mảnh đám mây điểm; d) Đăng nhập mảnh bề mặt; e) Mô hình CAD (nguồn: [2]) . . . . . . . . . . . . 2 Hình 1.1 Sơ đồ mô tả của quy trình sản xuất truyền thống (trái) và quy trình sản xuất RE (phải) . . . . . . . . . . . . . . . . . . . . . 8 Hình 1.2 Các bước cơ bản của RE . . . . . . . . . . . . . . . . . . . . . 9 Hình 1.3 Sơ đồ phân loại thiết bị số hóa bề mặt 3D . . . . . . . . . . 11 Hình 1.4 Nguyên lý làm việc của máy quét laser (nguồn: [12]) . . . . 12 Hình 1.5 Nguyên lý thời gian truyền sóng . . . . . . . . . . . . . . . . 17 Hình 1.6 Nguyên lý gỡ pha của kỹ thuật ToF sóng liên tục (nguồn: [10]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Hình 1.7 Ví dụ về tín hiệu phát ra sE(t) (màu xanh) và tín hiệu thu được sR(t) (màu đỏ) (nguồn: [21]) . . . . . . . . . . . . . . . . . . . 19 Hình 1.8 Vị trí cảm biến và nguồn sáng của Kinect v2 (nguồn: [23]) 21 Hình 1.9 Mô hình máy ảnh lỗ nhỏ (nguồn: [27]) . . . . . . . . . . . . 23 Hình 1.10 Tiêu điểm ước tính của cảm biến IR và hệ trục tọa độ máy ảnh (nguồn: [23]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Hình 1.11 Một ví dụ về phân mảnh bề mặt (nguồn: [33]) . . . . . . . . 27 Hình 1.12 Một ví dụ về đăng nhập mảnh bề mặt (nguồn: [35]) . . . . . 28 Hình 1.13 Ví dụ so sánh phần mềm tái tạo hình học bề mặt . . . . . . 30 Hình 1.14 Kết quả tự động nhận dạng đặc điểm của Solidworks . . . . 31 Hình 1.15 Giao diện của phần mềm Geomagic Design X . . . . . . . . 32 Hình 1.16 Ứng dụng phương pháp Mesh Modeling để tạo lưới bề mặt . 33 Hình 1.17 Một số thông số đánh giá độ chính xác của Kinect v2 (nguồn: [44]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Hình 1.18 Bảy sản phẩm thương mại được sử dụng để tạo lớp phủ chống phản xạ bề mặt trong quá trình số hóa chi tiết cơ khí (nguồn:[51]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Hình 1.19 Đám mây điểm của bề mặt líp xe đạp thể hiện các điểm ngoại lai thưa thớt (hình chữ nhật màu tím), các điểm ngoại lai dạng cụm cô lập (hình chữ nhật màu xanh) và các điểm ngoại lai dạng cụm không cô lập (hình chữ nhật màu đỏ) (nguồn: [57]) . . 39 Hình 2.1 Cấu hình thí nghiệm quá trình khởi động của Kinect v2 . . 44 Hình 2.2 Kết quả phép đo độ sâu ở vị trí cách tường 1, 5m . . . . . . 46 Trang ix Hình 2.3 Độ lệch chuẩn của độ sâu trung bình vùng con 11pixel × 11pixel ở vị trí cách tường 1, 5m . . . . . . . . . . . . . . . . . . . 46 Hình 2.4 Phân bố giá trị độ sâu của điểm cơ sở ở vị trí cách tường 1, 5m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Hình 2.5 Ảnh độ sâu của một khung hình tại vị trí cách tường 1, 5m 48 Hình 2.6 Kết quả phép đo độ sâu ở vị trí cách tường 3m . . . . . . . 48 Hình 2.7 Độ lệch chuẩn của độ sâu trung bình vùng con 11pixel × 11pixel ở vị trí cách tường 3m . . . . . . . . . . . . . . . . . . . . . 49 Hình 2.8 Phân bố giá trị độ sâu của điểm cơ sở ở vị trí cách tường 3m 49 Hình 2.9 Ảnh độ sâu của một khung hình tại vị trí cách tường 3m . 50 Hình 2.10 Cấu hình thí nghiệm khoảng cách giữa Kinect v2 và đối tượng đo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Hình 2.11 Kết quả của thí nghiệm khoảng cách . . . . . . . . . . . . . 53 Hình 2.12 Sai số phép đo khoảng cách từ Kinect v2 đến đối tượng đo 54 Hình 2.13 Độ lệch chuẩn của sai số khoảng cách . . . . . . . . . . . . . 54 Hình 2.14 Hệ số biến thiên của cường độ ánh sáng theo khoảng cách . 55 Hình 2.15 Cấu hình thí nghiệm đánh giá ảnh hưởng của vị trí điểm ảnh trong ảnh độ sâu . . . . . . . . . . . . . . . . . . . . . . . . . 56 Hình 2.16 Khoảng cách đo được của các điểm ảnh trong vùng con 260pixel × 220pixel . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Hình 2.17 Độ lệch khoảng cách đo được của các điểm ảnh nằm trên trục song song với trục u đi qua tọa độ 212 của điểm cơ sở . . . . 58 Hình 2.18 Độ lệch khoảng cách đo được của các điểm ảnh nằm trên trục song song với trục v đi qua tọa độ 256 của điểm cơ sở . . . . 59 Hình 2.19 Sự phản xạ tại mặt phân cách phẳng (nguồn: [72]) . . . . . 60 Hình 2.20 Các thành phần phản chiếu ánh sáng trong quá trình quét bề mặt phản xạ (nguồn: [74]) . . . . . . . . . . . . . . . . . . . . . 61 Hình 2.21 Đồ thị mô tả mối quan hệ của góc tới và hệ số phản xạ Fresnel F của ba vật liệu: kính, đồng và nhôm (từ trái sang phải) (nguồn: [72]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Hình 2.22 Giao diện phần mềm KScan3D . . . . . . . . . . . . . . . . . 63 Hình 2.23 Các vật mẫu của thí nghiệm khảo sát ảnh hưởng phản xạ bề mặt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Hình 2.24 Cấu hình thí nghiệm ảnh hưởng của phản xạ bề mặt . . . . 65 Hình 2.25 Các vị trí khảo sát ảnh hưởng phản xạ bề mặt . . . . . . . . 65 Hình 2.26 Đám mây điểm thu được ở vị trí khảo sát số 1 . . . . . . . . 67 Hình 2.27 Đám mây điểm thu được ở vị trí khảo sát số 2 . ... ng trinh thu thap du lieu. 22 while true 23 % Cap nhat du lieu tu Kinect v2. 24 validData = k2.updateData; 25 % Truoc khi thu thap du lieu , chung ta can chac chan rang 26 % khung hinh hop le duoc thu nhan. 27 if validData 28 if (i <= 50) 29 % Sao chep du lieu sang ma tran cua Matlab. 30 depth = k2.getDepth; 31 try 32 set(hdepth , 'CData ',depth); 33 for m=251:261 34 for n = 207:217 Trang P4 35 camCoords = k2. mapDepthPoints2Camera([m n]); 36 tg(m-250,n-206)= camCoords(3); 37 end 38 end 39 pc(i)= mean2(tg); 40 sigma(i)=std2(tg); 41 i=i+1; 42 catch 43 break; 44 end 45 elseif (i > 50) 46 break; 47 end 48 end 49 pause (0.01) 50 end 51 time=round(toc(tt) ,0); 52 % Dong doi tuong Kinect. 53 k2.delete; 54 close all Phụ lục 3.1: Chương trình máy tính phục vụ thực nghiệm phương pháp ghép đám mây điểm bù vùng trống dữ liệu theo dịch chuyển tịnh tiến 1 % Chuong trinh may tinh thuc nghiem phuong phap ghep dam may diem bu vung 2 % trong du lieu theo dich chuyen tinh tien 3 clear all 4 close all 5 % Gan dam may diem tham chieu 6 pc=pcread( '5.ply '); 7 roi =[ -70 ,60; -30 ,100;1245,1255]; 8 indices=findPointsInROI(pc,roi); 9 pcA=select(pc,indices); 10 % Gan dam may diem dich chuyen 11 pc=pcread( '6.ply '); 12 roi =[ -190, -60;-30 ,100;1245,1255]; 13 indices=findPointsInROI(pc,roi); 14 pc6=select(pc,indices); 15 % Xac dinh ma tran quay va ma tran tinh tien 16 A = [cos(0) sin(0) 0 0; ... Trang P5 17 -sin(0) cos(0) 0 0; ... 18 0 0 1 0; ... 19 120 0 0 1]; 20 tform = affine3d(A); 21 % Thuc hien bien doi he truc toa do 22 mpc = pctransform(pc6,tform); 23 % Hop nhat hai dam may diem 24 pcA=pcmerge(mpc ,pcA ,0.0001); Phụ lục 3.2: Chương trình máy tính phục vụ thực nghiệm phương pháp ghép đám mây điểm bù vùng trống dữ liệu theo dịch chuyển quay 1 % Chuong trinh may tinh thuc nghiem phuong phap ghep dam may diem bu vung 2 % trong du lieu theo dich chuyen quay 3 clear all 4 close all 5 % Nhap du lieu 6 numfiles=36; 7 for n = 1: numfiles 8 myfilename = sprintf( '%d.ply ', n); 9 % Gan dam may diem tham chieu 10 if (n <2) 11 pc=pcread(myfilename); 12 roi =[ -100 ,90; -60 ,130;1065,1075]; 13 indices=findPointsInROI(pc,roi); 14 pcA=select(pc,indices); 15 elseif (n > 1) % Gan dam may diem dich chuyen 16 pcTC = pcA; 17 pc=pcread(myfilename); 18 roi =[ -100 ,90; -60 ,130;1065,1075]; 19 indices=findPointsInROI(pc,roi); 20 pcA=select(pc,indices); 21 % Xac dinh ma tran quay va ma tran tinh tien 22 A = [cos(-(n-1)*pi/18) sin(-(n-1)*pi/18) 0 0; ... 23 -sin(-(n-1)*pi/18) cos(-(n-1)*pi/18) 0 0; ... 24 0 0 1 0; ... 25 0 0 0 1]; 26 tform = affine3d(A); 27 % Thuc hien bien doi he truc toa do Trang P6 28 mpc = pctransform(pcA,tform); 29 % Hop nhat hai dam may diem 30 pcA=pcmerge(mpc ,pcTC ,0.0001); 31 end 32 end Phụ lục 3.3: Chương trình con để lọc nhiễu trên ảnh độ sâu 1 function output = MAD_Filter(X) 2 global madRatioThreshold; 3 try 4 % Gan gia tri mac dinh. 5 b=1.4826; 6 output = 0; 7 % Lay gia tri trung vi cua du lieu. 8 medianValue = median(X); 9 % Lay gia tri trung vi tuyet doi 10 absoluteDeviation = abs(X(:) - medianValue); 11 % Tinh gia tri do lech tuyet doi trung vi. 12 MAD_Value = b*median(absoluteDeviation ); 13 % Nhan dang diem ngoai lai 14 centralValue = abs(X(:) - medianValue) ; 15 % Loai bo anh chua diem ngoai lai. 16 if centralValue > madRatioThreshold * MAD_Value 17 itIsAnOutlier = true; 18 else 19 itIsAnOutlier = false; 20 end 21 % Gan anh sau khi loc diem ngoai lai; 22 output = itIsAnOutlier; 23 catch ME 24 % Hien thi Loi neu co 25 errorMessage = sprintf( 'Error in MAD_Filter():\n\nError Message:\n%s ' , ME.message); 26 fprintf(1, '%s\n ', errorMessage); Trang P7 27 end 28 return; Phụ lục 3.4: Chương trình máy tính phục vụ khảo sát ảnh hưởng của số lượng ảnh độ sâu liên tiếp 1 % Chuong trinh may tinh thuc nghiem xac dinh so luong anh do sau hop ly 2 clear all 3 close all 4 format long 5 % Lay thong tin tu Kinect 6 depthDevice = imaq.VideoDevice( 'kinect' ,2); 7 % Kich thuoc anh do sau 8 depth_width = 512; depth_height = 424; outOfRange = 1500; 9 % Khoi tao may anh 10 step(depthDevice); 11 % Thu thap N anh do sau 12 % Tu 1-10 13 tt=tic; 14 for i = 1:10 15 if (i < 2) 16 depthImage = step(depthDevice); 17 elseif (i > 1) 18 tg = depthImage; 19 depthImage = step(depthDevice); 20 depthImage = tg+depthImage; 21 end 22 depthImage1 = depthImage/10; 23 pc = pcfromkinect(depthDevice ,depthImage1); 24 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 25 indices=findPointsInROI(pc,roi); 26 pcA=select(pc,indices); 27 ztb(1) = mean(pcA.Location(:,3)); 28 sigma(1) =std(pcA.Location(:,3)); 29 num_points(1) = max(size(pcA.Location)); 30 end 31 %Tu 11 -20 32 for i = 11:20 33 if (i <12) 34 depthImage = step(depthDevice); 35 elseif (i > 11) Trang P8 36 tg = depthImage; 37 depthImage = step(depthDevice); 38 depthImage = tg+depthImage; 39 end 40 depthImage2 = depthImage/10; 41 depthImage12 = (depthImage1 + depthImage2)/2; 42 pc = pcfromkinect(depthDevice ,depthImage12); 43 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 44 indices=findPointsInROI(pc,roi); 45 pcA=select(pc,indices); 46 ztb(2) = mean(pcA.Location(:,3)); 47 sigma(2) =std(pcA.Location(:,3)); 48 num_points(2) = max(size(pcA.Location)); 49 end 50 % Tu 21-30 51 for i = 21:30 52 if (i <22) 53 depthImage = step(depthDevice); 54 elseif (i > 21) 55 tg = depthImage; 56 depthImage = step(depthDevice); 57 depthImage = tg+depthImage; 58 end 59 depthImage3 = depthImage/10; 60 depthImage13 = (depthImage1 + depthImage2 + depthImage3)/3; 61 pc = pcfromkinect(depthDevice ,depthImage13); 62 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 63 indices=findPointsInROI(pc,roi); 64 pcA=select(pc,indices); 65 ztb(3) = mean(pcA.Location(:,3)); 66 sigma(3) =std(pcA.Location(:,3)); 67 num_points(3) = max(size(pcA.Location)); 68 end 69 % Tu 31-40 70 for i = 31:40 71 if (i <32) 72 depthImage = step(depthDevice); 73 elseif (i > 31) 74 tg = depthImage; 75 depthImage = step(depthDevice); 76 depthImage = tg+depthImage; 77 end 78 depthImage4 = depthImage/10; Trang P9 79 depthImage14 = (depthImage1 + depthImage2 + depthImage3 + depthImage4)/4; 80 pc = pcfromkinect(depthDevice ,depthImage14); 81 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 82 indices=findPointsInROI(pc,roi); 83 pcA=select(pc,indices); 84 ztb(4) = mean(pcA.Location(:,3)); 85 sigma(4) =std(pcA.Location(:,3)); 86 num_points(4) = max(size(pcA.Location)); 87 end 88 % Tu 41-50 89 for i = 41:50 90 if (i <42) 91 depthImage = step(depthDevice); 92 elseif (i > 41) 93 tg = depthImage; 94 depthImage = step(depthDevice); 95 depthImage = tg+depthImage; 96 end 97 depthImage5 = depthImage/10; 98 depthImage15 = (depthImage1 + depthImage2 + depthImage3 + depthImage4 + depthImage5)/5; 99 pc = pcfromkinect(depthDevice ,depthImage15); 100 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 101 indices=findPointsInROI(pc,roi); 102 pcA=select(pc,indices); 103 ztb(5) = mean(pcA.Location(:,3)); 104 sigma(5) =std(pcA.Location(:,3)); 105 num_points(5) = max(size(pcA.Location)); 106 end 107 % Tu 51 - 60 108 for i = 51:60 109 if (i <52) 110 depthImage = step(depthDevice); 111 elseif (i > 51) 112 tg = depthImage; 113 depthImage = step(depthDevice); 114 depthImage = tg+depthImage; 115 end 116 depthImage6 = depthImage/10; 117 depthImage16 = (depthImage1 + depthImage2 + depthImage3 + depthImage4 + depthImage5 + depthImage6)/6; 118 pc = pcfromkinect(depthDevice ,depthImage16); 119 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; Trang P10 120 indices=findPointsInROI(pc,roi); 121 pcA=select(pc,indices); 122 ztb(6) = mean(pcA.Location(:,3)); 123 sigma(6) =std(pcA.Location(:,3)); 124 num_points(6) = max(size(pcA.Location)); 125 end 126 % Tu 61 - 70 127 for i = 61:70 128 if (i <62) 129 depthImage = step(depthDevice); 130 elseif (i > 61) 131 tg = depthImage; 132 depthImage = step(depthDevice); 133 depthImage = tg+depthImage; 134 end 135 depthImage7 = depthImage/10; 136 depthImage17 = (depthImage1 + depthImage2 + depthImage3 + depthImage4 + depthImage5 + depthImage6 + depthImage7)/7; 137 pc = pcfromkinect(depthDevice ,depthImage17); 138 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 139 indices=findPointsInROI(pc,roi); 140 pcA=select(pc,indices); 141 ztb(7) = mean(pcA.Location(:,3)); 142 sigma(7) =std(pcA.Location(:,3)); 143 num_points(7) = max(size(pcA.Location)); 144 end 145 % Tu 71 - 80 146 for i = 71:80 147 if (i <72) 148 depthImage = step(depthDevice); 149 elseif (i > 71) 150 tg = depthImage; 151 depthImage = step(depthDevice); 152 depthImage = tg+depthImage; 153 end 154 depthImage8 = depthImage/10; 155 depthImage18 = (depthImage1 + depthImage2 + depthImage3 + depthImage4 + depthImage5 + depthImage6 + depthImage7 + depthImage8)/8; 156 pc = pcfromkinect(depthDevice ,depthImage18); 157 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 158 indices=findPointsInROI(pc,roi); 159 pcA=select(pc,indices); 160 ztb(8) = mean(pcA.Location(:,3)); Trang P11 161 sigma(8) =std(pcA.Location(:,3)); 162 num_points(8) = max(size(pcA.Location)); 163 end 164 % Tu 81 - 90 165 for i = 81:90 166 if (i <82) 167 depthImage = step(depthDevice); 168 elseif (i > 81) 169 tg = depthImage; 170 depthImage = step(depthDevice); 171 depthImage = tg+depthImage; 172 end 173 depthImage9 = depthImage/10; 174 depthImage19 = (depthImage1 + depthImage2 + depthImage3 + depthImage4 + depthImage5 + depthImage6 + depthImage7 + depthImage8 + depthImage9)/9; 175 pc = pcfromkinect(depthDevice ,depthImage19); 176 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 177 indices=findPointsInROI(pc,roi); 178 pcA=select(pc,indices); 179 ztb(9) = mean(pcA.Location(:,3)); 180 sigma(9) =std(pcA.Location(:,3)); 181 num_points(9) = max(size(pcA.Location)); 182 end 183 % Tu 91 - 100 184 for i = 91:100 185 if (i <92) 186 depthImage = step(depthDevice); 187 elseif (i > 91) 188 tg = depthImage; 189 depthImage = step(depthDevice); 190 depthImage = tg+depthImage; 191 end 192 depthImage10 = depthImage/10; 193 depthImage10tb = (depthImage6+depthImage7+ depthImage8+depthImage9+depthImage10)/5; 194 depthImage100 = (depthImage15 + depthImage10tb )/2; 195 pc = pcfromkinect(depthDevice ,depthImage100); 196 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 197 indices=findPointsInROI(pc,roi); 198 pcA=select(pc,indices); 199 ztb(10) = mean(pcA.Location(:,3)); 200 sigma (10) =std(pcA.Location(:,3)); Trang P12 201 num_points(10) = max(size(pcA.Location)); 202 end 203 % Tu 101 - 150 204 for i = 101:150 205 if (i <102) 206 depthImage = step(depthDevice); 207 elseif (i > 101) 208 tg = depthImage; 209 depthImage = step(depthDevice); 210 depthImage = tg+depthImage; 211 end 212 depthImage50 = depthImage/50; 213 depthImage150 = (depthImage15 + depthImage10tb + depthImage50)/3; 214 pc = pcfromkinect(depthDevice ,depthImage150); 215 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 216 indices=findPointsInROI(pc,roi); 217 pcA=select(pc,indices); 218 ztb(11) = mean(pcA.Location(:,3)); 219 sigma (11) =std(pcA.Location(:,3)); 220 num_points(11) = max(size(pcA.Location)); 221 end 222 % Tu 151 - 200 223 for i = 151:200 224 if (i <152) 225 depthImage = step(depthDevice); 226 elseif (i > 151) 227 tg = depthImage; 228 depthImage = step(depthDevice); 229 depthImage = tg+depthImage; 230 end 231 depthImage60 = depthImage/50; 232 depthImage200 = (depthImage15 + depthImage10tb + depthImage50 + depthImage60)/4; 233 pc = pcfromkinect(depthDevice ,depthImage200); 234 roi =[ -0.040,0.030;-0.010,0.060;1.152,1.157]; 235 indices=findPointsInROI(pc,roi); 236 pcA=select(pc,indices); 237 ztb(12) = mean(pcA.Location(:,3)); 238 sigma (12) =std(pcA.Location(:,3)); 239 num_points(12) = max(size(pcA.Location)); 240 end 241 time=round(toc(tt) ,0); 242 release(colorDevice); 243 release(depthDevice); Trang P13 Phụ lục 4.1: Chương trình máy tính để số hóa bề mặt chi tiết 1 % Chuong trinh thu nhan dam may diem bang Kinect v2 2 clear all 3 close all 4 format long 5 % Lay thong tin tu Kinect 6 colorDevice = imaq.VideoDevice( 'kinect' ,1); 7 depthDevice = imaq.VideoDevice( 'kinect' ,2); 8 % Kich thuoc anh do sau 9 depth_width = 512; depth_height = 424; outOfRange = 1500; 10 % Khoi tao may anh 11 step(colorDevice); 12 step(depthDevice); 13 % Bien trung gian 14 N = 50; 15 madRatioThreshold = 1.4826; 16 % Thu thap N anh do sau 17 for i = 1:N 18 if (i < 2) 19 depthImage = step(depthDevice); 20 elseif (i > 1) 21 tg = depthImage; 22 depthImage = step(depthDevice); 23 depthImage = tg+depthImage; 24 end 25 end 26 % Loc nhieu anh do sau 27 depthImage = MAD_Filter(depthImage); 28 % Tinh anh do sau trung binh 29 depthImage = depthImage/size(depthImage); 30 % Xac dinh dam may diem 31 colorImage = step(colorDevice); 32 pc = pcfromkinect(depthDevice ,depthImage ,colorImage); 33 pc = pcdenoise(pc, 'NumNeighbors ' ,8,'Threshold ' ,0.5); 34 pc = pcdownsample(pc, 'gridAverage ' ,0.5); 35 % Truy xuat dam may diem 36 pcwrite(pc, 'tru ','PLYFormat ','binary'); 37 release(colorDevice); 38 release(depthDevice); Trang P14 Phụ lục 4.2: Chương trình máy tính phục vụ thực nghiệm xác định phân bố dữ liệu đám mây điểm xung quanh bề mặt danh nghĩa của chi tiết cơ khí 1 % Chuong trinh may tinh xac dinh do nham be mat bang Kinect v2 2 clear all 3 close all 4 format long 5 % Lay thong tin tu Kinect 6 depthDevice = imaq.VideoDevice( 'kinect' ,2); 7 % Kich thuoc anh do sau 8 depth_width = 512; depth_height = 424; outOfRange = 1500; 9 % Khoi tao may anh 10 step(depthDevice); 11 % Bien trung gian 12 N = 50; 13 madRatioThreshold = 1.4826; 14 numfiles=50; 15 for i = 1: numfiles 16 for i = 1:N 17 if (i < 2) 18 depthImage = step(depthDevice); 19 elseif (i > 1) 20 tg = depthImage; 21 depthImage = step(depthDevice); 22 depthImage = tg+depthImage; 23 end 24 end 25 % Loc nhieu anh do sau 26 depthImage = MAD_Filter(depthImage); 27 % Tinh anh do sau trung binh 28 depthImage = depthImage/size(depthImage); 29 % Xac dinh dam may diem 30 pc = pcfromkinect(depthDevice ,depthImage); 31 pc = pcdenoise(pc, 'NumNeighbors ',8,'Threshold ' ,0.5); 32 pc = pcdownsample(pc, 'gridAverage ' ,0.5); 33 % Xac dinh vung do 34 roi=[ -20 ,18.1;-87.7, -75;1248,1250]; 35 indices=findPointsInROI(pc,roi); 36 pcA=select(pc,indices); 37 % Xac dinh thanh phan chinh Trang P15 38 X=pcA.Location; 39 [coeff ,score] = pca(X); 40 % Xac dinh do nham be mat 41 mpxy = coeff(: ,1:2); 42 pt = coeff(:,3); 43 [n,p] = size(X); 44 tbX = mean(X,1); 45 Xfit = repmat(tbX,n,1) + score (: ,1:2)*coeff (: ,1:2) '; 46 residuals = X - Xfit; 47 ss = abs((X - repmat(tbX ,n,1))*pt); 48 tongss= sum(ss); 49 R_PCA(i)=tongss/n; 50 end Trang P16
File đính kèm:
- luan_an_nghien_cuu_nang_cao_chat_luong_tai_tao_hinh_hoc_be_m.pdf