ตรวจจับรูปแบบวงกลมในข้อมูลคลาวด์แบบจุด


10

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

ป้อนคำอธิบายรูปภาพที่นี่

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

ฉันลองใช้วิธี K แต่ไม่ได้ผลดี: ฉันคิดว่าการจัดจุดแบบวงกลมอาจไม่เหมาะสำหรับมัน นอกจากนี้ฉันมีปัญหาเพิ่มเติมที่ไม่ทราบล่วงหน้าถึงคุณค่าของเค

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

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


คำถามที่ง่ายกว่า: คุณจะตรวจจับเซกเมนต์ของเส้นในข้อมูลสองมิติได้อย่างไร
charles.y.zheng

".. ชอบสิ่งที่อยู่ในตัวอย่าง" หรือไม่ ตัวอย่างอะไร คุณสามารถเพิ่มลิงค์ได้ไหม?
onestop

การแปลง Hough เป็นตัวเลือกที่ชัดเจน มันควรจะทำงานได้ดี
whuber

ฉันเพิ่งมีชื่อเสียงพอที่จะเพิ่มตัวอย่างภาพที่ฉันพูดถึง
cjauvin

3
นี่ไม่ใช่ปัญหาการทำคลัสเตอร์ ในสถิติ "กลุ่ม" ประกอบด้วยชุดของวัตถุที่อยู่ใกล้กันมากกว่าวัตถุอื่น ความใกล้ชิดไม่ได้จับภาพเป็นวงกลม: นั่นเป็นเหตุผลว่าทำไม K-Mean และอัลกอริธึมการจัดกลุ่มอื่น ๆ จะไม่ทำงาน ด้วยเหตุนี้คำถามนี้อาจเหมาะสมกว่าในการประมวลผลภาพหรือไซต์ GIS ซึ่งคุณอาจพบผู้เชี่ยวชาญในประเด็นนี้
whuber

คำตอบ:


9

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

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

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


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

3
แนวคิดหลังนี้เรียกว่า RANSAC และอาจถูกใช้ด้วยตัวเองโดยเฉพาะอย่างยิ่งหากจำนวนวงกลมต่อภาพเล็ก
SheldonCooper

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

เมื่อคุณตรวจพบวงกลมที่มีขนาดใหญ่กว่าให้ลบจุดทั้งหมดที่อยู่ในวงกลมออกจากการสุ่มตัวอย่าง
SheldonCooper

0

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

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