รู้จักกับ Image Convolution

Convolution เป็น operation หนึ่งพบได้บ่อยในการทำงาน image processing  โดยเสนอการคูณ matrix (หรือ array) 2 matrix ด้วยกันเพื่อให้ได้ผลลัพธ์เป็น matrix ใหม่

ในงานด้าน image processing ด้วย matrix ตัวแรกหมายถึง input image ที่เป็น gray scale image และ matrix ตัวที่สองเรียกว่า kernel จะมีขนาดเล็กว่า input image มาก


หมายเหตุ  สัญญลักษณ์ *  แทนการทำ convolution


ถ้ากำหนดให้ Input Image มีขนาด M x N (row x column) และ  kernel มีขนาด  m x n แล้ว จะได้ Output Image ที่มีขนาด M - m + 1 x N - n +1  ค่าของ element ของ Output Image (O) ณ ตำแหน่งใดๆ หาได้จาก

\( O_{i,j} = \sum_{k=1}^{m}\sum_{l=1}^{n}I_{(i+k-1,j+l-1)}\times {K_{k,l}} \)


เช่น ถ้า K แทน kernel matrix ขนาด (2 x 3) , Input Image มีขนาด (6 x 9) ค่าของ O ที่ตำแหน่ง (5,7) หาได้จาก

\( O_{5,7} = \sum_{k=1}^{2}\sum_{l=1}^{3}I_{(i+k-1,j+l-1)}\times {K_{k,l}} \)
\( O_{5,7} = (I_{5,7} \times K_{1,1}) + (I_{5,8} \times K_{1,2}) + (I_{5,9} \times K_{1,3}) + (I_{6,7} \times K_{2,1}) + ( I_{6,8} \times K_{2,2}) +(I_{6,9} \times K_{2,3}) \)

ขั้นตอนในการทำ Convolution นั้นจะทำการเคลื่อน Kernel แบบ Sliding Windows บน Input Image โดยทั่วไปจะเริ่มจากซ้ายไปขวา บนลงล่าง


























ความคิดเห็น