OpenCV - ภาพรวม

OpenCV เป็นไลบรารีข้ามแพลตฟอร์มที่เราสามารถพัฒนาแบบเรียลไทม์ computer vision applications. ส่วนใหญ่มุ่งเน้นไปที่การประมวลผลภาพการจับภาพวิดีโอและการวิเคราะห์รวมถึงคุณสมบัติต่างๆเช่นการตรวจจับใบหน้าและการตรวจจับวัตถุ

เริ่มต้นบทด้วยการกำหนดคำว่า "Computer Vision"

วิสัยทัศน์คอมพิวเตอร์

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

Computer Vision ทับซ้อนกันอย่างมีนัยสำคัญกับฟิลด์ต่อไปนี้ -

  • Image Processing - เน้นการปรับแต่งภาพ

  • Pattern Recognition - อธิบายถึงเทคนิคต่างๆในการจำแนกรูปแบบ

  • Photogrammetry - เกี่ยวข้องกับการได้รับการวัดที่แม่นยำจากภาพ

Computer Vision Vs Image Processing

Image processingเกี่ยวข้องกับการแปลงภาพเป็นภาพ อินพุตและเอาต์พุตของการประมวลผลภาพมีทั้งรูปภาพ

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

การใช้งาน Computer Vision

ที่นี่เราได้ระบุโดเมนหลักบางส่วนที่มีการใช้งาน Computer Vision อย่างมาก

การประยุกต์ใช้หุ่นยนต์

  • Localization - กำหนดตำแหน่งหุ่นยนต์โดยอัตโนมัติ

  • Navigation

  • หลีกเลี่ยงอุปสรรค

  • การประกอบ (การเจาะรูการเชื่อมการทาสี)

  • การจัดการ (เช่นหุ่นยนต์บังคับ PUMA)

  • Human Robot Interaction (HRI) - หุ่นยนต์อัจฉริยะเพื่อโต้ตอบและให้บริการผู้คน

ใบสมัครยา

  • การจำแนกประเภทและการตรวจหา (เช่นการจำแนกรอยโรคหรือเซลล์และการตรวจหาเนื้องอก)
  • การแบ่งส่วน 2D / 3D
  • การสร้างอวัยวะใหม่ของมนุษย์ 3 มิติ (MRI หรืออัลตราซาวนด์)
  • การผ่าตัดด้วยหุ่นยนต์นำทางด้วยสายตา

แอปพลิเคชันระบบอัตโนมัติทางอุตสาหกรรม

  • การตรวจสอบอุตสาหกรรม (การตรวจจับข้อบกพร่อง)
  • Assembly
  • การอ่านฉลากบาร์โค้ดและแพ็คเกจ
  • การจัดเรียงวัตถุ
  • ความเข้าใจเอกสาร (เช่น OCR)

แอปพลิเคชันความปลอดภัย

  • ไบโอเมตริกซ์ (ม่านตาพิมพ์ลายนิ้วมือจดจำใบหน้า)

  • การเฝ้าระวัง - ตรวจจับกิจกรรมหรือพฤติกรรมที่น่าสงสัยบางอย่าง

ใบสมัครการขนส่ง

  • รถยนต์ที่เป็นอิสระ
  • ความปลอดภัยเช่นการตรวจสอบความระมัดระวังของผู้ขับขี่

คุณสมบัติของ OpenCV Library

เมื่อใช้ไลบรารี OpenCV คุณสามารถ -

  • อ่านและเขียนภาพ

  • จับภาพและบันทึกวิดีโอ

  • ประมวลผลภาพ (กรอง, แปลงร่าง)

  • ทำการตรวจหาคุณสมบัติ

  • ตรวจจับวัตถุที่เฉพาะเจาะจงเช่นใบหน้าดวงตารถยนต์ในวิดีโอหรือรูปภาพ

  • วิเคราะห์วิดีโอเช่นประเมินการเคลื่อนไหวในวิดีโอลบพื้นหลังและติดตามวัตถุในวิดีโอ

OpenCV เดิมได้รับการพัฒนาใน C ++ นอกจากนี้ยังมีการรวม Python และ Java OpenCV ทำงานบนระบบปฏิบัติการต่างๆเช่น windows, Linux, OSx, FreeBSD, Net BSD, Open BSD เป็นต้น

บทช่วยสอนนี้อธิบายถึงแนวคิดของ OpenCV พร้อมตัวอย่างการใช้การผูก Java

โมดูลไลบรารี OpenCV

ต่อไปนี้เป็นโมดูลไลบรารีหลักของไลบรารี OpenCV

ฟังก์ชันหลัก

โมดูลนี้ครอบคลุมโครงสร้างข้อมูลพื้นฐานเช่น Scalar, Point, Range ฯลฯ ที่ใช้ในการสร้างแอปพลิเคชัน OpenCV นอกจากนี้ยังรวมถึงอาร์เรย์หลายมิติด้วยMatซึ่งใช้ในการจัดเก็บภาพ ในไลบรารี Java ของ OpenCV โมดูลนี้รวมเป็นแพ็คเกจที่มีชื่อorg.opencv.core.

การประมวลผลภาพ

โมดูลนี้ครอบคลุมการดำเนินการประมวลผลภาพต่างๆเช่นการกรองภาพการแปลงภาพเชิงเรขาคณิตการแปลงพื้นที่สีฮิสโตแกรมเป็นต้นในไลบรารี Java ของ OpenCV โมดูลนี้จะรวมเป็นแพ็คเกจที่มีชื่อ org.opencv.imgproc.

วิดีโอ

โมดูลนี้ครอบคลุมแนวคิดการวิเคราะห์วิดีโอเช่นการประมาณค่าการเคลื่อนไหวการลบพื้นหลังและการติดตามวัตถุ ในไลบรารี Java ของ OpenCV โมดูลนี้รวมเป็นแพ็คเกจที่มีชื่อorg.opencv.video.

วิดีโอ I / O

โมดูลนี้อธิบายเกี่ยวกับการจับภาพวิดีโอและตัวแปลงสัญญาณวิดีโอโดยใช้ไลบรารี OpenCV ในไลบรารี Java ของ OpenCV โมดูลนี้รวมเป็นแพ็คเกจที่มีชื่อorg.opencv.videoio.

calib3d

โมดูลนี้ประกอบด้วยอัลกอริทึมเกี่ยวกับอัลกอริธึมรูปเรขาคณิตหลายมุมมองพื้นฐานการปรับเทียบกล้องเดี่ยวและสเตอริโอการประมาณค่าของวัตถุการรองรับสเตอริโอและองค์ประกอบของการสร้าง 3D ขึ้นใหม่ ในไลบรารี Java ของ OpenCV โมดูลนี้รวมเป็นแพ็คเกจที่มีชื่อorg.opencv.calib3d.

คุณสมบัติ 2d

โมดูลนี้รวมถึงแนวคิดของการตรวจหาคุณลักษณะและคำอธิบาย ในไลบรารี Java ของ OpenCV โมดูลนี้รวมเป็นแพ็คเกจที่มีชื่อorg.opencv.features2d.

Objdetect

โมดูลนี้รวมถึงการตรวจจับวัตถุและอินสแตนซ์ของคลาสที่กำหนดไว้ล่วงหน้าเช่นใบหน้าดวงตาแก้วคนรถยนต์ ฯลฯ ในไลบรารี Java ของ OpenCV โมดูลนี้จะรวมอยู่ในแพ็คเกจที่มีชื่อ org.opencv.objdetect.

ไฮกุย

นี่คืออินเทอร์เฟซที่ใช้งานง่ายพร้อมความสามารถ UI ที่เรียบง่าย ในไลบรารี Java ของ OpenCV คุณสมบัติของโมดูลนี้รวมอยู่ในแพ็คเกจสองแพ็คเกจที่แตกต่างกันคือorg.opencv.imgcodecs และ org.opencv.videoio.

ประวัติโดยย่อของ OpenCV

OpenCV เป็นโครงการริเริ่มการวิจัยของ Intel เพื่อให้คำแนะนำแอปพลิเคชันที่ใช้ CPU มาก เปิดตัวอย่างเป็นทางการในปี 2542

  • ในปี 2549 มีการเปิดตัว OpenCV 1.0 เวอร์ชันหลักรุ่นแรก
  • ในเดือนตุลาคม พ.ศ. 2552 OpenCV 2 เวอร์ชันหลักที่สองได้รับการเผยแพร่
  • ในเดือนสิงหาคม 2555 OpenCV ถูกยึดครองโดยองค์กรไม่แสวงหาผลกำไร OpenCV.org