Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 156 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
156
Dung lượng
30,24 MB
Nội dung
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Ệ QT 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 kết trình bày luận án cơng trình nghiên cứu hướng dẫn cán hướng dẫn Các số liệu, kết trình bày luận án hoàn toàn trung thực chưa tác giả khác công bố Các liệu tham khảo 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 Trang i Bùi Văn Biên LỜI CẢM ƠN Trong q trình nghiên cứu hồn thành Luận án, Nghiên cứu sinh nhận định hướng, giúp đỡ, ý kiến đóng góp quý báu lời động viên nhà khoa học, thầy giáo, đồng nghiệp 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 giúp đỡ trình nghiên cứu Cho phép Nghiên cứu sinh chân thành cảm ơn thày cô giáo, nhà khoa học Bộ môn Gia công vật liệu Dụng cụ công nghiệp, Viện Cơ khí, Trường Đại học Bách khoa Hà Nội có góp ý quý báu cho Nghiên cứu sinh trình thực Luận án 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, 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 Nghiên cứu sinh bày tỏ lời cảm ơn tới đồng nghiệp, gia đình, bạn bè động viên, chia sẻ, ủng hộ giúp đỡ Nghiên cứu sinh vượt qua khó khăn để đạt kết nghiên cứu Luận án NCS Bùi Văn Biên Trang ii MỤC LỤC LỜI CẢM ƠN MỤC LỤC DANH MỤC CÁC DANH MỤC CÁC DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT BẢNG HÌNH VẼ TẮT ii iii vi vii ix MỞ ĐẦU CHƯƠNG Tổng quan tái tạo hình học bề mặt sản phẩm khí công nghệ quét 3D 1.1 Giới thiệu chung 1.2 Tổng quan thiết bị quét 3D 1.2.1 Phân loại thiết bị quét 3D 1.2.2 Máy quét 3D laser 1.2.3 Máy quét 3D ánh sáng cấu trúc 1.2.4 Máy quét 3D ToF 1.3 Thiết bị quét Kinect v2 1.3.1 Nguyên lý xác định độ sâu thiết bị ToF 1.3.2 Kỹ thuật ToF sóng liên tục thiết bị ToF 1.3.3 Cấu tạo đặc tính kỹ thuật Kinect v2 1.3.4 Mơ hình cảm biến IR Kinect v2 1.3.5 Thu thập xử lý liệu 1.4 Quá trình xử lý thơng tin hình học 1.4.1 Giới thiệu chung 1.4.2 Xử lý thông tin hình học Geomagic Design X 1.5 Tổng quan nâng cao chất lượng trình tái tạo hình học bề mặt sử dụng Kinect v2 1.5.1 Tình hình nghiên cứu nước 1.5.2 Tình hình nghiên cứu nước 1.6 Kết luận chương CHƯƠNG Nghiên cứu yếu tố ảnh hưởng đến trình số hóa bề mặt 3D chi tiết khí sử dụng Kinect v2 2.1 Quá trình khởi động Kinect v2 2.1.1 Mơ tả thí nghiệm 2.1.2 Phương pháp thực 2.1.3 Kết đánh giá Trang iii 7 10 10 11 13 15 16 16 18 21 23 25 26 26 31 35 35 41 42 43 43 43 44 45 2.2 2.3 2.4 2.5 Ảnh hưởng khoảng cách thiết bị đối tượng 2.2.1 Mơ tả thí nghiệm 2.2.2 Phương pháp thực 2.2.3 Kết đánh giá Ảnh hưởng vị trí điểm ảnh ảnh độ sâu 2.3.1 Mơ tả thí nghiệm 2.3.2 Phương pháp thực 2.3.3 Kết đánh giá Ảnh hưởng phản xạ bề mặt đối tượng quét 2.4.1 Bề mặt phản xạ 2.4.2 Phần mềm KSCAN3D 2.4.3 Thiết lập thực nghiệm 2.4.4 Kết đánh giá Kết luận chương CHƯƠNG Nâng cao chất lượng trình số hóa bề mặt 3D chi tiết khí sử dụng Kinect v2 3.1 Hai phương pháp giảm ảnh hưởng phản xạ bề mặt 3.1.1 Phương pháp tạo lớp phủ chống phản xạ bề mặt 3.1.2 Phương pháp ghép đám mây điểm bù vùng trống liệu 3.2 Nâng cao chất lượng ảnh độ sâu 3.2.1 Loại bỏ nhiễu ảnh độ sâu 3.2.2 Lựa chọn số lượng ảnh độ sâu liên tiếp 3.3 Nâng cao chất lượng tiền xử lý đám mây điểm 3.3.1 Loại bỏ điểm ngoại lai đám mây điểm 3.3.2 Lựa chọn thuật toán đăng ký đám mây điểm 3.4 Kết luận chương CHƯƠNG Quá trình tái tạo hình học bề mặt sản phẩm khí sử dụng Kinect v2 ứng dụng 4.1 Quá trình tái tạo hình học bề mặt sử dụng Kinect v2 4.1.1 Giải thuật tái tạo hình học bề mặt sử dụng Kinect v2 4.1.2 Thực nghiệm tái tạo hình học bề mặt sử dụng Kinect v2 4.1.3 Đánh giá kết 4.2 Ứng dụng thiết kế bề mặt khuôn mũ bảo hiểm 4.2.1 Quá trình tái tạo hình học bề mặt 4.2.2 Quá trình ứng dụng 4.3 Xác định phân bố liệu đám mây điểm xung quanh bề mặt danh nghĩa chi tiết khí 4.3.1 Cơ sở lý thuyết 4.3.2 Phương pháp thực nghiệm 4.3.3 Đánh giá kết 4.4 Kết luận chương Trang iv 50 51 52 53 55 56 57 57 59 60 62 64 66 72 74 74 74 82 86 87 89 90 90 91 97 98 98 98 100 104 106 106 109 110 110 112 113 115 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 ký hiệu STT Ký hiệu Giải nghĩa τd Thời gian mà sóng ánh sáng truyền từ phát đến đối tượng quay trở lại thu d Khoảng cách (độ sâu) từ cảm biến IR thiết bị Kinect v2 tới đối tượng A Biên độ tín hiệu hữu ích B Biên độ ánh sáng ∆ϕ Độ lệch pha tín hiệu hữu ích fmod Tần số sóng điều chế L Giá trị lớn khoảng cách d σd Nhiễu trình xác định khoảng cách d (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í điểm vật lý hệ tọa độ máy ảnh 12 p(u.v) Vị trí điểm ảnh hệ tọa độ ảnh đơn vị pixel 13 f Tiêu cự cảm biến IR 14 MAD Độ lệch tuyệt đối trung vị 15 dkN N Khoảng cách trung bình k lân cận gần 16 P Đám mây điểm 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 X 21 RP CA Giá trị trung bình phân bố liệu đám mây điểm xác định theo phương pháp PCA Trang vi Danh mục chữ viết tắt STT Viết tắt Tiếng Anh Tiếng Việt CAD Computer Aided Design Thiết kế có hỗ trợ máy tính CAM Computer Aided Manu- Sản xuất có hỗ trợ máy facturing tính 3D Three Dimensional CMM Coordinates Machine RE Reverse Engineering Kỹ thuật ngược ToF Time-of-Flight Thời gian truyền sóng SLAM Simultaneous Localiza- Bản đồ hóa định vị đồng tion And Mapping thời IR Infra-Red Hồng ngoại ICP Iterative Closest Points Các điểm lặp gần 10 2D Two Dimensional Hai chiều 11 NURBS Non-uniform rational B- Mặt đường B-spline hữu spline tỉ không đồng 12 CNC Computer Control 13 PCA Principal Analysis Ba chiều Measuring Máy đo tọa độ Numerical Điều khiển số máy tính Component Phân tích thành phần 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 Bảng 1.2 Một số máy quét 3D ánh sáng cấu trúc thương mại Bảng 1.3 Một số máy quét ToF thương mại Bảng 1.4 Các thông số kỹ thuật Kinect v2 (chỉnh sửa theo nguồn: [25]) Bảng 1.5 Các tham số nội máy ảnh độ sâu hệ số méo hướng kính Kinect v2 13 14 16 22 25 Bảng 4.1 Giá trị trung bình phân bố liệu đám mây điểm xung quanh bề mặt danh nghĩa đo Kinect v2 114 Trang viii 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 y = 212; tg = zeros (11 ,11); camCoords = k2 m a p D e p t hPo ints2Cam era ([ x y ]) ; p0 ( i) = camCoords (3) ; for m =251:261 for n = 207:217 camCoords = k2 m a p D e p t hPoint s2Camera ([ m n ]) ; tg (m -250 ,n -206) = camCoords (3) ; end end pc ( i) = mean2 ( tg ) ; sigma ( i) = std2 ( tg ); pt ( i) = round ( toc ( tt ) ,0); i= i +1; catch break ; end elseif ( round ( toc ( tt ) ,0) > 7200) break ; end end pause (1) end % Dong doi tuong Kinect k2 delete; close all Phụ lục 2.2: Chương trình máy tính phục vụ khảo sát ảnh hưởng khoảng cách máy ảnh đối tượng đo % Chuong trinh thu nhan du lieu cho thi nghiem khao sat khoang cach % tu may anh Kinect v2 addpath( ' Mex ' ); clear all close all % Nhan thong tin hinh anh tu Kinect v2 k2 = Kin2 ( ' color ' , ' depth ' ) ; % Kich thuoc anh sau depth_width = 512; depth_height = 424; outOfRange = 4000; Trang P2 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 % Tao ma tran luu tru anh depth = zeros ( depth_height , depth_width , ' uint16 ' ); % Hien thi anh sau h1 = figure; hdepth = imshow( depth ,[0 255]) ; title ( ' Depth Map ' ) % Cac bien trung gian i =1; tt = tic ; pc = zeros (1 ,50) ; sigma = zeros (1 ,50) ; % Chuong trinh thu thap du lieu while true % Cap nhat du lieu tu Kinect v2 validData = k2 updateData ; % Truoc thu thap du lieu , chung ta can chac chan rang % khung hinh hop le duoc thu nhan if validData if ( i 50) break ; end end pause (0.01) end time = round ( toc ( tt ) ,0); % Dong doi tuong Kinect Trang P3 53 k2 delete; 54 close all Phụ lục 2.3: Chương trình máy tính phục vụ khảo sát ảnh hưởng vị trí điểm ảnh ảnh độ sâu % Chuong trinh thu nhan du lieu cho thi nghiem khao sat khoang cach % tu may anh Kinect v2 addpath( ' Mex ' ); clear all close all % Nhan thong tin hinh anh tu Kinect v2 k2 = Kin2 ( ' color ' , ' depth ' ) ; % Kich thuoc anh sau depth_width = 512; depth_height = 424; outOfRange = 4000; 10 % Tao ma tran luu tru anh 11 depth = zeros ( depth_height , depth_width , ' uint16 ' ); 12 % Hien thi anh sau 13 h1 = figure; 14 hdepth = imshow( depth ,[0 255]) ; 15 title ( ' Depth Map ' ) 16 % Cac bien trung gian 17 i =1; 18 tt = tic ; 19 pc = zeros (1 ,50) ; 20 sigma = zeros (1 ,50) ; 21 % Chuong trinh thu thap du lieu 22 while true 23 % Cap nhat du lieu tu Kinect v2 24 validData = k2 updateData ; 25 % Truoc 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) break ; end end pause (0.01) end time = round ( toc ( tt ) ,0); % Dong doi tuong Kinect k2 delete; 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 liệu theo dịch chuyển tịnh tiến % Chuong trinh may tinh thuc nghiem phuong phap ghep dam may diem bu vung % du lieu theo dich chuyen tinh tien clear all close all % Gan dam may diem tham chieu pc = pcread( ' ply ' ) ; roi =[ -70 ,60; -30 ,100;1245 ,1255]; indices= findPointsInROI (pc , roi ) ; pcA = select(pc , indices) ; 10 % Gan dam may diem dich chuyen 11 pc = pcread( ' 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; Trang P5 17 18 19 20 21 22 23 24 - sin (0) cos (0) 0; 0 0; 120 0 1]; tform = affine3d( A ); % Thuc hien bien doi he truc toa mpc = pctransform ( pc6 , tform ) ; % Hop nhat hai dam may diem 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 liệu theo dịch chuyển quay % Chuong trinh may tinh thuc nghiem phuong phap ghep dam may diem bu vung % du lieu theo dich chuyen quay clear all close all % Nhap du lieu numfiles =36; for n = 1: numfiles myfilename = sprintf( ' % d ply ' , n ) ; % Gan dam may diem tham chieu 10 if (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; 23 - sin ( -(n -1) * pi /18) cos ( -(n -1) * pi /18) 0; 24 0 0; 25 0 1]; 26 tform = affine3d( A ); 27 % Thuc hien bien doi he truc toa 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 để lọc nhiễu ảnh độ sâu function output = MAD_Filter (X ) global madRatioThreshold ; try % Gan gia tri mac dinh b =1.4826; output = 0; % Lay gia tri trung vi cua du lieu medianValue = median( X) ; % Lay gia tri trung vi tuyet doi 10 absoluteDeviation = abs (X (:) medianValue ) ; 11 % Tinh gia tri 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 21 22 23 24 25 26 end % Gan anh sau loc diem ngoai lai ; output = itIsAnOutlier ; catch ME % Hien thi Loi neu co errorMessage = sprintf( ' Error in MAD_Filter () :\ n\ nError Message :\ n %s ' , ME message) ; fprintf (1 , ' % s \n ' , errorMessage ); Trang P7 27 28 end return; Phụ lục 3.4: Chương trình máy tính phục vụ khảo sát ảnh hưởng số lượng ảnh độ sâu liên tiếp % Chuong trinh may tinh thuc nghiem xac dinh so luong anh sau hop ly clear all close all format long % Lay thong tin tu Kinect depthDevice = imaq VideoDevice ( ' kinect ' ,2) ; % Kich thuoc anh sau depth_width = 512; depth_height = 424; outOfRange = 1500; % Khoi tao may anh 10 step ( depthDevice ) ; 11 % Thu thap N anh sau 12 % Tu -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 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 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 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; pc = pcfromkinect ( depthDevice , depthImage14 ); roi =[ -0.040 ,0.030; -0.010 ,0.060;1.152 ,1.157]; indices = findPointsInROI (pc , roi ) ; pcA = select(pc , indices) ; ztb (4) = mean ( pcA Location (: ,3) ); sigma (4) = std ( pcA Location (: ,3) ); num_points (4) = max ( size ( pcA Location )) ; 80 81 82 83 84 85 86 87 end 88 % Tu 41 -50 89 for i = 41:50 90 if (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 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 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 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 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 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 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 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 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 % Chuong trinh thu nhan dam may diem bang Kinect v2 clear all close all format long % Lay thong tin tu Kinect colorDevice = imaq VideoDevice ( ' kinect ' ,1) ; depthDevice = imaq VideoDevice ( ' kinect ' ,2) ; % Kich thuoc anh sau depth_width = 512; depth_height = 424; outOfRange = 1500; % Khoi tao may anh step ( colorDevice ) ; step ( depthDevice ) ; % Bien trung gian N = 50; madRatioThreshold = 1.4826; % Thu thap N anh sau for i = 1: N if (i < 2) depthImage = step ( depthDevice ); elseif ( i > 1) tg = depthImage ; depthImage = step ( depthDevice ); depthImage = tg + depthImage ; end end % Loc nhieu anh sau depthImage = MAD_Filter ( depthImage ); % Tinh anh sau trung binh depthImage = depthImage / size ( depthImage ); % Xac dinh dam may diem colorImage = step ( colorDevice ) ; pc = pcfromkinect ( depthDevice , depthImage , colorImage ) ; pc = pcdenoise ( pc , ' NumNeighbors ' ,8 , ' Threshold ' ,0.5); pc = pcdownsample ( pc , ' gridAverage ' ,0.5) ; % Truy xuat dam may diem pcwrite(pc , ' tru ' , ' PLYFormat ' , ' binary ' ); release( colorDevice ) ; 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ố liệu đám mây điểm xung quanh bề mặt danh nghĩa chi tiết khí % Chuong trinh may tinh xac dinh nham be mat bang Kinect v2 clear all close all format long % Lay thong tin tu Kinect depthDevice = imaq VideoDevice ( ' kinect ' ,2) ; % Kich thuoc anh sau depth_width = 512; depth_height = 424; outOfRange = 1500; % 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 sau 26 depthImage = MAD_Filter ( depthImage ) ; 27 % Tinh anh 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 34 roi =[ -20 ,18.1; -87.7 , -75;1248 ,1250]; 35 indices= findPointsInROI ( pc , roi ); 36 pcA = select( pc , indices) ; 37 % Xac dinh phan chinh Trang P15 38 39 40 41 42 43 44 45 46 47 48 49 50 end X= pcA Location ; [ coeff , score ] = pca (X ) ; % Xac dinh nham be mat mpxy = coeff (: ,1:2); pt = coeff (: ,3) ; [n , p] = size ( X ); tbX = mean (X ,1) ; Xfit = repmat( tbX ,n ,1) + score (: ,1:2)* coeff (: ,1:2) '; residuals = X - Xfit ; ss = abs (( X - repmat( tbX ,n ,1) ) * pt ); tongss= sum ( ss ); R_PCA ( i) = tongss/ n; Trang P16 ... Quá trình tái tạo hình học bề mặt sản phẩm khí sử dụng Kinect v2 ứng dụng 4.1 Quá trình tái tạo hình học bề mặt sử dụng Kinect v2 4.1.1 Giải thuật tái tạo hình học bề mặt sử dụng Kinect v2 4.1.2... nhằm nâng cao chất lượng q trình tái tạo hình học bề mặt sản phẩm khí công nghệ quét 3D sử dụng thiết bị Kinect v2 Trang • Đã ứng dụng để tái tạo hình học bề mặt chi tiết mũ bảo hiểm bề mặt tự... ĐÀ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Ệ QT 3D SỬ DỤNG THIẾT BỊ KINECT V2 Ngành: Kỹ thuật Cơ