มารู้จักกับ Morphological Image Processing กันดีกว่า

Sornpraram Xu
Super AI Engineer
Published in
3 min readFeb 2, 2021

Morphological Image Processing ถือเป็นหนึ่งในรูปแบบการประมวลผลรูปภาพดิจิตอล ซึ่งมีเป้าหมายในการดึงองค์ประกอบและคุณลักษณะต่างๆของรูปภาพที่เราต้องการโดยการใช้หลักการทางคณิตศาสตร์จำพวก Set theory

โดยองค์ประกอบที่เราจะต้องมีในการทำ Morphology นั้นมีอยู่สองอย่าง คือ รูปภาพและ structure elements(SEs) ซึ่งจะเป็นเสมือน filter ที่จะมากรองหาองค์ประกอบของรูปเรานั้นเอง

โดยยกตัวอย่างการของการทำ Morphology แบบหนึ่งเราเรียกว่า erosion คือการนำ Structuring Elements (จากรูปข้างล่างเรากำหนดเป็น B) เข้ามาวางเทียบกับ Binary Image ใดๆ (กำหนดเป็น A) ในรูปแบบของ Sliding window คือการนำ SE วิ่งจากซ้ายไปขวาทีละ pixel

จากภาพด้านบนเราจะเห็นว่า Binary Image ของเรานั้นจะมีขนาดเล็กลง เพราะว่าเรานำ SE ที่มีลักษณะเป็นรูปบวกเข้าไปวางเทียบแต่ละ pixel ทำให้ ณ จุดใดๆที่ Binary Image เรามีข้อมูลเป็นรูปบวกจะถูกควบรวมให้เป็น 1 pixel นั้นเอง

Operation

หลังจากที่เรารู้จัก Morphological Image Processing กันแล้วเราลองมาดูที่กว่าว่าในการทำ Morphology นั้นมันมี Operation อะไรบ้างที่สามารถช่วยเราได้

Erosion โดย operation แรกที่เราจะเรียนรู้กันก็คือ erosion นั้นเอง โดยจะเป็นการลบข้อมูลบริเวณขอบของภาพ โดยถ้าหาก SE ของเรามีขนาดใหญ่ขึ้นมากเท่าไหร่ก็ยิ่งทำให้ปริมาณการกร่อนของขอบรูปมีขนาดมากขึ้นเท่านั้น และถ้าหาก SE นั้นๆมีขนาดมากกว่า element ที่อยู่ในรูปของเราก็จะเป็นการลบ element นั้นๆทิ้งไปเลย

Image after erosion

ถ้าหากให้ยกตัวอย่างการใช้ประโยชน์ของ erosion ก็เช่นถ้าหากเราต้องการกรองข้อมูลในภาพๆนึงว่าต้องการหา element ที่มี ขนาดมากกว่า 10 pixel เท่านั้น เราก็สามารถนำ SE ขนาดมากกว่า 10 pixel มาทำ erosion เพื่อให้เหลือเฉพาะข้อมูลที่ต้องการ

Dilation กลับกันกับ erosion เพราะสำหรับ dilation แล้วจะเป็นการเพิ่มข้อมูลของขอบภาพ เช่นกันกับ erosion ถ้าหาก SE ของเรามีขนาดใหญ่ขึ้นมากเท่าไหร่ก็ยิ่งทำให้เพิ่มปริมาณข้อมูลของขอบรูปมากขึ้นเท่านั้น

Image after dilation

ยกตัวอย่างการใช้ประโยชน์ของ dilation ก็เช่นถ้าหากเราภาพที่แสกนตัวหนังสือขึ้นมา มีภาพๆนึงที่ element ของรูปภาพควรจะต่อกัน แต่ดันขาดหายไป เราสามารถใช้ dilation เพิ่มขนาด element ในภาพให้ต่อกันได้

Opening คือการทำ erosion ก่อนแล้วจึงตามด้วย dilation. แล้วการทำ Opening นั้นช่วยเราทำอะไรได้บ้างละ? ยกตัวอย่างเช่นการทำ Opening จะเป็นการช่วยในการลบข้อมูลที่เป็น noise ต่างๆในรูปของเรา โดยการทำ erosion จะทำให้ลดขนาดข้อมูลในภาพ จากนั้นจะทำการ dilation เพื่อขยายภาพกลับมาให้มีขนาดเท่าเดิม

Image after opening

Closing จะตรงข้ามกับ opening โดย closing จะเป็นการทำ dilation ก่อนแล้วจึงตามด้วย erosion. ซึ่งการ closing จะช่วยในการเติมเต็มจุดข้อมูลที่ขาดหายไปของรูปภาพ โดยการทำ dilation จะทำให้ลดขนาดข้อมูลในภาพ จากนั้นจะทำการ dilation เพื่อขยายภาพกลับมาให้มีขนาดเท่าเดิม

Image after closing

Hit or Miss เป็น operation ที่มีเป้าหมายในการหาตำแหน่งของ element ว่ามีอยู่ในรูปภาพต้นฉบับหรือเปล่า โดยวิธีนี้เราจะใช้ SE สองแบบ อันแรกคือ SE ที่เราต้องการหา และอันที่สองคือขอบที่ได้จาก SE อันใหญ่ลบกับ SE อันแรก จากนั้นนำรูปต้นฉบับไป erosion กับ SE อันแรกเราจะได้ตำแหน่งของ element ที่ใหญ่กว่าหรือเท่ากับ element ที่ต้องการ จากนั้นนำภาพต้นฉบับทำ complement มาทำ erosion กับ SE อันที่สองเราจะได้ตำแหน่งของ element ที่เล็กกว่าหรือเท่ากับ element ที่ต้องการ ท้ายสุดเรานำภาพทั้งสองภาพนี้มา intersection ก็จะเหลือแค่ตำแหน่ง element ที่ต้องการ

Hit-or-Miss Operation

Interesting Morphological Algorithm

หลังจากที่เราได้รู้โอเปอเรชั่นพื้นฐานแล้ว เราลองมานำโอเปอร์เรชั่นที่เรียนมาสร้าง ฺBasic Morphological Algorithm กันดีกว่า โดยอัลกอริทึ่มเหล่านี้ล้วนมีประโยชน์อย่างมากในการทำ image processing พื้นฐาน สำหรับบทความนี้เราจะยกตัวอย่างเฉพาะ Algorithm พื้นฐานที่น่าสนใจ

Boundary Extraction คือการหาขอบของรูปภาพนั้น โดยวิธีการก็คือการนำภาพต้นฉบับของเราไปลบกับภาพต้นฉบับที่โดนกร่อนลงมาจากการทำ erosion เราก็จะได้ขอบของภาพนั้นเอง

Boundary Extraction

Hole Filling คือการทำเติมเต็มช่องว่างของ element ในรูปภาพ โดยวิธีการก็คือให้เริ่มจากการเลือกตำแหน่ง pixel ในช่องว่างหนึ่งจากนั้นทำการ dilation เพื่อเพิ่มพื้นที่รอบข้าง pixel นั้นและจากนั้นทำการ intersection กับภาพต้นฉบับที่ผ่านการ complement ซึ่งจะทำให้ pixel ที่ผ่านการ dilation เหลือแค่ข้อมูลที่อยู่ภายในช่องว่างเท่านั้น และเราก็จะทำการวนลูปแบบนี้ไปเรื่อยๆจนช่องว่างเติมเต็มหมด ซึ่งท้ายสุดเราจะได้ภาพสองภาพก็คือภาพที่ไม่มีขอบแต่มีช่องว่างที่ถูกเติมเต็ม กับภาพที่มีช่องว่าง จากนั้นเรานำภาพทั้งสองมายูเนี่ยนกัน ก็จะได้ภาพต้นฉบับที่ถูกเติมเต็มช่องว่าง

Hole Filling

Thinning เป็นการทำให้ element นั้นผอมลงนั้นเอง โดย thinning จะต้องใช้ SE หลายรูปแบบ โดยที่ทั่วไปใช้จะมีอยู่ประมาณ 8 แบบ วิธีการทำต่อหนึ่งภาพคือการนำภาพต้นฉบับมาทำการ thinning ด้วย SE ทีละแบบพอทำเสร็จแบบนึงก็ทำต่อกับแบบอื่นๆไปเรื่อยๆ โดยการทำ thinning แต่ละ SE คือการนำภาพต้นฉบับลบด้วยภาพที่ทำการ Hit-or-Miss ของ SE นั้นๆ

thinning

ก็จบกันไปแค่นี้สำหรับการแนะนำ Morphological Image Processing ให้รู้จักกัน จริงๆยังมีอีกหลายๆ Algorithm ที่ยังไม่ได้พูดถึงเช่น Convex Hull, Thickening, Skeletons, Reconstruction, Top-hat, Bottom-hat และอื่นๆ ไว้ถ้าหากมีโอกาสเมื่อไหร่จะมาเขียนแยกในอีกบทความนึงละกันนะครับ

THANK YOU

Reference

Digital Image Processing, 3rd edition

Thinning algorithm

--

--

Sornpraram Xu
Super AI Engineer

Startup Enthusiast. Robotics and AI Engineer. Passionate in Business and Technology