01204483 Image Processing — Topic 06, Corner Detection

Harris Corner — Eigenvalue ของ Structure Tensor บอกอะไร

เลื่อนหน้าต่างเล็ก ๆ ไปทุกทิศรอบจุดหนึ่ง แล้วดูว่า 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 ถึงตัดสินได้ว่าเป็นอะไร

4

เอาเมาส์ไปชี้บนภาพด้านซ้าย

3 · Harris Response ทั้งภาพ + จุดมุมที่ตรวจพบ

0.05
10%

Harris Response R(x,y)

จุดมุมที่ตรวจพบ (บนภาพต้นฉบับ)

สีในแผนที่ R: น้ำเงิน = ขอบ (R ติดลบมาก) · เทา = พื้นราบ (R ≈ 0) · แดง = มุม (R บวกมาก)

จำนวนมุมที่ตรวจพบ (หลัง non-max suppression):