1. Trang chủ
  2. » Giáo Dục - Đào Tạo

luận án tiến sĩ 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

208 38 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 208
Dung lượng 2,34 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.150 53 2.2.151 54 2.2.1535 end 2.2.1536 pause(0.01) 2.2.1537 end 2.2.1538 time = round(toc (tt) ,0) ; 2.2.1539 % Dong doi tuong Kinect 2.2.1540 k2.delete; 2.2.152 2.2.1541 close all 2.2.153 Phụ lục 2.3: Chương trình máy tính phục vụ khảo 2.2.1542 2.2.154 sát ảnh hưởng vị trí điểm ảnh ảnh độ sâu 2.2.155 2.2.1543 % Chuong trinh thu nhan du lieu cho thi nghiem 2.2.156 khao 2.2.157 sat khoang cach 2.2.1544 % tu may anh Kinect v2 2.2.1545 addpath('Mex'); 2.2.158 2.2.1546 clear all 2.2.159 2.2.1547 close all 2.2.1548 % Nhan thong tin hinh anh tu Kinect v2 2.2.160 2.2.1549 k2 = Kin2('color','depth'); 2.2.1550 % Kich thuoc anh sau 2.2.1551 depth_width = 512; depth_height = 424; 2.2.161 outũfRange = 10 4000; 2.2.162 2.2.1552 % Tao ma tran luu tru anh 11 2.2.1553 depth = zeros(depth_height,depth_width,'uint16'); 2.2.163 2.2.1554 % Hien thi anh sau 12 2.2.1555 h1 = f igure; 2.2.164 2.2.1556 hdepth = imshow(depth,[0 255]); 13 2.2.1557 title('Depth Map') 2.2.165 2.2.1558 % Cac bien trung gian 14 2.2.1559 i = 1; 2.2.166 2.2.1560 tt=tic; 15 2.2.1561 pc = zeros(1,50); 2.2.167 2.2.1562 sigma = zeros(1,50); 16 2.2.1563 % Chuong trinh thu thap du lieu 2.2.168 17 2.2.1564 while true 2.2.169 2.2.1565 % Cap nhat du lieu tu Kinect v2 2.2.1566 validData = k2.updateData; 18 2.2.170 2.2.1567 % Truoc thu thap du lieu, chung ta can chac 19 chan rang 2.2.171 2.2.1568 % khung hinh hop le duoc thu nhan 20 2.2.172 Trang 21 P194 2.2.173 22 2.2.186 35 2.2.187 36 2.2.1569 if validData 2.2.188 2.2.1570 if (i 50) 47 2.2.1588 break; 2.2.199 2.2.1589 end 48 2.2.1590 end 2.2.200 2.2.1591 pause(0.01) 49 2.2.1592 end 2.2.201 2.2.1593 time=round(toc(tt) ,0) ; 50 2.2.1594 % Dong doi tuong Kinect 2.2.202 2.2.1595 k2.delete; 51 2.2.1596 close all 2.2.203 52 2.2.204 Phụ lục 3.1: Chương trình máy tính phục vụ thực 53 2.2.1597 nghiệm 2.2.205 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.1598 % Chuong trinh may tinh thuc nghiem phuong phap ghep dam may diem bu vung 2.2.1599 % t rong du lieu theo dich chuyen tinh tien clear all 2.2.206 2.2.1600 close all 2.2.1601 % Gan dam may diem tham chieu 2.2.1602 pc = pcread('5.ply ' ) ; 2.2.207 2.2.208 2.2.209 Trang P195 2.2.222 17 2.2.223 18 2.2.224 2.2.1603 19 2.2.1604 2.2.225 2.2.1605 20 2.2.1606 2.2.226 21 2.2.1607 2.2.1608 2.2.227 22 2.2.1609 2.2.1610 2.2.228 23 2.2.1611 2.2.1612 2.2.229 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.1613 -sin(0) cos(0) 0; 2.2.1614 0010; 120 0 1]; 2.2.1615 tform = affine3d(A); 2.2.1616 % Thuc hien bien doi he truc toa mpc = pctransform(pc6,tform); 2.2.1617 % Hop nhat hai dam may diem pcA=pcmerge(mpc,pcA,0.0001); 2.2.230 2.2.1618 Phụ lục 3.2: Chương trình máy tính phục vụ thực 2.2.231 nghiệm phương pháp ghép đám mây điểm bù vùng trống liệu 2.2.232 theo dịch chuyển quay 2.2.233 2.2.1619 % Chuong trinh may tinh thuc nghiem phuong phap 2.2.234 ghep dam may diem bu vung 2.2.235 2.2.1620 % du lieu theo dich chuyen quay 2.2.1621 clear all 2.2.236 close all 2.2.1622 % Nhap du lieu 2.2.237 2.2.1623 numf iles=36; 2.2.1624 for n = 1:numfiles 2.2.238 2.2.1625 myfilename = sprintf( '%d.ply ' , n) ; 2.2.1626 % Gan dam may diem tham chieu 2.2.239 2.2.1627 if (n 1) % Gan dam may diem dich chuyen 13 pcTC = pcA ; 2.2.243 2.2.1631 pc=pcread(myfilename); 14 2.2.244 Trang 15 P196 2.2.245 16 2.2.1632 roi = [-100,90;-60,130;1065,1075] ; indices=findPointsInROI(pc,roi); pcA=select(pc,indices); 2.2.1633 % Xac dinh ma tran quay va ma tran tinh tien 2.2.1634 A = [cos(-(n-1)*pi/18) sin(-(n1)*pi/18) 0; 2.2.1635 2.2.1636 -sin(-(n-1)*pi/18) cos(-(n1)*pi/18) 0; 2.2.1637 2.2.1638 0010; 2.2.1639 000 1]; 2.2.1640 tform = affine3d(A); Trang P197 2.2.257 28 2.2.258 29 2.2.259 2.2.1641 % Thuc hien bien doi he truc toa dompc 30 = pctransform(pcA,tform); 2.2.260 % Hop nhat hai dam may diem 31 pcA=pcmerge(mpc,pcTC,0.0001); 2.2.261 2.2.1642 end 32 end 2.2.1643 Phụ lục 3.3: Chương trình để lọc nhiễu ảnh độ sâu 2.2.262 2.2.1644 function output = MAD_Filter(X) 2.2.263 global madRatioThreshold; try 2.2.264 2.2.1645 % Gan gia tri mac dinh b = 1.4826; 2.2.265 2.2.1646 output = 0; 2.2.1647 % Lay gia tri trung vi cua du 2.2.266 lieu 2.2.267 medianValue = median(X); 2.2.1648 % Lay gia tri trung vi tuyet 2.2.268 doi absoluteDeviation = abs(X(:) 2.2.269 medianValue) ; 2.2.1649 % Tinh gia tri lech tuyet 2.2.270 doi trung vi 2.2.271 2.2.1650 MAD_Value = 10 b*median(absoluteDeviation ); 2.2.272 2.2.1651 % Nhan dang diem ngoai lai 11 centralValue = abs(X(:) - medianValue) ; 2.2.1652 2.2.273 2.2.1653 % Loai bo anh chua diem ngoai 12 lai if centralValue > madRatioThreshold * 2.2.274 MAD_Value 13 2.2.1654 itIsAnOutlier = true; 2.2.275 else 14 itIsAnOutlier = false; 2.2.276 15 2.2.277 16 2.2.278 17 2.2.279 2.2.1655 end 2.2.1656 % Gan anh sau loc diem ngoai lai ; Trang P198 2.2.288 27 2.2.289 28 2.2.290 output = itIsAnOutlier; 2.2.1657 catch ME 2.2.1658 % Hien thi Loi neu co errorMessage = sprintf('Error in MAD_Filter():\n\nError Message:\n%s' , ME message) ; 2.2.1659 fprintf(1, ' %s\n' , errorMessage); 2.2.1660 end return; 2.2.291 2.2.292 2.2.1661 Phụ lục 3.4: Chương trình máy tính phục vụ khảo 2.2.293 sát ảnh 2.2.294 hưởng số lượng ảnh độ sâu liên tiếp 2.2.295 2.2.1662 % Chuong trinh may tinh thuc nghiem xac dinh so 2.2.296 luong anh sau hop ly 2.2.297 clear all close all format long 2.2.298 2.2.1663 % Lay thong tin tu Kinect depthDevice = imaq.VideoDevice('kinect',2); 2.2.299 % Kich thuoc anh sau 10 depth_width = 512; depth_height = 424; outũfRange = 2.2.300 1500; 11 2.2.1664 % Khoi tao may anh 2.2.301 step(depthDevice); 12 2.2.1665 % Thu thap N anh sau 2.2.302 2.2.1666 % Tu 1-10 13 tt=tic; 2.2.303 for i = 1:10 14 if (i < 2) 2.2.304 depthlmage = step(depthDevice); 15 2.2.305 2.2.1667 elseif (i > 1) tg = depthlmage; 16 depthlmage = step(depthDevice); 2.2.306 depthlmage = tg+depthlmage; 17 2.2.307 2.2.1668 end 2.2.1669 depthImage1 = depthlmage/10; 18 2.2.1670 pc = 2.2.308 pcfromkinect(depthDevice,depthImage1); 19 roi=[-0.040,0.030;-0.010,0.060;1.152,1.157]; 2.2.309 indices=findPointsInRũI(pc,roi); 20 2.2.310 Trang 21 P199 2.2.311 22 2.2.325 36 2.2.326 37 2.2.327 2.2.1671 pcA=select(pc,indices); 38 2.2.1672 ztb(1) = mean(pcA.Location(:,3)); 2.2.328 sigma(1) =std(pcA.Location(:,3)); 39 num_points(1) = max(size(pcA.Location)); 2.2.329 40 end 2.2.1673 %Tu 11 -20 2.2.330 41 2.2.1674 for i = 11:20 2.2.331 2.2.1675 if (i 11) 43 2.2.333 2.2.1678 tg = depthlmage; 44 2.2.1679 depthlmage = step(depthDevice); 2.2.334 2.2.1680 depthlmage = tg+depthlmage; 45 2.2.1681 end 2.2.335 2.2.1682 depthImage2 = depthlmage/10; 46 2.2.1683 depthImage12 = (depthlmagel + 2.2.336 depthImage2)/2; 47 2.2.1684 pc = 2.2.337 pcfromkinect(depthDevice,depthImage12); 48 2.2.1685 roi=[-0.040,0.030;2.2.338 0.010,0.060;1.152,1.157]; 49 2.2.1686 indices=findPointsInROI(pc,roi); 2.2.339 2.2.1687 pcA=select(pc,indices); 50 2.2.340 2.2.1688 ztb(2) = mean(pcA.Location(:,3)); 51 2.2.1689 sigma(2) =std(pcA.Location(:,3)); 2.2.341 2.2.1690 num_points (2) = 52 max(size(pcA.Location)); 2.2.342 2.2.1691 end 53 2.2.1692 % Tu 21-30 2.2.343 2.2.1693 for i = 21:30 54 2.2.1694 if (i 21) 2.2.345 2.2.1697 tg = depthImage; 56 2.2.1698 depthImage = step(depthDevice); 2.2.346 2.2.1699 depthImage = tg+depthImage; 57 2.2.347 2.2.1700 end 2.2.1701 depthImage3 = depthImage/10; 58 2.2.1702 depthImage13 = (depthImage1 + 2.2.348 depthImage2 + 59 depthImage3)/3; 2.2.349 2.2.1703 pc = 60 pcfromkinect(depthDevice,depthImage13); 2.2.1704 roi=[-0.040,0.030;2.2.350 61 Trang 2.2.351 P200 62 2.2.352 2.2.368 79 2.2.369 80 0.010,0.060;1.152,1.157]; 2.2.370 2.2.1705 indices=findPointsInROI(pc,roi); 81 2.2.1706 pcA=select(pc,indices); 2.2.371 2.2.1707 ztb(3) = mean(pcA.Location(:,3)); 82 2.2.1708 sigma(3) =std(pcA.Location(:,3)); 2.2.372 2.2.1709 num_points(3) = 83 max(size(pcA.Location)); 2.2.373 end 84 2.2.1710 2.2.1711 % Tu 31-40 2.2.374 for i = 31 :40 85 2.2.1712 2.2.1713 if (i 31) 87 2.2.1716 tg = depthImage; 2.2.377 2.2.1717 depthImage = step(depthDevice); 88 2.2.1718 depthImage = tg+depthImage; 2.2.378 2.2.1719 end 89 2.2.1720 depthImage4 = depthImage/10; 2.2.379 2.2.1721 depthImage14 = (depthlmagel + 90 depthImage2 + 2.2.380 depthImage3 + depthImage4)/4; 91 2.2.1722 pc = 2.2.381 pcfromkinect(depthDevice,depthImage14); 92 2.2.1723 roi=[-0.040,0.030;2.2.382 0.010,0.060;1.152,1.157]; 93 indices=findPointsInROI(pc,roi); 2.2.383 2.2.1724 pcA=select(pc,indices); 94 2.2.1725 ztb(4) = mean(pcA.Location(:,3)); 2.2.384 2.2.1726 sigma(4) =std(pcA.Location(:,3)); 95 2.2.1727 num_points(4) = 2.2.385 max(size(pcA.Location)); 96 2.2.1728 end 2.2.386 % Tu 41-50 97 2.2.1729 2.2.1730 for i = 41:50 2.2.387 2.2.1731 if (i 41) 2.2.388 2.2.1734 tg = depthImage; 99 2.2.1735 depthImage = step(depthDevice); 2.2.389 2.2.1736 depthImage = tg+depthImage; 100 2.2.390 2.2.1737 end 101 2.2.1738 depthImage5 = depthImage/10; 2.2.391 2.2.1739 depthImage15 = (depthImage1 + 102 depthImage2 + 2.2.392 depthImage3 + depthImage4 + depthImage5)/5; 103 2.2.1740 pc = 2.2.393 Trang 104 P201 2.2.394 105 2.2.409 120 2.2.410 121 2.2.411 pcfromkinect(depthDevice,depthImage15); 122 2.2.1741 roi=[-0.040,0.030;2.2.412 0.010,0.060;1.152,1.157] ; 123 indices=findPointsInROI(pc,roi); 2.2.413 2.2.1742 pcA=select(pc,indices); 124 2.2.1743 ztb(5) = mean(pcA.Location(:,3)); 2.2.414 2.2.1744 sigma(5) =std(pcA.Location(:,3)); 125 2.2.1745 num_points(5) = 2.2.415 max(size(pcA.Location)); 126 2.2.1746 end 2.2.416 % Tu 51 - 60 127 2.2.1747 2.2.1748 for i = 51 :60 2.2.417 2.2.1749 if (i 51) 129 2.2.1752 tg = depthImage; 2.2.419 2.2.1753 depthImage = step(depthDevice); 130 2.2.420 2.2.1754 depthImage = tg+depthImage; 131 2.2.1755 end 2.2.421 2.2.1756 depthImage6 = depthImage/10; 132 2.2.1757 depthImage16 = (depthImage1 + 2.2.422 depthImage2 + 133 depthImage3 + depthImage4 + depthImage5 + 2.2.423 depthImage6)/6; 134 2.2.1758 pc = 2.2.424 pcfromkinect(depthDevice,depthImage16); 135 2.2.1759 roi=[-0.040,0.030;2.2.425 0.010,0.060;1.152,1.157]; 136 2.2.1760 indices=findPointsInROI(pc,roi ); 2.2.1761 pcA=select(pc,indices); 2.2.1762 ztb(6) = mean(pcA.Location(:,3)); 2.2.426 2.2.1763 sigma(6) =std(pcA.Location(:,3)); 137 2.2.1764 num_points (6) = 2.2.427 max(size(pcA.Location)); 138 2.2.1765 end 2.2.428 2.2.1766 % Tu 61 - 70 139 2.2.1767 for i = 61:70 2.2.429 2.2.1768 if (i 61) 141 2.2.1771 tg = depthImage; 2.2.431 2.2.1772 depthImage = step(depthDevice); 142 2.2.1773 depthImage = tg+depthImage; 2.2.432 2.2.1774 end 143 2.2.1775 depthImage7 = depthImage/10; 2.2.433 2.2.1776 depthImage17 = (depthImage1 + 144 2.2.434 Trang 145 P202 2.2.435 146 2.2.450 161 2.2.451 162 2.2.452 depthImage2 + 163 depthImage3 + depthImage4 + depthImage5 + 2.2.453 depthImage6 + depthImage7)/7; 164 2.2.1777 pc = 2.2.454 pcfromkinect(depthDevice,depthImage17); 165 2.2.1778 roi=[-0.040,0.030;2.2.455 0.010,0.060;1.152,1.157]; 166 indices=findPointsInROI(pc,roi); 2.2.456 2.2.1779 pcA=select(pc,indices); 167 2.2.1780 ztb(7) = mean(pcA.Location(:,3)); 2.2.457 2.2.1781 sigma(7) =std(pcA.Location(:,3)); 168 2.2.1782 num_points (7) = 2.2.458 max(size(pcA.Location)); 169 2.2.1783 end 2.2.459 % Tu 71 - 80 170 2.2.1784 2.2.1785 for i = 71:80 2.2.460 2.2.1786 if (i 71) 2.2.462 2.2.1789 tg = depthImage; 173 2.2.1790 depthImage = step(depthDevice); 2.2.463 2.2.1791 depthImage = tg+depthImage; 174 2.2.1792 end 2.2.1793 depthImage8 = depthImage/10; 2.2.1794 depthImage18 = (depthImage1 + depthImage2 + 2.2.464 depthImage3 + depthImage4 + depthImage5 + 175 depthImage6 + depthImage7 + depthImage8)/8; 2.2.465 2.2.1795 pc = 176 pcfromkinect(depthDevice,depthImage18); 2.2.466 2.2.1796 roi=[-0.040,0.030;177 0.010,0.060;1.152,1.157]; 2.2.467 indices=findPointsInROI(pc,roi); 178 2.2.1797 pcA=select(pc,indices); 2.2.468 2.2.1798 ztb(8) = mean(pcA.Location(:,3)); 179 2.2.1799 sigma(8) =std(pcA.Location(: ,3)); 2.2.469 2.2.1800 num_points(8) = 180 max(size(pcA.Location)); 2.2.470 2.2.1801 end 181 2.2.1802 % Tu 81 - 90 2.2.471 for i = 81:90 182 2.2.1803 2.2.1804 if (i 81) 2.2.473 2.2.1807 tg = depthImage; 184 2.2.1808 depthImage = step(depthDevice); 2.2.474 185 Trang 2.2.475 P203 186 2.2.476 2.2.490 201 2.2.491 202 2.2.492 2.2.1809 depthImage = tg+depthImage; 203 2.2.1810 end 2.2.493 2.2.1811 depthImage9 = depthImage/10; 204 2.2.1812 depthImage19 = (depthImage1 + 2.2.494 depthImage2 + 205 depthImage3 + depthImage4 + depthImage5 + 2.2.495 depthImage6 + depthImage7 + depthImage8 + 206 depthImage9)/9; 2.2.496 2.2.1813 pc = 207 pcfromkinect(depthDevice,depthImage19); 2.2.497 roi=[-0.040,0.030;-0.010,0.060;1.152,1.157]; 208 indices=findPointsInROI(pc,roi); 2.2.498 2.2.1814 pcA=select(pc,indices); 209 2.2.1815 ztb(9) = mean(pcA.Location(:,3)); 2.2.499 2.2.1816 sigma(9) =std(pcA.Location(:,3)); 210 2.2.1817 num_points(9) = 2.2.500 max(size(pcA.Location)); 211 2.2.501 2.2.1818 end 212 2.2.1819 % Tu 91 - 100 2.2.502 2.2.1820 for i = 91:100 213 2.2.1821 if (i 91) 214 2.2.1824 tg = depthImage; 2.2.504 2.2.1825 depthImage = step(depthDevice); 215 2.2.1826 depthImage = tg+depthImage; 2.2.505 2.2.1827 end 216 2.2.1828 depthImage10 = depthImage/10; 2.2.506 2.2.1829 depthImage10tb = 217 (depthImage6+depthImage7+ 2.2.507 depthImage8+depthImage9+depthImage10)/5; 218 2.2.1830 depthImage100 = (depthImage15 + 2.2.508 depthImage10tb 219 )/2; 2.2.509 2.2.1831 pc = 220 pcfromkinect(depthDevice,depthImage100); 2.2.510 roi=[-0.040,0.030;-0.010,0.060;1.152,1.157]; 221 indices=findPointsInROI(pc,roi); 2.2.511 2.2.1832 pcA=select(pc,indices); 222 2.2.1833 ztb(10) = mean(pcA.Location(:,3)); 2.2.512 2.2.1834 sigma(10) =std(pcA.Location(:,3)); 223 2.2.1835 num_points(10) = 2.2.513 max(size(pcA.Location)); 224 end 2.2.514 225 % Tu 101 - 150 for i = 101:150 2.2.515 226 Trang 2.2.516 P204 227 2.2.517 2.2.533 2.2.534 2.2.535 if (i 101) tg = depthImage; 2.2.537 depthImage = step(depthDevice); depthImage = tg+depthImage; 2.2.538 end = depthImage/50; 2.2.539 depthImage50 depthImage150 = (depthImage15 + depthImage10tb 2.2.540 + depthImage50)/3; 2.2.1837 pc = pcfromkinect(depthDevice,depthImage150); 2.2.541 roi=[-0.040,0.030;-0.010,0.060;1.152,1.157]; indices=findPointsInROI(pc,roi); pcA=select(pc,indices); 2.2.542 2.2.1838 ztb(11) = mean(pcA.Location(:,3)); 10 sigma(11) =std(pcA.Location(:,3)); 2.2.543 11 num_points(11) = max(size(pcA.Location)); end 2.2.544 12 % Tu 151 - 200 2.2.545 for i = 151: 200 13 if (i 151) 2.2.547 tg = depthImage; 15 depthImage = step(depthDevice); 2.2.548 depthImage = tg+depthImage; 16 end 2.2.549 depthImage60 = depthImage/50; 17 depthImage200 = (depthImage15 + depthImage10tb 2.2.550 + depthImage50 + depthImage60)/4; 18 2.2.1840 pc = 2.2.551 pcfromkinect(depthDevice,depthImage200); 19 roi=[-0.040,0.030;-0.010,0.060;1.152,1.157]; 2.2.552 indices=findPointsInROI(pc,roi); 20 pcA=select(pc,indices); 2.2.553 2.2.1841 ztb(12) = mean(pcA.Location(:,3)); 21 sigma(12) =std(pcA.Location(:,3)); 2.2.554 22 num_points(12) = max(size(pcA.Location)); end 2.2.555 23 time = round (toc (tt) ,0) ; 2.2.1842 release(colorDevice); 2.2.556 24 2.2.1843 release(depthDevice); 2.2.557 2.2.1844 Phụ lục 4.1: Chương trình máy tính để số hóa bề 25 mặt chi 2.2.558 26 Trang 2.2.559 P205 27 2.2.560 2.2.571 2.2.572 tiết 2.2.573 2.2.1845 % Chuong trinh thu nhan dam may diem bang Kinect 2.2.574 v2 2.2.575 clear all close all 2.2.576 format long 2.2.1846 % Lay thong tin tu Kinect 2.2.577 2.2.1847 colorDevice = imaq.VideoDevice('kinect',1); depthDevice = imaq.VideoDevice('kinect',2); 2.2.578 % Kich thuoc anh sau 2.2.1848 depth_width = 512; depth_height = 424; outũfRange = 2.2.579 1500; 2.2.1849 % Khoi tao may anh 2.2.580 step (colorDevice); 10 step(depthDevice); 2.2.581 2.2.1850 % Bien trung gian 11 2.2.1851 N = 50; 2.2.582 2.2.1852 madRatioThreshold = 1.4826; 12 2.2.1853 % Thu thap N anh sau 2.2.583 13 for i = 1:N 2.2.584 2.2.1854 if (i < 2) 2.2.1855 depthlmage = step(depthDevice); 14 2.2.585 2.2.1856 elseif (i > 1) tg = depthlmage; 15 depthlmage = step(depthDevice); 2.2.586 depthlmage = tg+depthlmage; 16 2.2.587 2.2.1857 end 17 2.2.1858 end 2.2.588 2.2.1859 % Loc nhieu anh sau 18 depthlmage = MAD_Filter(depthlmage); 2.2.589 2.2.1860 % Tinh anh sau t rung binh 19 depthlmage = depthlmage/size(depthlmage); 2.2.590 2.2.1861 % Xac dinh dam may diem 20 colorlmage = step(colorDevice); 2.2.591 2.2.1862 pc = 21 pcfromkinect(depthDevice,depthlmage,colorlmage); 2.2.592 pc = pcdenoise(pc, 'NumNeighbors' ,8, 'Threshold' ,0.5); 22 2.2.1863 pc = pcdownsample(pc, 'gridAverage' ,0.5); 2.2.593 2.2.1864 % Truy xuat dam may diem 23 2.2.1865 pcwrite(pc, ' tru ' , 'PLYFormat' , 'binary') ; 2.2.594 24 2.2.1866 release(colorDevice); release(depthDevice); 2.2.595 25 2.2.1867 2.2.596 26 2.2.597 27 Phụ lục 4.2: Chương trình máy tính phục vụ thực Trang P206 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.1868 % Chuong trinh may tinh xac dinh nham be mat bang Kinect v2 clear all close all format long 2.2.1869 % 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.1870 % Khoi tao may anh step(depthDevice); % Bien trung gian N = 50; 2.2.1871 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.1872 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.1873 % Xac dinh phan chinh Trang P207 2.2.1874 X=pcA.Location; 2.2.1875 [coeff,score] = pca(X); 2.2.1876 % Xac dinh nham be mat mpxy = coeff(:,1:2); 2.2.1877 pt = coeff (: ,3); 2.2.1878 [n,p] = size(X); 2.2.1879 tbX = mean(X,1); 2.2.1880 Xfit = repmat(tbX,n,1) + score(: , 1:2)*coeff(: ,1:2) ; 2.2.1881 ; 2.2.1882 residuals = X - Xfit; 2.2.1883 ss = abs((X - repmat(tbX,n,1))*pt); 2.2.1884 tongss= sum(ss); 2.2.1885 R_PCA(i)=tongss/n; 2.2.1886 38 2.2.1887 39 2.2.1888 40 2.2.1889 41 2.2.1890 42 2.2.1891 43 2.2.1892 44 2.2.1893 45 2.2.1894 2.2.1895 2.2.1896 2.2.1897 2.2.1898 2.2.1899 46 47 48 49 50 end Trang P208 ... nhằm nâng cao chất lượng trình tái tạo hình học bề mặt sản phẩm khí cơng nghệ qt 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ề mặt. .. á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ệ qt 3D sử dụng thiết bị Kinectv2, thiết bị rẻ tiền chế tạo theo kỹ thuật ToF Chứng minh thực nghiệm trình tái tạo. .. ĐÀ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 Ngành: Kỹ thuật Cơ

Ngày đăng: 04/02/2021, 07:43

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w