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.

pdf 156 trang dienloan 14620
Bạn đang xem 20 trang mẫu của 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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

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

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:

  • pdfluan_an_nghien_cuu_nang_cao_chat_luong_tai_tao_hinh_hoc_be_m.pdf