Edge Detection

การศึกษาการทำ Edge Detection ใน Image processing

Objective

  1. เพื่อศึกษาการทำ Edge detection แบบ Modified Sobel และ Canny Filter
  2. ศึกษาการประยุกต์ใช้ Edge detection แบบ Modified Sobel และ Canny Filter
  3. ศึกษาการทำ Function ของ Edge detection บน MATLAB
  4. เพื่อศึกษาความแตกต่างของแต่ละรูปแบบในการใช้ Edge detection
  5. เพื่อเปรียบเทียบประสิทธิภาพระหว่าง Function กับ Function ใน MATLAB Toolbox
  6. เพื่อศึกษาการประยุกต์ใช้ Edge detection แบบ Modified Sobel และ Canny Filter ในด้านการแพทย์
  7. เพื่อศึกษาการทำ Edge Sharpening โดยใช้ Laplace filter

Medthods

  1. Modified Sobel Operators

    Modified Sobel เป็นการปรับปรุงให้ sobel operator ทำงานได้ทั้ง8ทิศทาง ภายในภาพ โดยการหมุนคู่ของค่าคงที่ใน operator matrix ของ sobel operator ไปทีละ45องศา จะทำให้เกิดรูปที่ผ่าน sobel operator ทั้งหมด 8 รูป จาก 8ทิศทาง แล้วจึงหาภาพที่เหมาะสมที่สุดหลังผ่านการใช้ modified sobel operator

    ในการทำ edge detection โดยวิธีการอื่นๆจะมีข้อเสียคือ สามารถตรวจจับขอบภาพได้ดีในแนวของ Vertical และ Horizontal ดังนั้นหาภาพที่ต้องการหานั้นมีขอบตามแนวแทยงก็จะย่อมตรวจจับได้ลำบาก ดังนั้นวิธีการ Modified Sobel Operator ถูกพัฒนาขึ้นมาเพื่อช่วยให้ง่ายในการตรวจจับขอบภาพทั้งในแนว Vertical, Horizontal และ Diagonal โดยใช้ Opertaor matrix จาก Sobel Operator ซึ่งจะแตกต่างกันที่ Sobel Opertor จะหาขอบใน 4 ทิศทางทุกๆ 90 องศา หรือตามแนวแกน x และแนวแกน y แต่วิธีนี้จะเป็นการหาขอบในทุกๆ 45 องศา โดยจะมี Operator mask ทั้งหมด 8 อัน คือ

    $$ \begin{split} H_0^S &= \begin{bmatrix}-1 &0 &1 \\ -2 &0 &1 \\ -1 &0 &1 \end{bmatrix} \\ H_1^S &= \begin{bmatrix}-2 &-1 &0 \\ -1 &0 &1 \\ 0 &1 &2 \end{bmatrix} \\ H_2^S &= \begin{bmatrix}-1 &-2 &-1 \\ 0 &0 &0 \\ 1 &2 &1 \end{bmatrix} \\ H_3^S &= \begin{bmatrix}0 &-1 &-2 \\ 1 &0 &-1 \\ 2 &1 &0 \end{bmatrix} \\ H_4^S &= \begin{bmatrix}1 &0 &-1 \\ 2 &0 &-2 \\ 1 &0 &-1 \end{bmatrix} \\ H_5^S &= \begin{bmatrix}2 &1 &0 \\ 1 &0 &-1 \\ 0 &-1 &-2 \end{bmatrix} \\ H_6^S &= \begin{bmatrix}1 &2 &1 \\ 0 &0 &0 \\ -1 &-2 &-1 \end{bmatrix} \\ H_7^S &= \begin{bmatrix}0 &1 &2 \\ -1 &0 &1 \\ -2 &-1 &0 \end{bmatrix} \end{split}$$

    โดยในการคำนวณจริงเราจะใช้เพียง 4 ค่าจากทั้งหมด 8 ค่ามา Convolution กับภาพ เช่น \(H_4^S = -H_0^S\) จะเชียนเป็นสมการ Convolution ได้ว่า \(I*H_4^S = I*-H_0^S\) โดยเมื่อดู Opertor ทั้งแปดของ Modified Sobel จะได้ความสัมพันธ์ดังนี้

    $$ \begin{split} I*H_4^S &= -(I*H_0^S) \\ I*H_5^S &= -(I*H_1^S) \\ I*H_6^S &= -(I*H_2^S) \\ I*H_7^S &= -(I*H_3^S) \end{split} $$

    และเมื่อหาค่าทั้ง 4 แล้วจะทำการหา Magnitude ของภาพได้โดยนำค่าทั้ง 4 มาหาค่าที่มากที่สุด ซึ่งหมายถึงว่าค่านั้นจะเป็นขอบของภาพ

  2. Canny Filter

    การทำ Canny filter เป็นการทำ Edge detection แบบหนึ่ง โดยจะใช้ multi-stage algorithm ในการตรวจจับขอบภาพ โดยวิธีการนี้จะได้ผลลัพท์ที่ค่อนข้างมีประสิทธิภาพสูง

    หลักการทำ Canny filter

    การทำ Canny Filter จะมี 4 ขั้นตอนการทำงาน คือ

    1. Gaussian blur : Noise Reduction สร้าง filter ในภาพ เพื่อลบรอยและ Noise ในภาพ
    2. Gradient operator : หาค่า Intensity Gradients ของรูปภาพ
    3. Non-maximum suppression : สร้าง Edge ที่แท้จริง
    4. Hysteresis thresholding : หาจุดเริ่มต้น และจุดสุดท้ายของขอบภาพ
  3. Gaussian Blur Filter

    ใช้ Filter แบบ Gaussian blur เพื่อลบรอยและ Noise ในภาพ โดยหลักการของการทำ Gaussian blur จะอ้างอิงจากกราฟโดย Gaussian ซึ่งมีลักษณะเป็นรูประฆังคว่ำ เพื่อสร้างความ Smooth ให้กับรูปภาพ แต่สามารถอาจเลือกใช้การ Reduce Noise วิธีอื่นได้ด้วยเช่นกัน

  4. Gradient operator

    เพื่อให้เกิด Gradients Intensity และ Direction ใช้สำหรับต้องการหาขอบของภาพโดยใช้ Sobel operation มาช่วยในการหาขอบซึ่งในวิธีการนี้สามารถใช้ operation อื่นมาใช้ในการหาขอบได้อีกเช่นกันจะเห็นได้ว่าวิธีการ canny เปิดกว้างในการการทำ edge detection

  5. Non-maximum suppression

    เพื่อสร้าง Edge ที่แท้จริง เมื่อค่า Pixel นั้นๆ มีความเหมาะสมกับการเป็นขอบมากกว่า Pixel ข้างเคียง หรือสามารถใช้ Modified Sobel ในการหาค่า Max ได้เช่นกัน โดยเลือกจุดภาพที่มีขนาดสูงสุดและมีทิศทางเดียวกับเกรเดียนเท่านั้น

    วิธีการทำงานคือปรับ Gradient Direction/Orientation ให้ไปยังทิศที่ใกล้กับทิศหลักที่ต้องการเช่น 0 45 90 และ 135 องศา จากนั้นทำการตรวจสอบ Gradient Magnitude ของบริเวณรอบๆในแนวที่ไม่ตรงกับ Gradient Direction ดังตัวอย่างดังนี้

    • 0 องศา (ทิศทาง Gradient ในแนวเหนือ-ใต้) หาก pixel นั้นๆมีค่าน้อยกว่า pixel ทางซ้ายและทางขวา (แนวตะวันออก-ตะวันตก) pixel นั้นจะถูก suppress ซึ่งโดยปกติจะกำหนด gradient magnitude เป็น 0
    • 90 องศา (ทิศทาง Gradient ในแนวตะวันออก-ตะวันตก) หาก pixel นั้นๆมีค่าน้อยกว่า pixel ข้างบนและข้างล่าง (แนวเหนือ-ใต้) pixel นั้นจะถูก suppress
    • 135 (ทิศทาง Gradient ในแนวอีสาน-หรดี) หาก pixel นั้นๆมีค่าน้อยกว่า pixel ทางล่างซ้ายและทางบนขวา (แนวอาตเนย์-พายัพ) pixel นั้นจะถูก suppress
    • 45 (ทิศทาง Gradient ในแนวอาตเนย์-พายัพ) หาก pixel นั้นๆมีค่าน้อยกว่า pixel ทางบนซ้ายและทางล่างขวา (แนวอีสาน-หรดี) pixel นั้นจะถูก suppress

  6. Hysteresis thresholding

    เพื่อหาจุดเริ่มต้น และจุดสุดท้ายของขอบภาพ โดยการลบเส้นที่ไม่เชื่อมกันออก (อันที่ไม่ใช่เส้นที่แท้จริง) โดยการพิจารณา connected component หรือ neighborhood บริเวณรอบ หากไม่มี neighborhood ที่เป็น edge เลย (มีค่าไม่เป็น 1) pixel นั้นจะถูก suppress ไว้ วิธีการทำจะตั้ง threshold สองค่าคือ Low และ High หาก pixel นั้นต่ำกว่า Low ค่าจะเป็น 0 ถ้ามากกว่า High จะเป็น 1 หรืออยู่ระหว่างนั้นจะพิจารณาให้เป็น 1 เมื่อมี neighbor เป็น edge (พิจารณาตามแต่ connected component ที่ตั้งค่าไว้)

  7. Edge sharpening by Laplace Filter

    Laplace Filter เป็นวิธีการทำให้ขอบของภาพมีความคมชัดมากขึ้นโดยการ localizing การเปลี่ยนแปลงอย่างกระทันหันของค่า intensity โดยใช้ second derivatives ของ image function

    โดยใช้ สมการ second derivative คือ $$ (\bigtriangledown ^2f)(x,y) = \frac{\partial^2 f}{\partial^2 x}(x,y) + \frac{\partial^2 f}{\partial^2 y}(x,y) \\ เมื่อ \frac{\partial^2 f}{\partial^2 x}(x,y) \equiv H_x^L = \begin{bmatrix}1 &-2 &1 \end{bmatrix} \\ และ \frac{\partial^2 f}{\partial^2 y}(x,y) \equiv H_x^L = \begin{bmatrix}1\\ -2\\ 1\end{bmatrix} \\ หรือ H^L = H_x^L + H_y^L = \begin{bmatrix}0 &1 &0 \\ 1&-4 &1 \\ 0& 1 &0 \end{bmatrix} $$ โดยนำ Operator mask ของ \(H^L\) ไป convolution กับภาพ และนำไปหักลบกับภาพต้นแบบ จากนั้นนำกลับไปบวกกับภาพต้นแบบอีกที ก็จะได้ ภาพที่คมชัดมากขั้น โดยเป็นไปตามสมการ \( New Image = Original Pic + (Original Pic - L_{xy}) ; L_{xy} \) คือ ภาพที่ได้จากการ convolution ด้วย Lapace Operator

Results

  1. Modified Sobel Operators

    ภาพที่ 1 : แสดงผลจากการใส่ Modified Sobel Operators ทั้งสามแบบในภาพ RGB
    ภาพที่ 2 : แสดงผลจากการใส่ Modified Sobel Operators ทั้งสามแบบในภาพ DICOM
    ภาพที่ 3 : แสดงผลจากการใส่ Modified Sobel Operators ทั้งสามแบบในภาพ LSM

    Video แสดงผลการประมวลผลภาพจาก AVI file แสดงผลการทำ Modified Sobel Operation

    Video แสดงผลการประมวลผลภาพจาก Webcam แสดงผลการทำ Modified Sobel Operation

  2. Canny Filter

    ภาพที่ 4 : แสดงภาพต้นฉบับและผลจากการใส่ Canny filter
    ภาพที่ 5 : แสดงภาพต้นฉบับและผลจากการใส่ Canny filter
    ภาพที่ 6 : แสดงภาพต้นฉบับและผลจากการใส่ Canny filter
    ภาพที่ 7 : แสดงภาพต้นฉบับและผลจากการใส่ Canny filter

    Video แสดงผลการประมวลผลภาพจาก AVI file แสดงผลการทำ Canny filter

    Video แสดงผลการประมวลผลภาพจาก Webcam แสดงผลการทำ Canny filter

    Video แสดงผลการประมวลผลภาพจาก Webcam แสดงผลการทำ Canny filter

  3. Edge sharpening by Laplace Filter

    ภาพที่ 8 : แสดงภาพต้นฉบับและผลจากการใช้ Edge sharpening แบบ Laplace Filter
    ภาพที่ 9 : แสดงภาพต้นฉบับและผลจากการใช้ Edge sharpening แบบ Laplace Filter
    ภาพที่ 10 : แสดงภาพต้นฉบับและผลจากการใช้ Edge sharpening แบบ Laplace Filter

    Video แสดงผลการประมวลผลภาพจาก AVI file แสดงผลการทำ Edge sharpening แบบ Laplace Filter


Conclusion

จากการศึกษาการหา Edge detection ทั้งสามแบบคือ Modified Sobel, Laplace sharpening และ Canny จากผลที่ได้จะเห็นว่าการใช้ Modified Sobel จะทำให้ได้ภาพที่มีขอบทั้งแนวตั้ง แนวนอน และแนวแทยงมุม ส่วนการใช้ Lapace Sharpening จะช่วยให้ได้ภาพที่ขอบคมชัดเจนนเื่องจากได้การทำ Edge detection โดยใช้ Lapace operator เข้ามาช่วย จึงทำให้ขอบดูคมชัด และการใช้ Canny Opertor จะช่วยให้ได้ Edge detection ที่ได้ขอบจริงๆขอบภาพซึ่งแตกต่างจากวิธีอื่นเนื่องจากมีการกำหนด Threshold สองค่าเพื่อแยกแยะรายละเอียดต่างๆของภาพ และมีกระบวนการทำหรือวิธีที่ซับซ้อนกว่า


Discussion

ในการใช้ Modified Sobel จะเห็นว่าค่อนข้างจะได้ Edge detection ที่ดีกว่าวิธีการก่อนๆคือ Sobel และ Prewitt เพราะมีการหาขอบของภาพในทุกๆ 45 องศา แต่ก็มีการทำที่ซับซ้อนกว่า และการทำ Sharpening โดยใช้ Lapace นั้นเป็นการใช้ second derivative มาช่วยหา edge ของภาพและนำกลับไปบวกเข้ากับภาพจริงจึงทำให้ได้ภาพที่ได้ขอบคมชัดมากขึ้น แต่ก็มีการคำนวณหลายขึ้นตอนจึงอาจจะต้องมีการพัฒนาให้สะดวกในการใช้แบบ real-time ส่วนวิธีการของ Canny นั้นช่วยให้ได้ขอบที่มีความถูกต้องมากกว่าวิธีที่กล่าวมาแต่ว่ามีขั้นตอนการคำนวณที่ซับซ้อนและยุ่งยากมากที่สุด ดังนั้นในการทำ Edge detection ก็ควรเลือกวิธีการให้เหมาะสมกับรูปภาพ


Q&A

Question 1:
จงบอกข้อดีและข้อเสียของ canny filter
Answer:

ข้อดีคือ

  • เป็นการปรับปรุงสัญญาณโดยคำนึงถึงสัดส่วนของ noise โดยใช้ Nonmaxima suppression
  • ทำให้การ detect ขอบของภาพดีขึ้นแม่จะมี noise โดยใช้ thresholding
  • การ smooth โดยการใช้ Gaussian operation ทำให้การหาข้อผิดพลาดนั้นดียิ่งขึ้นเนื่องจากเป็นการใช้เรื่องของความน่าจะเป็น

ข้อเสียคือ ใช้เวลาในการคำนวณนานเนื่องจากการคำนวณที่ซับซ้อน

Question 2:
จงบอกข้อดีและข้อเสียของ Laplacian filter ซึ่งเป็นวิธีการหา Edge อีกรูปแบบหนึ่ง
Answer:

ข้อดีคือ

  • zero crossing operators สามารถ detect ขอบและ orientation ได้ ซึ่งหลักการนั้นไม่ยากเนื่องจากเป็นการประมาณค่าของ gradient magnitude
  • สามารถปรับปรุง characteristic ได้ในทุกทิศทาง

ข้อเสียคือ

  • sensitive ต่อ noise เนื่องจากการ detect ขอบและ orientation จะทำให้ noise ในภาพเพิ่มขึ้น ส่งผลให้ไปลดค่า magnitude ของขอบภาพ
  • operator ในภาพเกิดการแตกโดยขอบของภาพในภาพที่มี noise

Question 3:
อะไรคือข้อดีของการทำ Hysteresis Thresholding
Answer:
ขอบเชื่อมต่อกันมากขึ้น จึงทำให้ขอบของภาพส่วนที่ไม่ต่อเนื่องกันนั้นต่อเนื่องกัน

Source code is available on Github