ปัจจัยใดที่ฉันควรพิจารณาในการเลือกอัลกอริทึมการตรวจจับขอบ


33

ฉันได้เรียนรู้เกี่ยวกับอัลกอริธึมการตรวจจับขอบจำนวนหนึ่งรวมถึงอัลกอริทึมอย่าง Sobel, Laplacian และ Canny ดูเหมือนว่าสำหรับฉันแล้วตัวตรวจจับขอบที่ได้รับความนิยมมากที่สุดคือตัวตรวจจับขอบ Canny แต่มีบางกรณีที่นี่ไม่ใช่อัลกอริธึมที่เหมาะสมที่สุดที่จะใช้หรือไม่? ฉันจะตัดสินใจได้อย่างไรว่าจะใช้อัลกอริทึมใด ขอบคุณ!


7
คุณกำลังตรวจจับอะไร
endolith

คำตอบ:


29

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

โชเบล

สิ่งนี้ใกล้เคียงกับอนุพันธ์อันดับหนึ่ง ให้ extrema ที่ตำแหน่งการไล่ระดับสี 0 โดยที่ไม่มีการไล่ระดับสี ใน 1D มันคือ = [-101]

  • smooth edge => ท้องถิ่นต่ำสุดหรือสูงสุดขึ้นอยู่กับสัญญาณขึ้นหรือลง
  • 1 pixel line => 0 ที่บรรทัดนั้นโดยมี extrema ท้องถิ่น (มีเครื่องหมายต่างกัน) ติดกับมัน ใน 1D มันคือ = [1-21]

มีทางเลือกอื่น ๆ ให้กับ Sobel ซึ่งมี +/- ในลักษณะเดียวกัน ในหน้าRoberts Crossบนวิกิพีเดียคุณสามารถค้นหาการเปรียบเทียบของบางรายการได้

Laplace

สิ่งนี้ใกล้เคียงกับอนุพันธ์ลำดับที่สอง ให้ 0 ที่ตำแหน่งการไล่ระดับสีและ 0 ที่ไม่มีการไล่ระดับสี มันให้ extrema ที่ไล่ระดับสีอีกต่อไป

  • smooth edge => 0 ตามขอบ, extrema ท้องถิ่นที่จุดเริ่ม / หยุดของ edge
  • 1 pixel line => a extremum "double" ที่บรรทัดโดยมี extrema "Normal" ที่มีเครื่องหมายต่างกันติดกับมัน

เอฟเฟกต์ของทั้งสองนี้ต่อขอบประเภทต่าง ๆ สามารถมองเห็นได้ดีที่สุด:

เปรียบเทียบ Sobel กับ Laplace

แสนรู้

นี่ไม่ใช่ตัวดำเนินการอย่างง่าย แต่เป็นวิธีการหลายขั้นตอนซึ่งใช้ Sobel เป็นหนึ่งในขั้นตอน ในกรณีที่ Sobel และ Laplace ให้ผลลัพธ์สีเทา / จุดลอยตัวซึ่งคุณจำเป็นต้อง จำกัด ตัวเองอัลกอริทึม Canny มีการนวดแบบสมาร์ทเป็นขั้นตอนหนึ่งดังนั้นคุณจะได้ผลลัพธ์เป็นไบนารีใช่ / ไม่ใช่ นอกจากนี้บนขอบที่ราบเรียบคุณอาจพบว่ามีเพียง 1 บรรทัดอยู่ตรงกลางของการไล่ระดับสี


18

ในขณะที่ Sobel และ Laplacian เป็นเพียงตัวกรอง Canny ก็ก้าวไปไกลกว่านั้นในสองวิธี

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

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


มีรุ่น 1-D ในเรื่องนี้ไหม? มันจะเป็นแอพพลิเคชั่นตรงไปตรงมาของรุ่น 2 มิติหรือไม่?
Spacey

9

การตัดสินใจที่สำคัญที่สุดสองข้อเมื่อพยายามตรวจจับขอบคือโดยปกติแล้วสำหรับฉัน:

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

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

สำหรับการตรวจจับขอบตัวเองฉันไม่สามารถคิดได้ด้วยเหตุผลที่ดีที่จะไม่ใช้ Canny


7

แนวทางของซูซาน

แนวทางการตรวจจับขอบและมุมก็คือวิธีการ SUSAN

ในวิธีการนี้มากกว่าประมาณอนุพันธ์ประมาณหนึ่งวิธีการแบบรวม สิ่งนี้มีความได้เปรียบไม่เพียง แต่สามารถตรวจจับขอบ แต่ยังสามารถตรวจจับ "คุณสมบัติสองมิติ" (เช่นมุม)

ข้อดีอีกประการของวิธีการประมาณค่าแบบอินทิเกรตก็คือเสียงมีแนวโน้มที่จะมีผลกระทบน้อยกว่าต่อผลลัพธ์


6

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

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