Morphological Filter
การศึกษาการทำ Morphological Filter ใน Image processing
การศึกษาการทำ Morphological Filter ใน Image processing
Hit - บริเวณที่ structuring elementตัดกับส่วนใดส่วนหนึ่งของpixel บนรูปภาพ โดยจะเป็นไปตามสัญลักษณ์ \(\left \{ y:y=x+s,s\in S \right \}\subset I \)โดยหมายถึง S hits I ที่ x
Fit - บริเวณที่ structuring elementครอบทับทุกส่วนของpixel บนรูปภาพ โดยจะเป็นไปตามสัญลักษณ์ \(\left \{ y:y=x-s,s\in S \right \}\cap I\neq \oslash \) โดยหมายถึง S fits I ที่ x
Miss - บริเวณที่ structuring elementไม่ตัดกับส่วนใดส่วนหนึ่งของpixel บนรูปภาพ โดยจะเป็นไปตามสัญลักษณ์ \(\left \{ y:y=x-s,s\in S \right \}\cap I= \oslash\) โดยหมายถึง S misses I ที่ x โดยภาพด้านล่างจะแสดง hit, miss และ fit ของภาพที่ได้จาก structuring element ที่กำหนด
ในบทนี้เราได้สร้าง structuring element เป็น 4 แบบ คือ circle, diamond, donut และ square
Dilation เป็นวิธีการขยายภาพโดยจะเป็นการเพิ่มจำนวน pixel บนภาพโดยจะเป็นไปตามสัญลักษณ์ $$ A\oplus B = \left \{ x \mid (B)_x\cap A\neq \oslash \right \} $$ โดยที่ B เป็น structuring element หากจะอธิบาอย่างง่ายก็คือ การดู pixel แต่ละ pixel ของภาพ หากมีค่าเป็น 0 ก็จะไม่เกิดอะไรขึ้น แต่หากจุดนั้นมีค่าเป็น 1 ก็จะนำ origin ของ structurin element ไปวางบน pixel นั้น เช่น ให้ $$ A = \begin{bmatrix}1 &0 &0 &0 &1 \\ 0 &1 &0 &0 &1 \\ 0 &0 &0 &0 &0 \\ 0 &0 &1 &0 &1 \\ 0 &0 &0 &0 &0 \end{bmatrix} $$ และให้ $$ B = \begin{bmatrix}0 &1 &0 \\ 1 &1 &1 \\ 0 &1 &0 \end{bmatrix} $$ จะได้ภาพใหม่เป็น $$ \begin{bmatrix}1 &1 &0 &1 &1 \\ 1 &1 &1 &1 &1 \\ 0 &1 &1 &0 &1 \\ 0 &1 &1 &1 &1 \\0 &0 &1 &0 &1 \end{bmatrix} $$
Erosion เป็นวิธีการย่อภาพโดยจะทำการลบ pixel ที่ขอบของภาพออก โดยจะเป็นไปตามสัญลักษณ์ $$ A \ominus B = \left\{ x \mid (B)_x\subseteq A \right\} $$ โดยที่ A เป็นภาพ และ B เป็น structuring element หากจะอธิบายอย่างง่ายก็คือ การนำจุด origin ของ structuring element ไปวางที่ pixel ภาพที่สนใจ และหากทุกจุดที่เป็น 1 บน structuring element เหมือนกับบนภาพ เราจะให้ pixel นั้นบนภพมีค่าเป็น 1 แต่หากไม่ใช่ จะให้จุดนั้นมีค่าเป็น 0 เช่น หากให้ภาพ $$A = \begin{bmatrix}1 &0 &0 &0 &1 \\ 0 &1 &1 &0 &1 \\ 1 &1 &1 &1 &0 \\ 1 &1 &1 &0 &1 \\ 1 &1 &1 &1 &1 \end{bmatrix} $$ และ structuring element $$B = \begin{bmatrix}0 &1 &0 \\ 1 &1 &1 \\ 0 &1 &0 \end{bmatrix}$$ เมื่อทำการ erosion จะได้ภาพใหม่คือ $$\begin{bmatrix}0 &0 &0 &0 &0 \\ 0 &0 &0 &0 &0 \\ 0 &1 &1 &0 &0 \\ 0 &1 &0 &0 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix}$$
Video 1 : แสดงผลการประมวลผลภาพจาก AVI file แสดงผลการทำ Dilation ด้วยการผ่าน Structuring Element แบบต่างๆ
Video 2 : แสดงผลการประมวลผลภาพจาก AVI file แสดงผลการทำ Erosion ด้วยการผ่าน Structuring Element แบบต่างๆ
Video 3 : แสดงผลการประมวลผลภาพจากกล้อง webcam แสดงผลการทำ Dilation ด้วยการผ่าน Structuring Element แบบต่างๆ
Video 4 : แสดงผลการประมวลผลภาพจากกล้อง webcam แสดงผลการทำ Erosion ด้วยการผ่าน Structuring Element แบบต่างๆ
วิธีการ Morphogical เป็นการปรับปรุงภาพที่เป็นแบบขาวดำ หรือ BWโดยวิธีการ Dilation และ Erosion จะทำให้ภาพมีความแตกต่างกัน โดย Dilation จะเป็นการขยายภาพให้มีขนาดใหญ่ขึ้นและอาจมีการอุดรูหรือลดขนาดรูที่เกินขึ้นในภาพ แต่ Erosion นั้นจะเป็นการลดขนาดภาพจากขอบของภาพหรืออาจจะลบ pixel ที่อาจะเป็น noise ในภาพออก จะเห็นได้ดัง Results ที่้ผ่านมา และนอกจากนี้การทำ Dlation และ Erosion นั้น ภาพที่ได้ก็ยังขึ้นอยู่กับ structuring element ทั้งชนิดของ structuring element หรือขนาดของมัน โดยหากมีขนาดใหญ่ ภาพที่ไต้ก็จะมีการขยายมากหรือมีการลดขนาดมากกว่าภาพที่ใช้ structuring element ขนาดเล็ก
ในการทำ Erosion และ Dilation สามารถนำไปใช้ในการปรับปรุงภาพถ่ายได้ โดยจะต้องทำการศึกษาวิธีการในขั้นต่อๆไปโดยจะเป็นการใช้ทั้ง Dilation และ Erosion ทั้งคู่ในการปรับปรุงภาพ และการเลือกใช้ structuring element ทั้งชนิดและขนาดก็ส่งผลต่อภาพได้ ดังนั้นจึงควรเลือกใช้ structuring element ให้เหมาะสม เช่น หากทำ Erosion ด้วย structuring element ที่มีขนาดใหญ่เกินไปก็อาจะทำให้ภาพสูญเสียรายละเอียดมากเกินไป ภาพใหม่ที่ได้ก็อาจมีการผิดเพี้ยนไป
จากการที่ทางกลุ่มได้ทำการศึกษาเกี่ยวกับ Morphological filter ที่ใช้ใน image procrssing ครั้งนี้ สามารถนำไปประยุกต์ใช้กับภาพที่มี pixel สูงหรือต่ำเกินไป จนไม่สามารถมองเห็นภาพที่แท้จริงได้ Morphological filter จะช่วยให้ภาพนั้นๆชัดเจนเด่นชัด เห็นเป็นรูปเป็นร่างขึ้นมา เพียงแต่ในครั้งนี้จะเป็นการใช้งานเบื้องต้น จะมีการใช้งานที่ซับซ้อนและได้ผลดีในครั้งต่อไป
Source code is available on Github