01204483 Image Processing — Topic 05, Edge Detection
ไล่เหตุผลทีละขั้น: ทำไมต้อง blur ก่อนหาขอบ → รวม Gaussian (LPF) กับ Laplacian (HPF) เป็น operator เดียวได้อย่างไร → ทำไมไม่ต้องสนทิศทางแบบ Sobel (เฉพาะ 2D) → และสุดท้าย LoG คืออนุพันธ์อันดับ 2 ของ Gaussian โดยตรง — เริ่มดูแบบ 1D ก่อน (เข้าใจง่ายกว่า) แล้วค่อยดู 2D
แสดงแบบ
Laplacian (อนุพันธ์อันดับ 2) เป็น High-Pass Filter — ขยาย noise (ความถี่สูง) แรงมาก ถ้าไม่ blur (Low-Pass) ก่อน ผลลัพธ์จะเป็น noise ล้วน ไม่ใช่ขอบจริง
Convolution มีสมบัติการรวม (associative): Laplacian(Gaussian * สัญญาณ) = (Laplacian * Gaussian) กับสัญญาณ — รวม kernel สองตัวเป็นตัวเดียวได้ล่วงหน้า ลองเอาเมาส์ชี้บนกราฟ/ภาพในข้อ 2 เพื่อดูค่าจริงของการคำนวณ
Laplacian ใน 2D (∇² = ∂²/∂x² + ∂²/∂y²) เป็น operator isotropic ไม่ต้องแยก Gx/Gy แบบ Sobel — ข้อนี้เป็นแนวคิดเฉพาะ 2D เพราะ 1D มีมิติเดียว ไม่มีปัญหาเรื่องทิศทางตั้งแต่ต้น
สุดท้าย LoG มีสูตรปิด (closed form) จากการหาอนุพันธ์อันดับ 2 ของฟังก์ชัน Gaussian โดยตรง ไม่ต้องคำนวณ convolution ของ 2 kernel เลยก็ได้
ตั้งค่า operator (ใช้ร่วมกันทุกส่วนด้านล่าง ทั้ง 1D และ 2D)
1–4 · จากสัญญาณ ถึง Laplacian⊛Gaussian (เทียบทั้งหมดพร้อมกัน)
ทุก block ด้านล่างกรองสัญญาณต้นฉบับเส้นเดียวกัน (block 1) ด้วย operator ที่ต่างกัน — เอาเมาส์ชี้บนกราฟผลลัพธ์ของ block 4 เพื่อดูค่าจริงของ operator ที่ตำแหน่งนั้น
N=64, noise ปรับได้ด้านบน
ไม่ blur ก่อน — noise ถูกขยายจนกลบขอบจริง
เรียบขึ้นแต่ยังไม่บอกตำแหน่งขอบ (σ ปรับได้ด้านบน)
รอบเดียว = blur→derivative ทีละขั้น (associative)
ชี้เมาส์บนกราฟเพื่อดูค่า operator
5 · ทำไมข้อทิศทางไม่มีใน 1D
Sobel ต้องแยก Gx/Gy เพราะภาพมี 2 มิติ ขอบแนวตั้งกับแนวนอนตอบสนองไม่เหมือนกัน — สัญญาณ 1D มีแกนเดียว ไม่มีทิศทางให้เลือกตั้งแต่ต้น อนุพันธ์อันดับ 2 บนเส้นเดียวจึง "ครบ" อยู่แล้วโดยไม่ต้องพูดถึงทิศทางเลย ประเด็นนี้จะเห็นภาพชัดเมื่อสลับไปดูโหมด 2D (ปุ่มด้านบนสุด) ที่ต้องเทียบกับ Sobel จริง ๆ
6 · LoG = อนุพันธ์อันดับ 2 ของ Gaussian โดยตรง — 1D
สองวิธีสร้าง operator ตัวเดียวกัน: (ซ้าย) convolve Gaussian กับ [1,−2,1] แบบ discrete จากข้อ 4, (ขวา) แทนค่าสูตร G″(x;σ) ตรง ๆ — รูปทรง "Mexican hat" cross-section เหมือนกัน ต่างกันเล็กน้อยเพราะ discrete Laplacian เป็นการประมาณค่าของอนุพันธ์ต่อเนื่อง
1 · ทำไมต้อง Blur (LPF) ก่อนหาขอบ (HPF) — 2D
HPF ล้วน — noise ถูกขยายจนกลบขอบจริง
LPF ก่อน HPF — เห็นขอบจริงชัดกว่ามาก
2 · รวม Gaussian + Laplacian เป็น Operator เดียว — 2D
เอาเมาส์ชี้บนภาพ "ทำ 1 รอบ" ด้านล่างเพื่อดูค่าจริงของ operator ที่ตำแหน่งนั้น
blur → laplacian (ทีละขั้น)
convolve ด้วย kernel รวมแล้ว (Gaussian⊛Laplacian)
เอาเมาส์ไปชี้บนภาพ "ทำ 1 รอบ" ด้านบน
3 · ไม่ต้องสนทิศทาง — เทียบกับ Sobel
ภาพทดสอบมีเส้นหลายแนว (0°–360°) — Sobel ทิศเดียวตรวจจับได้ไม่ครบทุกแนว ต้องรวม Gx+Gy (2 kernel) ถึงจะครบ ส่วน LoG ใช้ kernel เดียวจับได้ทุกแนวพร้อมกัน
พลาดเส้นบางแนว
พลาดเส้นคนละแนวกับ Gx
ต้องรวม 2 kernel ถึงครบ
ครบทุกแนวในครั้งเดียว
4 · LoG = อนุพันธ์อันดับ 2 ของ Gaussian โดยตรง (สูตรปิด)
สองวิธีสร้าง operator ตัวเดียวกัน: (ซ้าย) convolve Gaussian กับ Laplacian แบบ discrete จากข้อ 2, (ขวา) แทนค่าสูตร ∇²G(x,y;σ) ตรง ๆ — รูปทรง "Mexican hat" เหมือนกัน ต่างกันเล็กน้อยเพราะ discrete Laplacian เป็นการประมาณค่าของ ∇² ต่อเนื่อง