การจับคู่รูปทรง - การค้นหาการกำจัดรูปทรง


17

ฉันพบรูปทรงในสองภาพที่มีวัตถุเดียวกันและฉันต้องการค้นหาการกระจัดและการหมุนของวัตถุนี้ ฉันได้ลองกับกล่องที่มีขอบหมุนของรูปทรงนี้แล้วมุมและจุดกึ่งกลางของมัน แต่การหมุนของกล่องขอบไม่ได้บอกเกี่ยวกับการหมุนของรูปร่างอย่างถูกต้องเพราะมันเหมือนกันสำหรับมุมที่ 0, a + 90, a + 180 เป็นต้น องศา มันเป็นวิธีการอื่นที่ดีในการค้นหาการหมุนและการเคลื่อนที่ของรูปทรง? บางทีการใช้ตัวเรือนูนข้อบกพร่องนูนบาง? ฉันอ่านในการเรียนรู้ OpenCv เกี่ยวกับรูปทรงที่ตรงกัน แต่มันไม่ได้ช่วย ใครช่วยยกตัวอย่างได้บ้าง

ตัวอย่าง:

1 2 3 4

ฉันต้องการตรวจจับเช่นสี่เหลี่ยมสีชมพูและในปากกาตัวที่สอง ตัวอย่างอื่น ๆ อาจเป็นสี่เหลี่ยมจัตุรัสที่มีบางหลุมดาว ฯลฯ อย่างที่ฉันบอกว่าฉันต้องการทำบางสิ่งที่ไม่เหมือนกัน ข้อเสนอแนะใด ๆ ชื่นชมเพราะฉันต้องการทดสอบวิธีการให้มากที่สุด


รูปภาพจะช่วยที่นี่
mirror2image

ฉันต้องการสร้างฟังก์ชั่นสากล ดังนั้นภาพทดสอบสามารถเป็นอะไรก็ได้ องค์ประกอบรูปร่างที่เรียบง่ายเป็นรูปสี่เหลี่ยมผืนผ้าหรือรูปทรงที่ซับซ้อนมากขึ้นเล็กน้อย
krzych

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

คำตอบ:


4

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

หากเกี่ยวข้องกับการปรับสเกลคุณสามารถคำนวณตัวคูณสเกลได้โดยใช้อัตราส่วนของแกนหลักที่สอดคล้องกัน


ใช่ขนาดอาจแตกต่างกัน ฉันคิดเกี่ยวกับสิ่งที่คล้ายกับโซ่ฟรีแมนจาก opencv ที่ทำโซ่ฟรีแมนของแต่ละเส้นแล้วทำการเปรียบเทียบและพยายามหาล่ามด้วยวิธีใดวิธีหนึ่ง แต่ฉันไม่สามารถหาอัลกอริทึมที่ดีสำหรับมันได้
krzych

มันก็เหมือนกับการสร้างกล่อง bounded หมุนต่ำสุดและการหมุนและการกำจัด พยายามใช้วิธีนี้และผลลัพธ์ไม่พอใจ ดังนั้นฉันคิดว่าวิธีนี้ไม่ดีเลย
krzych

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

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

1
@kzych ดูเหมือนว่าปัญหาที่ใหญ่ที่สุดของคุณที่นี่จะเป็นจุดรบกวนในการตรวจจับขอบ คุณจะพบช่องหมุนต่ำสุดได้อย่างไร ฉันยังไม่ชัดเจนว่าทำไมถึงไม่ทำงาน บริบทรูปร่างเป็นวิธีการแสดงรูปร่าง รายละเอียดอยู่ที่นี่: en.wikipedia.org/wiki/Shape_context
Dima

2

หากคุณไม่ต้องกังวลเกี่ยวกับรหัสลูกโซ่การบิดเบือนหรือโปรเจคชันอาจช่วยได้ที่นี่ หากคุณมีรหัสลูกโซ่ที่มีรูปร่างใกล้เคียงกันโดยมีขนาดเท่ากันคุณสามารถค้นหาการแปลด้วยความสัมพันธ์เฟส FFT หนึ่งมิติ http://en.wikipedia.org/wiki/Phase_correlation

หากคุณต้องคำนึงถึงความผิดเพี้ยนของ projective คุณอาจพิจารณาถึงความเป็นไปได้ในการใช้คะแนนคุณลักษณะ (เช่นมุม) แทนที่จะเป็นรูปทรง


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

2

ในคำถามที่คุณพูด

อย่างที่ฉันบอกไปแล้วว่าฉันต้องการทำสิ่งที่แปลกใหม่

แต่ฉันเกรงว่ามันยากที่จะหาวิธีแก้ปัญหาแบบ "สากล"

คุณสามารถซื้อซอฟต์แวร์ตัวระบุรูปแบบที่มีจำหน่ายในเชิงพาณิชย์และรวมเข้ากับแอปพลิเคชันของคุณ นี่เป็นคู่มืออ้างอิงสำหรับผลิตภัณฑ์ดังกล่าวhttp://www.lmi3d.com/sites/default/files/support/4.2.0.70-hexsight_user_guide.pdf

นอกจากนี้คุณยังสามารถพัฒนาโซลูชันเฉพาะกิจสำหรับกรณีเฉพาะบางอย่าง (เช่นปากกาในภาพของคุณ)

มิฉะนั้นคุณสามารถศึกษาปัญหาอย่างหนักโดยเริ่มจากพื้นฐานพื้นฐานที่ฝังอยู่ในเรขาคณิตการคำนวณ ( http://www.cs.sunysb.edu/~algorith/files/shape-similarity.shtml ) ที่ "รูปทรง" ของคุณจะถูกเรียกว่า "รูปหลายเหลี่ยม" อ่านสิ่งที่ชอบ:

M. de Berg, O. Devillers, M. Kreveld, O. Schwarzkopf และ M. Teillaud การคำนวณการซ้อนทับกันสูงสุดของรูปหลายเหลี่ยมนูนสองอันภายใต้คำแปล วิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี, 31: 613–628, 1998

และ

H. Ahn, O. Cheong, C. Park, C. Shin และ A. Vigneron การซ้อนทับกันของระนาบนูนสองชุดสูงสุดภายใต้การเคลื่อนไหวที่แข็งเรขาคณิตเชิงคำนวณ: ทฤษฎีและการประยุกต์, 37: 3–15, 2007

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.