วิธีประมาณค่าอ็อกเทฟและขนาดสำหรับคุณลักษณะด้านภาพที่วางไว้ที่มุมของแฮร์ริส


9

ขณะนี้ฉันกำลังทำงานกับและเปรียบเทียบประสิทธิภาพของตัวตรวจจับคุณลักษณะหลายตัวที่ OpenCV ใช้เป็นพื้นฐานสำหรับการจับคู่คุณลักษณะทางภาพ

ฉันใช้คำอธิบายSIFT ผมได้ประสบความสำเร็จการจับคู่ที่น่าพอใจ (หลังจากปฏิเสธการแข่งขันที่ไม่ดี) เมื่อตรวจสอบMSERและหมา (ร่อน)คุณสมบัติ

ขณะนี้ฉันกำลังทดสอบโค้ดของฉันกับGFTT (ฟีเจอร์ที่ดีในการติดตาม - มุมแฮร์ริส)เพื่อรับการเปรียบเทียบและเนื่องจากในขั้นตอนสุดท้ายชุดของฟีเจอร์ GFTT จะพร้อมใช้งานจากกระบวนการติดตามคุณลักษณะที่มองเห็น

ฉันใช้cv::FeatureDetector::detect(...)ซึ่งให้ฉันด้วยstd::vector<cv::KeyPoint>ที่เต็มไปด้วยการตรวจพบคุณลักษณะ / keypoints / ภูมิภาคที่น่าสนใจ โครงสร้างcv::KeyPointประกอบด้วยข้อมูลพื้นฐานเกี่ยวกับตำแหน่งของสถานที่รวมถึงข้อมูลเกี่ยวกับsizeและoctaveที่ตรวจพบจุดสำคัญ

ผลลัพธ์แรกของฉันกับGFTTนั้นแย่มากจนกระทั่งฉันเปรียบเทียบค่าทั่วไปsizeและoctaveพารามิเตอร์ในคุณสมบัติที่แตกต่างกัน:

  • MSERตั้งค่าขนาด (ระหว่าง 10 ถึง 40px) และทำให้อ็อกเทฟเป็น 0
  • DoG (SIFT)ตั้งค่าทั้งขนาดและอัตราส่วนคู่ ( ขนาด /อัตราส่วนคู่ระหว่าง 20 และ 40)
  • GFTTพารามิเตอร์อยู่เสมอ : size = 3 , octave = 0

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

ถ้าฉันด้วยตนเองตั้งค่าsizeของGFTTไป10-12 , ฉันได้รับผลลัพธ์ที่ดีคล้ายกับเมื่อใช้MSERหรือหมา (ร่อน)

คำถามของฉันคือ:มีวิธีที่ดีกว่าในการกำหนดจำนวนเพิ่มsize(และ / หรือoctave) กว่าjust-go-with-10-see-if-it-it ? ฉันต้องการที่จะหลีกเลี่ยงการ hardcoding sizeเพิ่มขึ้นถ้าเป็นไปได้และกำหนดโปรแกรมมัน แต่hardcoding ไม่เป็นไรตราบใดที่ฉันมีข้อโต้แย้งที่เป็นของแข็งบางสำรองตัวเลือกของฉันของใหม่size/ sizeเพิ่มขึ้น / การประมาณค่าอัลกอริทึมsize


1
เฮ้ @ penelope: ลองดูลิงค์นี้ผู้ชายคนนี้ทำได้ดีมากแล้ว [ computer-vision-talks.com/2011/08/…

@Sistu เฮ้ที่ดูเหมือนการเปรียบเทียบทั่วไปที่ดีมากของ descriptors ในกรณีทั่วไปและกับวัตถุภาพถ่าย แต่ฉันกำลังทำงานกับภาพบางประเภทและฉันต้องทำแบบทดสอบของตัวเอง นอกจากนี้คำถามนี้มีความเฉพาะเจาะจงมากกว่า "ฉันต้องการเอกสารอ้างอิงเปรียบเทียบประสิทธิภาพของ decriptors ประเภทต่างๆ" มันเป็นลิงค์ที่ดีแม้ว่าจะตรวจสอบออก
penelope

คำตอบ:


4

ฉันไม่แน่ใจว่ามีการตอบสนองที่ดีสำหรับคำถามที่แม่นยำของคุณ: สิ่งที่ปรับขนาดของ SIFT และ SURF ได้รับการพัฒนาเพื่อประเมินขนาดพื้นที่ใกล้เคียงที่เกี่ยวข้อง "ดี" โดยอัตโนมัติรอบ ๆ จุดสำคัญแบบมุม (ซึ่งเป็นคุณสมบัติที่ดี เพื่อติดตามคือ)

ตอนนี้คำตอบที่เป็นบวกมากขึ้นคือ:

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

  • ฝังคุณสมบัติที่ดีของคุณลงในปิรามิดภาพเพื่อให้มีสเกลบางอย่างที่เกี่ยวข้อง คุณสามารถค้นหาการอ้างอิงเกี่ยวกับจุดสนใจแบบหลายขนาด FAST และ Harris ซึ่งทำสิ่งที่คล้ายกับขั้นตอนนี้มาก

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

หากคุณกำลังมองหาวิธีแก้ไขปัญหาที่รวดเร็วและสกปรกลองใช้ขนาดระหว่าง 5x5 ถึง 11x11 (ขนาดปกติที่ใช้ในการจับคู่บล็อกสเตอริโอ) หากคุณกำลังมองหาเกณฑ์ที่น่าพึงพอใจทางสติปัญญาลองเพิ่มโอกาสของการจับคู่คุณสมบัติสองจุดที่ดีที่สุดภายใต้ระดับเสียงของคุณ


ฉันกำลังมองหาวิธีแก้ปัญหาที่รวดเร็วและสกปรกกว่าที่คุณเสนอ นอกจากนี้ฉันสามารถกำหนดสภาพอากาศได้ว่าการแข่งขันนั้นดีหรือไม่ดีหลังจากที่ฉันได้รับการสกัดและจับคู่กับบางสิ่ง แม้ว่าฉันจะจับคู่พวกเขาแบบสุ่มทั้งหมดฉันก็จะได้แมตช์ที่ดี - ดังนั้นคำแนะนำแรกของคุณก็ไม่มีประโยชน์ สำหรับส่วนที่สองนั้นรวดเร็วและสกปรกมากขึ้น: ฉันรู้ว่าไม่มีพารามิเตอร์ที่สมบูรณ์แบบ แต่อย่างที่ฉันพูดการเพิ่มขนาดเป็น 12 ช่วย - คุณภาพนั้นเทียบได้กับการจับคู่ SIFT และ MSER ฉันแค่ไม่มีข้อโต้แย้งใด ๆ ที่จะเลือก 12 มากกว่า 100 หรือมากกว่า 34 ...
penelope

0

เพื่อช่วยคุณกำหนดพารามิเตอร์ที่ดีที่สุดสำหรับเครื่องตรวจจับ OpenCV มีAjusterAdapterสำหรับวัตถุประสงค์นั้น ฉันไม่เคยใช้ตัวเอง แต่อาจเป็นวิธีมาตรฐานในการกำหนดพารามิเตอร์โดยทางโปรแกรม โปรดทราบด้วยว่าแม้ว่าจุดสำคัญจะมีคุณสมบัติหลายอย่าง แต่ไม่ใช่ทั้งหมดที่เหมาะสมสำหรับอัลกอริทึมทั้งหมด เนื่องจากโครงสร้าง Keypoint ใช้สำหรับอัลกอริทึมที่แตกต่างกันจึงมีฟิลด์เหล่านั้นทั้งหมด แต่บางครั้งไม่ได้ใช้นั่นคือเหตุผลที่คุณได้รับอ็อกเทฟ = 0; IMO


ฉันรู้ว่าฟีเจอร์บางประเภทไม่ใช่ประเภทที่ดีที่สุดสำหรับบางวัตถุประสงค์ แต่งานล่าสุดได้พยายามหาวิธีที่พวกเขาใช้ v.features / ภูมิภาคที่น่าสนใจมากกว่า 1 ประเภท ด้วยตัวเอง (ฉันสามารถเพิ่มลิงก์ไปยังงานหากคุณสนใจ) นอกจากนี้สิ่งที่ฉันทำคือการวิจัยอย่างน้อยส่วนหนึ่งดังนั้นการลองและประเมินผลที่ได้จากประเภทจุดสำคัญต่าง ๆ เป็นสิ่งที่ฉันควรทำแม้ว่าผลลัพธ์บางอย่างจะไม่ดีเท่ารัฐ - ของ - ศิลปะ. ฉันจะตรวจสอบ AdjusterAdapter ขอบคุณ
Penelope

ฉันแค่มองผ่านฟังก์ชั่นที่มีให้ สามารถเพิ่มหรือลดจำนวนคุณสมบัติที่ตรวจจับได้เท่านั้น นอกจากนี้ฉันไม่มีปัญหากับคุณสมบัติที่ตรวจพบ ฉันจะเช่นเดียวกับวิธีการปรับขนาดของพวกเขาเพื่อให้พวกเขาสามารถนำมาใช้ที่ดีกว่าในการจับคู่ (เพิ่มขนาดถึง 10 ไม่ว่า แต่ผมไม่ได้มีคอนกรีต (พอ) การโต้แย้งที่เลือก)
Penelope
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.