สารบัญ:

สแกนเนอร์ DIY 3D ตามโครงสร้างแสงและการมองเห็นสเตอริโอในภาษา Python: 6 ขั้นตอน (พร้อมรูปภาพ)
สแกนเนอร์ DIY 3D ตามโครงสร้างแสงและการมองเห็นสเตอริโอในภาษา Python: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: สแกนเนอร์ DIY 3D ตามโครงสร้างแสงและการมองเห็นสเตอริโอในภาษา Python: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: สแกนเนอร์ DIY 3D ตามโครงสร้างแสงและการมองเห็นสเตอริโอในภาษา Python: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ทำไมเเม่ไม่บอกกันเลย😂 #แป้งวิงค์ไวท์ 2024, มิถุนายน
Anonim
สแกนเนอร์ DIY 3D ตามโครงสร้างแสงและการมองเห็นสเตอริโอในภาษา Python
สแกนเนอร์ DIY 3D ตามโครงสร้างแสงและการมองเห็นสเตอริโอในภาษา Python
สแกนเนอร์ DIY 3D ตามโครงสร้างแสงและการมองเห็นสเตอริโอในภาษา Python
สแกนเนอร์ DIY 3D ตามโครงสร้างแสงและการมองเห็นสเตอริโอในภาษา Python

สแกนเนอร์ 3 มิตินี้ผลิตขึ้นโดยใช้รายการทั่วไปที่มีต้นทุนต่ำ เช่น โปรเจ็กเตอร์วิดีโอและเว็บแคม เครื่องสแกน 3 มิติแบบแสงที่มีโครงสร้างเป็นอุปกรณ์สแกน 3 มิติสำหรับวัดรูปร่างสามมิติของวัตถุโดยใช้รูปแบบแสงที่ฉายและระบบกล้อง ซอฟต์แวร์ได้รับการพัฒนาโดยใช้แสงที่มีโครงสร้างและการมองเห็นแบบสเตอริโอด้วยภาษาไพ ธ อน

การฉายแสงแถบแคบลงบนพื้นผิวรูปทรงสามมิติทำให้เกิดแนวแสงที่บิดเบี้ยวจากมุมมองอื่นที่ไม่ใช่ของโปรเจ็กเตอร์ และสามารถนำมาใช้สำหรับการสร้างรูปทรงพื้นผิวขึ้นใหม่ทางเรขาคณิตที่แน่นอน แถบแสงแนวนอนและแนวตั้งถูกฉายบนพื้นผิวของวัตถุแล้วจับภาพด้วยเว็บแคมสองตัว

ขั้นตอนที่ 1: บทนำ

บทนำ
บทนำ
บทนำ
บทนำ

อุปกรณ์รับ 3D อัตโนมัติ (มักเรียกว่าเครื่องสแกน 3D) ช่วยให้สามารถสร้างแบบจำลองวัตถุ 3D จริงที่มีความแม่นยำสูงได้ในลักษณะที่คุ้มค่าและตรงเวลา เราได้ทดลองเทคโนโลยีนี้ในการสแกนของเล่นเพื่อพิสูจน์ประสิทธิภาพ ความต้องการเฉพาะคือ: ความแม่นยำปานกลางถึงสูง ใช้งานง่าย ราคาอุปกรณ์สแกนที่ไม่แพง การได้มาซึ่งข้อมูลรูปร่างและสีที่ลงทะเบียนด้วยตนเอง และสุดท้ายคือความปลอดภัยในการปฏิบัติงานสำหรับทั้งผู้ปฏิบัติงานและวัตถุที่สแกน ตามข้อกำหนดเหล่านี้ เราออกแบบเครื่องสแกน 3D ราคาประหยัดโดยใช้แสงที่มีโครงสร้างซึ่งใช้รูปแบบแถบสีเอนกประสงค์ เรานำเสนอสถาปัตยกรรมเครื่องสแกน เทคโนโลยีซอฟต์แวร์ที่นำมาใช้ และผลแรกของการใช้งานในโครงการเกี่ยวกับการได้มาซึ่งของเล่น 3 มิติ

ในการออกแบบเครื่องสแกนต้นทุนต่ำของเรา เราเลือกใช้หน่วยอีซีแอลโดยใช้เครื่องฉายภาพวิดีโอ เหตุผลก็คือความยืดหยุ่นของอุปกรณ์นี้ (ซึ่งทำให้สามารถทดลองรูปแบบแสงแบบใดก็ได้) และความพร้อมใช้งานที่กว้างขวาง เซ็นเซอร์สามารถเป็นได้ทั้งอุปกรณ์ที่กำหนดเอง กล้องถ่ายภาพนิ่งดิจิตอลมาตรฐาน หรือเว็บแคม ต้องรองรับการจับภาพสีคุณภาพสูง (เช่น การรับช่วงไดนามิกสูง) และอาจมีความละเอียดสูง

ขั้นตอนที่ 2: ซอฟต์แวร์

ซอฟต์แวร์
ซอฟต์แวร์

ภาษา Python ใช้สำหรับการเขียนโปรแกรมด้วยเหตุผลสามประการ ประการแรกคือง่ายต่อการเรียนรู้และนำไปใช้ สองภาษาที่เราสามารถใช้ OPENCV สำหรับรูทีนที่เกี่ยวข้องกับรูปภาพ และสามประการเป็นแบบพกพาในระบบปฏิบัติการต่างๆ เพื่อให้คุณสามารถใช้โปรแกรมนี้ใน windows, MAC และ Linux คุณยังสามารถกำหนดค่าซอฟต์แวร์เพื่อใช้กับกล้องชนิดใดก็ได้ (เว็บแคม, SLR หรือกล้องอุตสาหกรรม) หรือโปรเจ็กเตอร์ที่มีความละเอียด 1024X768 ดั้งเดิม ควรใช้กล้องที่มีความละเอียดมากกว่าสองเท่า โดยส่วนตัวฉันทดสอบประสิทธิภาพด้วยการกำหนดค่าที่แตกต่างกันสามแบบ แบบแรกใช้โรงภาพยนตร์เว็บแคมของ Microsoft ขนานกันสองเครื่องและโปรเจ็กเตอร์พกพาขนาดเล็ก อันที่สองใช้กล้องเว็บแคมสำหรับภาพยนตร์ Lifecam สองตัวที่หมุน 15 องศาเข้าหากันและโปรเจ็กเตอร์ Infocus การกำหนดค่าสุดท้ายคือด้วยเว็บแคมของโลจิเทค และโปรเจคเตอร์อินโฟกัส ในการจับภาพจุดเมฆของพื้นผิววัตถุ เราควรดำเนินการตามขั้นตอนห้าขั้นตอน:

1. ฉายภาพรูปแบบสีเทาและถ่ายภาพจากกล้องสองตัว "SL3DS1.projcapt.py"

2. ประมวลผล 42 ภาพของกล้องแต่ละตัวและจับรหัสคะแนน " SL3DS2.procimages.py"

2. การปรับเกณฑ์การเลือกการกำบังสำหรับพื้นที่ที่จะประมวลผล "SL3DS3.adjustthresh.py"

4. ค้นหาและบันทึกจุดที่คล้ายกันในกล้องแต่ละตัว "SL3DS4.calcpxpy.py"

5 คำนวณพิกัด X, Y และ Z ของ point cloud "SL3DS5.calcxyz.py"

ผลลัพธ์เป็นไฟล์ PLY ที่มีข้อมูลพิกัดและสีของจุดบนพื้นผิวของวัตถุ คุณสามารถเปิดไฟล์ PLY ด้วยซอฟต์แวร์ CAD เช่น ผลิตภัณฑ์ Autodesk หรือซอฟต์แวร์โอเพ่นซอร์ส เช่น Meshlab

www.autodesk.com/products/personal-design-a…

ควรติดตั้ง Python 2.7, โมดูล OPENCV และ NUMPY เพื่อเรียกใช้โปรแกรม Python เหล่านี้ ฉันได้พัฒนา GUI สำหรับซอฟต์แวร์นี้ใน TKINTER ซึ่งคุณจะพบในขั้นตอนที่หกด้วยชุดข้อมูลตัวอย่างสองชุด คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้จากเว็บไซต์ต่อไปนี้:

docs.opencv.org/modules/calib3d/doc/camera_…

docs.opencv.org/modules/highgui/doc/reading…

www.3dunderworld.org/software/

arxiv.org/pdf/1406.6595v1.pdf

mesh.brown.edu/byo3d/index.html

www.opticsinfobase.org/aop/fulltext.cfm?uri…

hera.inf-cv.uni-jena.de:6680/pdf/Brauer-Bur…

ขั้นตอนที่ 3: การตั้งค่าฮาร์ดแวร์

การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์

ฮาร์ดแวร์ประกอบด้วย:

1. กล้องเว็บแคมสองตัว (Logitech C920C)

2. โปรเจ็กเตอร์ Infocus LP330

3. ขาตั้งกล้องและโปรเจ็กเตอร์ (ทำจากแผ่นอะคริลิค 3 มม. และตัดไม้ HDF ขนาด 6 มม. ด้วยเครื่องตัดเลเซอร์)

ควรเชื่อมต่อกล้องสองตัวและโปรเจ็กเตอร์เข้ากับคอมพิวเตอร์ที่มีเอาต์พุตวิดีโอสองรายการ เช่น คอมพิวเตอร์โน้ตบุ๊ก และหน้าจอโปรเจ็กเตอร์ควรกำหนดค่าเป็นส่วนขยายสำหรับเดสก์ท็อปของ Windows หลัก คุณสามารถดูรูปภาพของกล้อง โปรเจ็กเตอร์ และขาตั้งได้ที่นี่ ไฟล์รูปวาดพร้อมสำหรับการตัดแนบมาในรูปแบบ SVG

โปรเจ็กเตอร์นี้เป็นรุ่น Infocus LP330 (ความละเอียดดั้งเดิม 1024X768) โดยมีข้อกำหนดดังต่อไปนี้ ความสว่าง:650 Lumens Color Light Output:**คอนทราสต์ (เปิด/ปิดเต็มที่):400:1 Auto Iris:ไม่มีความละเอียดดั้งเดิม:1024x768 อัตราส่วนภาพ:4:3 (XGA) โหมดวิดีโอ:**โหมดข้อมูล:สูงสุด 1024x768 กำลังไฟสูงสุด:200 วัตต์ แรงดันไฟฟ้า:100V - 240V ขนาด(ซม.) (สูง x กว้าง x ลึก):6 x 22 x 25 น้ำหนัก:2.2 กก. อายุหลอดไฟ(เต็มกำลัง): 1, 000 ชั่วโมง ประเภทหลอดไฟ:UHPLกำลังไฟของหลอดไฟ:120 วัตต์ ปริมาณหลอดไฟ:1 ประเภทจอภาพ:DLP 2 ซม. (1) เลนส์ซูมมาตรฐาน:1.25:1 โฟกัส:ระยะการโยนด้วยมือ (ม.): 1.5 - 30.5 ขนาดภาพ(ซม.):76 - 1971

โปรเจ็กเตอร์วิดีโอนี้ใช้เพื่อฉายรูปแบบแสงที่มีโครงสร้างบนวัตถุที่จะสแกน รูปแบบที่มีโครงสร้างประกอบด้วยแถบแสงสีขาวแนวตั้งและแนวนอนที่บันทึกไว้ในไฟล์ข้อมูล และเว็บแคมจะจับแถบที่บิดเบี้ยวเหล่านั้น

ควรใช้กล้องที่สามารถควบคุมซอฟต์แวร์ได้ เนื่องจากคุณจำเป็นต้องปรับโฟกัส ความสว่าง ความละเอียด และคุณภาพของภาพ เป็นไปได้ที่จะใช้กล้อง DSLR กับ SDK ที่แต่ละยี่ห้อจัดเตรียมให้

ประกอบและทดสอบดำเนินการในโคเปนเฮเกน Fablab ด้วยการสนับสนุน

ขั้นตอนที่ 4: ทดลองกับสแกนเนอร์

ทดลองกับสแกนเนอร์
ทดลองกับสแกนเนอร์
ทดลองกับสแกนเนอร์
ทดลองกับสแกนเนอร์
ทดลองกับสแกนเนอร์
ทดลองกับสแกนเนอร์

สำหรับการทดสอบระบบ ได้ใช้ของเล่นปลา และคุณสามารถเห็นภาพที่จับได้ ไฟล์ที่จับภาพทั้งหมดและคลาวด์จุดส่งออกรวมอยู่ในไฟล์แนบ

คุณสามารถเปิดไฟล์ PLY point cloud ด้วย Meshlab:

meshlab.sourceforge.net/

ขั้นตอนที่ 5: ผลการสแกนอื่นๆ

ผลการสแกนอื่นๆ
ผลการสแกนอื่นๆ
ผลการสแกนอื่นๆ
ผลการสแกนอื่นๆ
ผลการสแกนอื่นๆ
ผลการสแกนอื่นๆ
ผลการสแกนอื่นๆ
ผลการสแกนอื่นๆ

คุณสามารถดูการสแกนใบหน้ามนุษย์และการสแกน 3 มิติของผนังได้ที่นี่ มีจุดผิดปกติอยู่เสมอเนื่องจากการสะท้อนหรือผลลัพธ์ของภาพที่ไม่ถูกต้อง

ขั้นตอนที่ 6: GUI สแกนเนอร์ 3 มิติ

GUI สแกนเนอร์ 3 มิติ
GUI สแกนเนอร์ 3 มิติ

สำหรับการทดสอบซอฟต์แวร์สแกน 3 มิติในขั้นตอนนี้ ฉันเพิ่มชุดข้อมูลสองชุด ชุดแรกคือการสแกนปลา และอีกชุดหนึ่งเป็นเพียงผนังระนาบเพื่อดูความถูกต้องของซอฟต์แวร์ เปิดไฟล์ ZIP และเรียกใช้ SL3DGUI.py สำหรับขั้นตอนการตรวจสอบการติดตั้ง 2 ส่งข้อความไปที่กล่องจดหมายของฉันที่นี่สำหรับซอร์สโค้ดทั้งหมด

สำหรับการใช้ชิ้นส่วนสแกน 3 มิติ คุณต้องติดตั้งกล้องสองตัวและโปรเจ็กเตอร์ แต่สำหรับส่วนอื่นๆ ให้คลิกที่ปุ่ม สำหรับการทดสอบข้อมูลตัวอย่าง ให้คลิกที่กระบวนการก่อน ตามด้วยขีดจำกัด การจับคู่แบบสเตอริโอ และสุดท้ายคือชี้คลาวด์ ติดตั้ง Meshlab เพื่อดู point cloud

meshlab.sourceforge.net/

แนะนำ: