Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 205 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
205
Dung lượng
2,31 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 CHAT 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 CHAT 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í Ma số: 9520103' LUẬN ÁN TIẾN SĨ KỸ THUẬT CƠ KHÍ NGƯỜI HƯỚNG GS TSKH BànhDẪN TiếnKHOA Long HỌC: 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 tơi 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 Bùi Văn Biên Trang 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è ln độ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 MỤC LỤC 2.1.1 2.1 Ảnh hưởng khoảng cách thiết bị đối tượng 50 2.2.1 2.2.2 2.2.3 2.2.4 DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIET TẮT Danh mục ký hiệu 2.2.5 S 2.2.6 Ký TT 2.2.15 A 2.2.7 Giải nghĩa 2.2.10 Thời gian mà sóng ánh sáng truyền từ phát đến đối tượng quay trở lại thu 2.2.13 Khoảng cách (độ sâu) từ cảm biến IR thiết bị Kinect v2 tới đối tượng 2.2.16 Biên độ tín hiệu hữu ích 2.2.18 B 2.2.19 Biên độ ánh sáng 2.2.21 A^ 2.2.22 Độ lệch pha tín hiệu hữu ích 2.2.24 fmod 2.2.27 L 2.2.25 Tần số sóng điều chế 2.2.28 Giá trị lớn khoảng cách d 2.2.30 ơd 2.2.33 ự,u, 2.2.31 Nhiễu trình xác định khoảng cách d hiệu 2.2.8 2.2.9 Td 2.2.11 2.2.12 d 2.2.14 2.2.17 2.2.20 2.2.23 2.2.26 2.2.29 2.2.32 2.2.35 10 2.2.38 11 2.2.41 12 2.2.44 13 2.2.47 14 2.2.50 15 2.2.53 16 2.2.56 17 2.2.59 18 2.2.62 19 2.2.65 20 2.2.68 21 2.2.71 v) 2.2.36 (C, , x y,z) 2.2.39 p 2.2.34 Hệ tọa độ ảnh đơn vị pixel 2.2.37 Hệ tọa độ máy ảnh (x,y,z) 2.2.42 p(u 2.2.40 Vị trí điểm vật lý hệ tọa độ máy ảnh 2.2.43 Vị trí điểm ảnh hệ tọa độ ảnh đơn vị v) pixel 2.2.45 f 2.2.48 MA D 2.2.46 Tiêu cự cảm biến IR 2.2.49 Độ lệch tuyệt đối trung vị 2.2.51 dkNN 2.2.52 Khoảng cách trung bình k lân cận gần 2.2.54 P 2.2.57 M 2.2.55 Đám mây điểm liệu 2.2.58 Đám mây điểm mơ hình 2.2.60 T 2.2.61 Ma trận tịnh tiến 2.2.63 R 2.2.64 Ma trận quay 2.2.66 cov( 2.2.67 Ma trận hiệp phương sai X X) 2.2.69 RPC 2.2.70 Giá trị trung bình phân bố liệu đám mây điểm A xác định theo phương pháp PCA 2.2.72 Danh mục chữ viết tắt 2.2.73 2.2.74 Viết STT 2.2.77 2.2.81 tắt 2.2.78 CA D 2.2.82 CA M 2.2.85 2.2.86 3D 2.2.89 2.2.90 CM M 2.2.94 2.2.95 RE 2.2.98 2.2.99 ToF 2.2.102 2.2.103 SLAM 2.2.106 2.2.107 IR 2.2.110 2.2.111 ICP 2.2.114 2.2.115 10 2D 2.2.118 2.2.119 11 NURBS 2.2.122 2.2.123 12 CNC 2.2.127 2.2.128 13 PCA 2.2.75 Tiếng Anh 2.2.79 Computer Aided Design 2.2.83 Computer Aided Manufacturing 2.2.87 Three Dimensional 2.2.91 Coordinates Measuring 2.2.92 Machine 2.2.96 Reverse Engineering 2.2.100 Time-ofFlight 2.2.104 Simultaneous Localization And Mapping 2.2.108 Infra-Red 2.2.112 Iterative Closest Points 2.2.116 Two Dimensional 2.2.120 Non-uniform rational Bspline 2.2.124 Computer Numerical 2.2.125 Control 2.2.129 Principal Comp onent 2.2.130 Analysis 2.2.76 Tiếng Việt 2.2.80 Thiết kế có hỗ trợ máy tính 2.2.84 Sản xuất có hỗ trợ máy tính 2.2.88 Ba chiều 2.2.93 Máy đo tọa độ 2.2.97 Kỹ thuật ngược 2.2.101 Thời gian truyền sóng 2.2.105 Bản đồ hóa định vị đồng thời 2.2.109 Hồng ngoại 2.2.113 2.2.117 Các điểm lặp gần Hai chiều 2.2.121 Mặt đường B-spline hữu tỉ không đồng 2.2.126 Điều khiển số máy tính 2.2.131 phần Phân tích thành 2.2.132 DANH MỤC CÁC BẢNG 2.2.133 2.2.134 2.2.135 DANH MỤC CÁC HÌNH VẼ 2.2.136 2.2.137 2.2.138 Hình 1.19 Đám mây điểm bề mặt líp xe đạp thể điểm ngoại lai thưa thớt (hình chữ nhật màu tím), điểm ngoại lai dạng cụm lập (hình chữ nhật màu xanh) điểm ngoại lai dạng cụm khơng lập (hình chữ nhật màu đỏ) (nguồn: [57]) 39 2.2.139 Hình 2.1 Cấu hình thí nghiệm q trình khởi động Kinect v2 44 2.2.140 Hình 2.2 Kết phép đo độ sâu vị trí cách tường 1,5m 46 2.2.153 53 2.2.154 54 2.2.1537 end 2.2.1538 pause(0.01) 2.2.1539 end 2.2.1540 time = round(toc (tt) ,0) ; 2.2.1541 % Dong doi tuong Kinect 2.2.1542 k2.delete; 2.2.155 2.2.1543 close all 2.2.156 Phụ lục 2.3: Chương trình máy tính phục vụ khảo 2.2.1544 2.2.157 sát ảnh hưởng vị trí điểm ảnh ảnh độ sâu 2.2.158 2.2.1545 % Chuong trinh thu nhan du lieu cho thi nghiem 2.2.159 khao 2.2.160 sat khoang cach 2.2.1546 % tu may anh Kinect v2 2.2.1547 addpath('Mex'); 2.2.161 2.2.1548 clear all 2.2.162 2.2.1549 close all 2.2.1550 % Nhan thong tin hinh anh tu Kinect v2 2.2.163 2.2.1551 k2 = Kin2('color','depth'); 2.2.1552 % Kich thuoc anh sau 2.2.1553 depth_width = 512; depth_height = 424; 2.2.164 outũfRange = 10 4000; 2.2.165 2.2.1554 % Tao ma tran luu tru anh 11 2.2.1555 depth = zeros(depth_height,depth_width,'uint16'); 2.2.166 2.2.1556 % Hien thi anh sau 12 2.2.1557 h1 = f igure; 2.2.167 2.2.1558 hdepth = imshow(depth,[0 255]); 13 2.2.1559 title('Depth Map') 2.2.168 2.2.1560 % Cac bien trung gian 14 2.2.1561 i = 1; 2.2.169 2.2.1562 tt=tic; 15 2.2.1563 pc = zeros(1,50); 2.2.170 2.2.1564 sigma = zeros(1,50); 16 2.2.1565 % Chuong trinh thu thap du lieu 2.2.171 17 2.2.1566 while true 2.2.172 2.2.1567 % Cap nhat du lieu tu Kinect v2 2.2.1568 validData = k2.updateData; 18 2.2.173 2.2.1569 % Truoc thu thap du lieu, chung ta can chac 19 chan rang 2.2.174 2.2.1570 % khung hinh hop le duoc thu nhan 20 2.2.175 Trang 21 P191 2.2.176 22 2.2.189 35 2.2.190 36 2.2.1571 if validData 2.2.191 2.2.1572 if (i 50) 47 2.2.1590 break; 2.2.202 2.2.1591 end 48 2.2.1592 end 2.2.203 2.2.1593 pause(0.01) 49 2.2.1594 end 2.2.204 2.2.1595 time=round(toc(tt) ,0) ; 50 2.2.1596 % Dong doi tuong Kinect 2.2.205 2.2.1597 k2.delete; 51 2.2.1598 close all 2.2.206 52 2.2.207 Phụ lục 3.1: Chương trình máy tính phục vụ thực 53 2.2.1599 nghiệm 2.2.208 54 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 2.2.1600 % Chuong trinh may tinh thuc nghiem phuong phap ghep dam may diem bu vung 2.2.1601 % t rong du lieu theo dich chuyen tinh tien clear all 2.2.209 2.2.1602 close all 2.2.1603 % Gan dam may diem tham chieu 2.2.1604 pc = pcread('5.ply ' ) ; 2.2.210 2.2.211 2.2.212 Trang P192 2.2.225 17 2.2.226 18 2.2.227 2.2.1605 19 2.2.1606 2.2.228 2.2.1607 20 2.2.1608 2.2.229 21 2.2.1609 2.2.1610 2.2.230 22 2.2.1611 2.2.1612 2.2.231 23 2.2.1613 2.2.1614 2.2.232 24 roi=[-70,60;-30,100;1245,1255]; indices=findPointsInROI(pc,roi); pcA=select(pc,indices); % Gan dam may diem dich chuyen pc=pcread('6.ply'); roi=[-190,-60;-30,100;1245,1255]; indices=findPointsInROI(pc,roi); pc6=select(pc,indices); % Xac dinh ma tran quay va ma tran tinh tien A = [cos(0) sin(0) 0; 2.2.1615 -sin(0) cos(0) 0; 2.2.1616 0010; 120 0 1]; 2.2.1617 tform = affine3d(A); 2.2.1618 % Thuc hien bien doi he truc toa mpc = pctransform(pc6,tform); 2.2.1619 % Hop nhat hai dam may diem pcA=pcmerge(mpc,pcA,0.0001); 2.2.233 2.2.1620 Phụ lục 3.2: Chương trình máy tính phục vụ thực 2.2.234 nghiệm phương pháp ghép đám mây điểm bù vùng trống liệu 2.2.235 theo dịch chuyển quay 2.2.236 2.2.1621 % Chuong trinh may tinh thuc nghiem phuong phap 2.2.237 ghep dam may diem bu vung 2.2.238 2.2.1622 % du lieu theo dich chuyen quay 2.2.1623 clear all 2.2.239 close all 2.2.1624 % Nhap du lieu 2.2.240 2.2.1625 numf iles=36; 2.2.1626 for n = 1:numfiles 2.2.241 2.2.1627 myfilename = sprintf( '%d.ply ' , n) ; 2.2.1628 % Gan dam may diem tham chieu 2.2.242 2.2.1629 if (n 1) % Gan dam may diem dich chuyen 13 pcTC = pcA ; 2.2.246 2.2.1633 pc=pcread(myfilename); 14 2.2.247 Trang 15 P193 2.2.248 16 2.2.1634 roi = [-100,90;-60,130;1065,1075] ; indices=findPointsInROI(pc,roi); pcA=select(pc,indices); 2.2.1635 % Xac dinh ma tran quay va ma tran tinh tien 2.2.1636 A = [cos(-(n-1)*pi/18) sin(-(n1)*pi/18) 0; 2.2.1637 2.2.1638 -sin(-(n-1)*pi/18) cos(-(n1)*pi/18) 0; 2.2.1639 2.2.1640 0010; 2.2.1641 000 1]; 2.2.1642 tform = affine3d(A); Trang P194 2.2.260 28 2.2.261 29 2.2.262 2.2.1643 % Thuc hien bien doi he truc toa dompc 30 = pctransform(pcA,tform); 2.2.263 % Hop nhat hai dam may diem 31 pcA=pcmerge(mpc,pcTC,0.0001); 2.2.264 2.2.1644 end 32 end 2.2.1645 Phụ lục 3.3: Chương trình để lọc nhiễu ảnh độ sâu 2.2.265 2.2.1646 function output = MAD_Filter(X) 2.2.266 global madRatioThreshold; try 2.2.267 2.2.1647 % Gan gia tri mac dinh b = 1.4826; 2.2.268 2.2.1648 output = 0; 2.2.1649 % Lay gia tri trung vi cua du 2.2.269 lieu 2.2.270 medianValue = median(X); 2.2.1650 % Lay gia tri trung vi tuyet 2.2.271 doi absoluteDeviation = abs(X(:) 2.2.272 medianValue) ; 2.2.1651 % Tinh gia tri lech tuyet 2.2.273 doi trung vi 2.2.274 2.2.1652 MAD_Value = 10 b*median(absoluteDeviation ); 2.2.275 2.2.1653 % Nhan dang diem ngoai lai 11 centralValue = abs(X(:) - medianValue) ; 2.2.1654 2.2.276 2.2.1655 % Loai bo anh chua diem ngoai 12 lai if centralValue > madRatioThreshold * 2.2.277 MAD_Value 13 2.2.1656 itIsAnOutlier = true; 2.2.278 else 14 itIsAnOutlier = false; 2.2.279 15 2.2.280 16 2.2.281 17 2.2.282 2.2.1657 end 2.2.1658 % Gan anh sau loc diem ngoai lai ; Trang P195 2.2.291 27 2.2.292 28 2.2.293 output = itIsAnOutlier; 2.2.1659 catch ME 2.2.1660 % Hien thi Loi neu co errorMessage = sprintf('Error in MAD_Filter():\n\nError Message:\n%s' , ME message) ; 2.2.1661 fprintf(1, ' %s\n' , errorMessage); 2.2.1662 end return; 2.2.294 2.2.295 2.2.1663 Phụ lục 3.4: Chương trình máy tính phục vụ khảo 2.2.296 sát ảnh 2.2.297 hưởng số lượng ảnh độ sâu liên tiếp 2.2.298 2.2.1664 % Chuong trinh may tinh thuc nghiem xac dinh so 2.2.299 luong anh sau hop ly 2.2.300 clear all close all format long 2.2.301 2.2.1665 % Lay thong tin tu Kinect depthDevice = imaq.VideoDevice('kinect',2); 2.2.302 % Kich thuoc anh sau 10 depth_width = 512; depth_height = 424; outũfRange = 2.2.303 1500; 11 2.2.1666 % Khoi tao may anh 2.2.304 step(depthDevice); 12 2.2.1667 % Thu thap N anh sau 2.2.305 2.2.1668 % Tu 1-10 13 tt=tic; 2.2.306 for i = 1:10 14 if (i < 2) 2.2.307 depthlmage = step(depthDevice); 15 2.2.308 2.2.1669 elseif (i > 1) tg = depthlmage; 16 depthlmage = step(depthDevice); 2.2.309 depthlmage = tg+depthlmage; 17 2.2.310 2.2.1670 end 2.2.1671 depthImage1 = depthlmage/10; 18 2.2.1672 pc = 2.2.311 pcfromkinect(depthDevice,depthImage1); 19 roi=[-0.040,0.030;-0.010,0.060;1.152,1.157]; 2.2.312 indices=findPointsInRũI(pc,roi); 20 2.2.313 Trang 21 P196 2.2.314 22 2.2.328 36 2.2.329 37 2.2.330 2.2.1673 pcA=select(pc,indices); 38 2.2.1674 ztb(1) = mean(pcA.Location(:,3)); 2.2.331 sigma(1) =std(pcA.Location(:,3)); 39 num_points(1) = max(size(pcA.Location)); 2.2.332 40 end 2.2.1675 %Tu 11 -20 2.2.333 41 2.2.1676 for i = 11:20 2.2.334 2.2.1677 if (i 11) 43 2.2.336 2.2.1680 tg = depthlmage; 44 2.2.1681 depthlmage = step(depthDevice); 2.2.337 2.2.1682 depthlmage = tg+depthlmage; 45 2.2.1683 end 2.2.338 2.2.1684 depthImage2 = depthlmage/10; 46 2.2.1685 depthImage12 = (depthlmagel + 2.2.339 depthImage2)/2; 47 2.2.1686 pc = 2.2.340 pcfromkinect(depthDevice,depthImage12); 48 2.2.1687 roi=[-0.040,0.030;2.2.341 0.010,0.060;1.152,1.157]; 49 2.2.1688 indices=findPointsInROI(pc,roi); 2.2.342 2.2.1689 pcA=select(pc,indices); 50 2.2.343 2.2.1690 ztb(2) = mean(pcA.Location(:,3)); 51 2.2.1691 sigma(2) =std(pcA.Location(:,3)); 2.2.344 2.2.1692 num_points (2) = 52 max(size(pcA.Location)); 2.2.345 2.2.1693 end 53 2.2.1694 % Tu 21-30 2.2.346 2.2.1695 for i = 21:30 54 2.2.1696 if (i 21) 2.2.348 2.2.1699 tg = depthImage; 56 2.2.1700 depthImage = step(depthDevice); 2.2.349 2.2.1701 depthImage = tg+depthImage; 57 2.2.350 2.2.1702 end 2.2.1703 depthImage3 = depthImage/10; 58 2.2.1704 depthImage13 = (depthImage1 + 2.2.351 depthImage2 + 59 depthImage3)/3; 2.2.352 2.2.1705 pc = 60 pcfromkinect(depthDevice,depthImage13); 2.2.1706 roi=[-0.040,0.030;2.2.353 61 Trang 2.2.354 P197 62 2.2.355 2.2.371 79 2.2.372 80 0.010,0.060;1.152,1.157]; 2.2.373 2.2.1707 indices=findPointsInROI(pc,roi); 81 2.2.1708 pcA=select(pc,indices); 2.2.374 2.2.1709 ztb(3) = mean(pcA.Location(:,3)); 82 2.2.1710 sigma(3) =std(pcA.Location(:,3)); 2.2.375 2.2.1711 num_points(3) = 83 max(size(pcA.Location)); 2.2.376 end 84 2.2.1712 2.2.1713 % Tu 31-40 2.2.377 for i = 31 :40 85 2.2.1714 2.2.1715 if (i 31) 87 2.2.1718 tg = depthImage; 2.2.380 2.2.1719 depthImage = step(depthDevice); 88 2.2.1720 depthImage = tg+depthImage; 2.2.381 2.2.1721 end 89 2.2.1722 depthImage4 = depthImage/10; 2.2.382 2.2.1723 depthImage14 = (depthlmagel + 90 depthImage2 + 2.2.383 depthImage3 + depthImage4)/4; 91 2.2.1724 pc = 2.2.384 pcfromkinect(depthDevice,depthImage14); 92 2.2.1725 roi=[-0.040,0.030;2.2.385 0.010,0.060;1.152,1.157]; 93 indices=findPointsInROI(pc,roi); 2.2.386 2.2.1726 pcA=select(pc,indices); 94 2.2.1727 ztb(4) = mean(pcA.Location(:,3)); 2.2.387 2.2.1728 sigma(4) =std(pcA.Location(:,3)); 95 2.2.1729 num_points(4) = 2.2.388 max(size(pcA.Location)); 96 2.2.1730 end 2.2.389 % Tu 41-50 97 2.2.1731 2.2.1732 for i = 41:50 2.2.390 2.2.1733 if (i 41) 2.2.391 2.2.1736 tg = depthImage; 99 2.2.1737 depthImage = step(depthDevice); 2.2.392 2.2.1738 depthImage = tg+depthImage; 100 2.2.393 2.2.1739 end 101 2.2.1740 depthImage5 = depthImage/10; 2.2.394 2.2.1741 depthImage15 = (depthImage1 + 102 depthImage2 + 2.2.395 depthImage3 + depthImage4 + depthImage5)/5; 103 2.2.1742 pc = 2.2.396 Trang 104 P198 2.2.397 105 2.2.412 120 2.2.413 121 2.2.414 pcfromkinect(depthDevice,depthImage15); 122 2.2.1743 roi=[-0.040,0.030;2.2.415 0.010,0.060;1.152,1.157] ; 123 indices=findPointsInROI(pc,roi); 2.2.416 2.2.1744 pcA=select(pc,indices); 124 2.2.1745 ztb(5) = mean(pcA.Location(:,3)); 2.2.417 2.2.1746 sigma(5) =std(pcA.Location(:,3)); 125 2.2.1747 num_points(5) = 2.2.418 max(size(pcA.Location)); 126 2.2.1748 end 2.2.419 % Tu 51 - 60 127 2.2.1749 2.2.1750 for i = 51 :60 2.2.420 2.2.1751 if (i 51) 129 2.2.1754 tg = depthImage; 2.2.422 2.2.1755 depthImage = step(depthDevice); 130 2.2.423 2.2.1756 depthImage = tg+depthImage; 131 2.2.1757 end 2.2.424 2.2.1758 depthImage6 = depthImage/10; 132 2.2.1759 depthImage16 = (depthImage1 + 2.2.425 depthImage2 + 133 depthImage3 + depthImage4 + depthImage5 + 2.2.426 depthImage6)/6; 134 2.2.1760 pc = 2.2.427 pcfromkinect(depthDevice,depthImage16); 135 2.2.1761 roi=[-0.040,0.030;2.2.428 0.010,0.060;1.152,1.157]; 136 2.2.1762 indices=findPointsInROI(pc,roi ); 2.2.1763 pcA=select(pc,indices); 2.2.1764 ztb(6) = mean(pcA.Location(:,3)); 2.2.429 2.2.1765 sigma(6) =std(pcA.Location(:,3)); 137 2.2.1766 num_points (6) = 2.2.430 max(size(pcA.Location)); 138 2.2.1767 end 2.2.431 2.2.1768 % Tu 61 - 70 139 2.2.1769 for i = 61:70 2.2.432 2.2.1770 if (i 61) 141 2.2.1773 tg = depthImage; 2.2.434 2.2.1774 depthImage = step(depthDevice); 142 2.2.1775 depthImage = tg+depthImage; 2.2.435 2.2.1776 end 143 2.2.1777 depthImage7 = depthImage/10; 2.2.436 2.2.1778 depthImage17 = (depthImage1 + 144 2.2.437 Trang 145 P199 2.2.438 146 2.2.453 161 2.2.454 162 2.2.455 depthImage2 + 163 depthImage3 + depthImage4 + depthImage5 + 2.2.456 depthImage6 + depthImage7)/7; 164 2.2.1779 pc = 2.2.457 pcfromkinect(depthDevice,depthImage17); 165 2.2.1780 roi=[-0.040,0.030;2.2.458 0.010,0.060;1.152,1.157]; 166 indices=findPointsInROI(pc,roi); 2.2.459 2.2.1781 pcA=select(pc,indices); 167 2.2.1782 ztb(7) = mean(pcA.Location(:,3)); 2.2.460 2.2.1783 sigma(7) =std(pcA.Location(:,3)); 168 2.2.1784 num_points (7) = 2.2.461 max(size(pcA.Location)); 169 2.2.1785 end 2.2.462 % Tu 71 - 80 170 2.2.1786 2.2.1787 for i = 71:80 2.2.463 2.2.1788 if (i 71) 2.2.465 2.2.1791 tg = depthImage; 173 2.2.1792 depthImage = step(depthDevice); 2.2.466 2.2.1793 depthImage = tg+depthImage; 174 2.2.1794 end 2.2.1795 depthImage8 = depthImage/10; 2.2.1796 depthImage18 = (depthImage1 + depthImage2 + 2.2.467 depthImage3 + depthImage4 + depthImage5 + 175 depthImage6 + depthImage7 + depthImage8)/8; 2.2.468 2.2.1797 pc = 176 pcfromkinect(depthDevice,depthImage18); 2.2.469 2.2.1798 roi=[-0.040,0.030;177 0.010,0.060;1.152,1.157]; 2.2.470 indices=findPointsInROI(pc,roi); 178 2.2.1799 pcA=select(pc,indices); 2.2.471 2.2.1800 ztb(8) = mean(pcA.Location(:,3)); 179 2.2.1801 sigma(8) =std(pcA.Location(: ,3)); 2.2.472 2.2.1802 num_points(8) = 180 max(size(pcA.Location)); 2.2.473 2.2.1803 end 181 2.2.1804 % Tu 81 - 90 2.2.474 for i = 81:90 182 2.2.1805 2.2.1806 if (i 81) 2.2.476 2.2.1809 tg = depthImage; 184 2.2.1810 depthImage = step(depthDevice); 2.2.477 185 Trang 2.2.478 P200 186 2.2.479 2.2.493 201 2.2.494 202 2.2.495 2.2.1811 depthImage = tg+depthImage; 203 2.2.1812 end 2.2.496 2.2.1813 depthImage9 = depthImage/10; 204 2.2.1814 depthImage19 = (depthImage1 + 2.2.497 depthImage2 + 205 depthImage3 + depthImage4 + depthImage5 + 2.2.498 depthImage6 + depthImage7 + depthImage8 + 206 depthImage9)/9; 2.2.499 2.2.1815 pc = 207 pcfromkinect(depthDevice,depthImage19); 2.2.500 roi=[-0.040,0.030;-0.010,0.060;1.152,1.157]; 208 indices=findPointsInROI(pc,roi); 2.2.501 2.2.1816 pcA=select(pc,indices); 209 2.2.1817 ztb(9) = mean(pcA.Location(:,3)); 2.2.502 2.2.1818 sigma(9) =std(pcA.Location(:,3)); 210 2.2.1819 num_points(9) = 2.2.503 max(size(pcA.Location)); 211 2.2.504 2.2.1820 end 212 2.2.1821 % Tu 91 - 100 2.2.505 2.2.1822 for i = 91:100 213 2.2.1823 if (i 91) 214 2.2.1826 tg = depthImage; 2.2.507 2.2.1827 depthImage = step(depthDevice); 215 2.2.1828 depthImage = tg+depthImage; 2.2.508 2.2.1829 end 216 2.2.1830 depthImage10 = depthImage/10; 2.2.509 2.2.1831 depthImage10tb = 217 (depthImage6+depthImage7+ 2.2.510 depthImage8+depthImage9+depthImage10)/5; 218 2.2.1832 depthImage100 = (depthImage15 + 2.2.511 depthImage10tb 219 )/2; 2.2.512 2.2.1833 pc = 220 pcfromkinect(depthDevice,depthImage100); 2.2.513 roi=[-0.040,0.030;-0.010,0.060;1.152,1.157]; 221 indices=findPointsInROI(pc,roi); 2.2.514 2.2.1834 pcA=select(pc,indices); 222 2.2.1835 ztb(10) = mean(pcA.Location(:,3)); 2.2.515 2.2.1836 sigma(10) =std(pcA.Location(:,3)); 223 2.2.1837 num_points(10) = 2.2.516 max(size(pcA.Location)); 224 end 2.2.517 225 % Tu 101 - 150 for i = 101:150 2.2.518 226 Trang 2.2.519 P201 227 2.2.520 2.2.536 2.2.537 2.2.538 if (i 101) tg = depthImage; 2.2.540 depthImage = step(depthDevice); depthImage = tg+depthImage; 2.2.541 end = depthImage/50; 2.2.542 depthImage50 depthImage150 = (depthImage15 + depthImage10tb 2.2.543 + depthImage50)/3; 2.2.1839 pc = pcfromkinect(depthDevice,depthImage150); 2.2.544 roi=[-0.040,0.030;-0.010,0.060;1.152,1.157]; indices=findPointsInROI(pc,roi); pcA=select(pc,indices); 2.2.545 2.2.1840 ztb(11) = mean(pcA.Location(:,3)); 10 sigma(11) =std(pcA.Location(:,3)); 2.2.546 11 num_points(11) = max(size(pcA.Location)); end 2.2.547 12 % Tu 151 - 200 2.2.548 for i = 151: 200 13 if (i 151) 2.2.550 tg = depthImage; 15 depthImage = step(depthDevice); 2.2.551 depthImage = tg+depthImage; 16 end 2.2.552 depthImage60 = depthImage/50; 17 depthImage200 = (depthImage15 + depthImage10tb 2.2.553 + depthImage50 + depthImage60)/4; 18 2.2.1842 pc = 2.2.554 pcfromkinect(depthDevice,depthImage200); 19 roi=[-0.040,0.030;-0.010,0.060;1.152,1.157]; 2.2.555 indices=findPointsInROI(pc,roi); 20 pcA=select(pc,indices); 2.2.556 2.2.1843 ztb(12) = mean(pcA.Location(:,3)); 21 sigma(12) =std(pcA.Location(:,3)); 2.2.557 22 num_points(12) = max(size(pcA.Location)); end 2.2.558 23 time = round (toc (tt) ,0) ; 2.2.1844 release(colorDevice); 2.2.559 24 2.2.1845 release(depthDevice); 2.2.560 2.2.1846 Phụ lục 4.1: Chương trình máy tính để số hóa bề 25 mặt chi 2.2.561 26 Trang 2.2.562 P202 27 2.2.563 2.2.574 2.2.575 tiết 2.2.576 2.2.1847 % Chuong trinh thu nhan dam may diem bang Kinect 2.2.577 v2 2.2.578 clear all close all 2.2.579 format long 2.2.1848 % Lay thong tin tu Kinect 2.2.580 2.2.1849 colorDevice = imaq.VideoDevice('kinect',1); depthDevice = imaq.VideoDevice('kinect',2); 2.2.581 % Kich thuoc anh sau 2.2.1850 depth_width = 512; depth_height = 424; outũfRange = 2.2.582 1500; 2.2.1851 % Khoi tao may anh 2.2.583 step (colorDevice); 10 step(depthDevice); 2.2.584 2.2.1852 % Bien trung gian 11 2.2.1853 N = 50; 2.2.585 2.2.1854 madRatioThreshold = 1.4826; 12 2.2.1855 % Thu thap N anh sau 2.2.586 13 for i = 1:N 2.2.587 2.2.1856 if (i < 2) 2.2.1857 depthlmage = step(depthDevice); 14 2.2.588 2.2.1858 elseif (i > 1) tg = depthlmage; 15 depthlmage = step(depthDevice); 2.2.589 depthlmage = tg+depthlmage; 16 2.2.590 2.2.1859 end 17 2.2.1860 end 2.2.591 2.2.1861 % Loc nhieu anh sau 18 depthlmage = MAD_Filter(depthlmage); 2.2.592 2.2.1862 % Tinh anh sau t rung binh 19 depthlmage = depthlmage/size(depthlmage); 2.2.593 2.2.1863 % Xac dinh dam may diem 20 colorlmage = step(colorDevice); 2.2.594 2.2.1864 pc = 21 pcfromkinect(depthDevice,depthlmage,colorlmage); 2.2.595 pc = pcdenoise(pc, 'NumNeighbors' ,8, 'Threshold' ,0.5); 22 2.2.1865 pc = pcdownsample(pc, 'gridAverage' ,0.5); 2.2.596 2.2.1866 % Truy xuat dam may diem 23 2.2.1867 pcwrite(pc, ' tru ' , 'PLYFormat' , 'binary') ; 2.2.597 24 2.2.1868 release(colorDevice); release(depthDevice); 2.2.598 25 2.2.1869 2.2.599 26 2.2.600 27 Phụ lục 4.2: Chương trình máy tính phục vụ thực Trang P203 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í 2.2.1870 % Chuong trinh may tinh xac dinh nham be mat bang Kinect v2 clear all close all format long 2.2.1871 % Lay thong tin tu Kinect depthDevice = imaq.VideoDevice('kinect',2); % Kich thuoc anh sau depth_width = 512; depth_height = 424; outũfRange = 1500; 2.2.1872 % Khoi tao may anh step(depthDevice); % Bien trung gian N = 50; 2.2.1873 madRatioThreshold = 1.4826; numf iles = 50; for i = 1:numfiles for i = 1:N if (i < 2) depthlmage = step(depthDevice); elseif (i > 1) tg = depthlmage; depthlmage = step(depthDevice); depthlmage = tg+depthlmage; end end % Loc nhieu anh sau depthlmage = MAD_Filter(depthlmage); % Tinh anh sau t rung binh depthlmage = depthImage/size(depthImage); % Xac dinh dam may diem pc = pcfromkinect(depthDevice,depthlmage); pc = pcdenoise(pc,'NumNeighbors',8,'Threshold' ,0.5) ; 2.2.1874 pc = pcdownsample(pc, 'gridAverage' ,0.5); % Xac dinh vung roi=[-20,18.1;-87.7, -75;1248,1250]; indices=findPointsInRũI(pc,roi); pcA=select(pc,indices); 2.2.1875 % Xac dinh phan chinh Trang P204 2.2.1876 X=pcA.Location; 2.2.1877 [coeff,score] = pca(X); 2.2.1878 % Xac dinh nham be mat mpxy = coeff(:,1:2); 2.2.1879 pt = coeff (: ,3); 2.2.1880 [n,p] = size(X); 2.2.1881 tbX = mean(X,1); 2.2.1882 Xfit = repmat(tbX,n,1) + score(: , 1:2)*coeff(: ,1:2) ; 2.2.1883 ; 2.2.1884 residuals = X - Xfit; 2.2.1885 ss = abs((X - repmat(tbX,n,1))*pt); 2.2.1886 tongss= sum(ss); 2.2.1887 R_PCA(i)=tongss/n; 2.2.1888 38 2.2.1889 39 2.2.1890 40 2.2.1891 41 2.2.1892 42 2.2.1893 43 2.2.1894 44 2.2.1895 45 2.2.1896 2.2.1897 2.2.1898 2.2.1899 2.2.1900 2.2.1901 46 47 48 49 50 end Trang P205 ... 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 18 2.2.167 • Đã ứng dụng để tái tạo hình học bề mặt chi tiết mũ bảo hiểm bề. .. Trang 15 2.2.159 Mục đích 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 sản phẩm khí cơng nghệ quét 3D sử dụng thiết bị Kinectv2, thiết bị rẻ tiền chế tạo theo kỹ thuật ToF Chứng... tái tạo hình học bề mặt tự sản xuất khí dân dụng sử dụng Kinect v2 điều kiện sản xuất thử nghiệm Cụ thể nghiên cứu phương pháp làm tăng chất lượng trình tái tạo hình học bề mặt sản phẩm khí cơng