imfilter ใน matlab

เวลาทำ convolution ภาพด้วย Filter จะมีปัญหาในการคำนวณ pixel ที่ขอบภาพ (ทาบ filter แล้วตกขอบ)

มีวิธีแก้ปัญหาหลายวิธี:

  • ไม่คำนวณที่ pixel ขอบภาพ (จะได้ภาพผลลัพธ์เล็กลง)
  • Padding – เติมค่าสีเพิ่มที่ขอบๆ ภาพ

ใน matlab คำสั่ง imfilter สามารถกำหนดวิธี Padding ค่าสีที่ขอบภาพได้หลายวิธี มาดูตัวอย่างเลยดีกว่า

f เป็น filter ที่ให้ภาพเหมือนเดิมทุกประการ
a เป็นภาพต้นฉบับ ขนาด 2×2
เราจะทำ imfilter ด้วย filter f บนภาพ a แล้วแสดงภาพผลลัพธ์ส่วนที่ถูก pad ด้วย (option ‘full’)

f = [
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0];
a = [
1 2
3 4];

disp('Zero padding (default)')
imfilter(a, f, 'full')

disp('symmetric - mirror reflect')
imfilter(a, f, 'full', 'symmetric')

disp('replicate - nearest neighbor value')
imfilter(a, f, 'full', 'replicate')

disp('circular - assume periodic')
imfilter(a, f, 'full', 'circular')

ผลลัพธ์ที่ได้ คือภาพต้นฉบับที่โดน pad ค่าเรียบร้อยแล้ว

อ๊ะแหะๆ… บล็อกนี้ค่อนข้างเฉพาะทางหน่อยนะครับ เขียนให้เพื่อนๆ ที่เรียน Digital Image Processing ด้วยกันอ่าน… แต่อัพลงบล็อกเผื่อคนอื่นๆ ที่เรียน Image เหมือนกันจะได้ประโยชน์ด้วย🙂

1 คิดบน “imfilter ใน matlab

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s