01204483 Image Processing — Topic 06, Corner Detection
เลื่อนหน้าต่างเล็ก ๆ ไปทุกทิศรอบจุดหนึ่ง แล้วดูว่า intensity เปลี่ยนแรงแค่ไหน — ถ้า เปลี่ยนแรงทุกทิศ = มุม, เปลี่ยนแรงทิศเดียว = ขอบ, ไม่เปลี่ยนเลย = พื้นราบ — สร้างจาก eigenvalue ของ structure tensor ซึ่งมีโครงสร้างเดียวกับ covariance matrix ใน PCA พอดี
แนวคิด Harris: เลื่อนหน้าต่างเล็ก ๆ ไปทุกทิศรอบจุด แล้ววัดว่า sum of squared difference เปลี่ยนมากแค่ไหน — มุมคือจุดที่เปลี่ยนแรงไม่ว่าจะเลื่อนไปทิศไหน
ในทางปฏิบัติ ประมาณการนี้ด้วย Structure Tensor M = Σ [Ix², IxIy; IxIy, Iy²] สร้างจาก gradient (Ix, Iy) ของทุกพิกเซลในหน้าต่าง
M มีโครงสร้างเดียวกับ covariance matrix ใน PCA พอดี — eigenvector คือแกนหลักที่ gradient กระจายตัว, eigenvalue คือ "ความแปรปรวน" ตามแกนนั้น (ลองดู scatter + วงรี PCA ที่ข้อ 2)
λ₁,λ₂ ทั้งคู่เล็ก → พื้นราบ (gradient กระจุกที่ 0 ทุกทิศ) · มีทิศเดียวใหญ่ → ขอบ (gradient เรียงเป็นเส้นตรงทิศเดียว) · ทั้งคู่ใหญ่พอกัน → มุม (gradient กระจายหลายทิศ)
ไม่ต้องคำนวณ eigenvalue ตรง ๆ ก็ได้ — ใช้ Harris response R = det(M) − k·trace(M)² แทน (เร็วกว่า เลี่ยง sqrt) แต่ให้ผลตัดสินใจแบบเดียวกัน: R≈0 พื้นราบ, R≪0 ขอบ, R≫0 มุม
ลองเอาเมาส์ชี้ตำแหน่งต่าง ๆ บนภาพที่ข้อ 2 (พื้นราบ/ขอบ/มุม) แล้วดู scatter ของ gradient เปลี่ยนรูปร่างตามตำแหน่ง จากนั้นดูแผนที่ผลลัพธ์ทั้งภาพที่ข้อ 3
1 · เลือกภาพทดสอบ
ภาพขาวดำ 220×160 พิกเซล
2 · ชี้ตำแหน่งบนภาพ ดู Structure Tensor + PCA ของ Gradient
เอาเมาส์ไปชี้ตำแหน่งต่าง ๆ บนภาพ (พื้นราบ / ขอบ / มุม) แล้วดูว่าทำไม eigenvalue ถึงตัดสินได้ว่าเป็นอะไร
เอาเมาส์ไปชี้บนภาพด้านซ้าย
3 · Harris Response ทั้งภาพ + จุดมุมที่ตรวจพบ
สีในแผนที่ R: น้ำเงิน = ขอบ (R ติดลบมาก) · เทา = พื้นราบ (R ≈ 0) · แดง = มุม (R บวกมาก)
จำนวนมุมที่ตรวจพบ (หลัง non-max suppression): —