01204483 Image Processing — Topic 08, Fourier Transforms

Nyquist & Aliasing — ทำไมสุ่มตัวอย่างไม่พอ ถึง "จำผิดความถี่"

สุ่มตัวอย่าง (sample) สัญญาณที่ความถี่สูงเกินครึ่งหนึ่งของอัตราสุ่ม แล้วจุดตัวอย่างที่ได้จะ เหมือนกันเป๊ะกับสัญญาณความถี่ต่ำกว่าอีกตัวหนึ่งเสมอ — ไม่มีทางแยกออกจากกันได้อีกจากตัวอย่างเพียงอย่างเดียว นี่คือ aliasing — ทางแก้คือกรองความถี่สูงทิ้งก่อนสุ่ม ไม่ใช่แก้ทีหลัง

เลือกโดเมน

อัตราสุ่มตัวอย่าง fs กำหนด ความถี่ Nyquist = fs/2 — ความถี่สูงสุดที่ยังสุ่มแล้วไม่กำกวม

ถ้าความถี่สัญญาณจริง f ≤ Nyquist → ปลอดภัย จุดตัวอย่างที่ได้แทนสัญญาณนี้ได้แบบไม่กำกวม

ถ้า f > Nyquist → aliased — จุดตัวอย่างที่ได้จะเหมือนกันเป๊ะกับสัญญาณความถี่ต่ำกว่าอีกตัว (apparent frequency) คำนวณจาก falias = |f − round(f/fs)·fs|

เรียกว่า "frequency folding" — ความถี่เหมือนสะท้อนกลับรอบเส้น Nyquist ซ้ำไปเรื่อย ๆ ทุกครึ่งของ fs

เมื่อ alias แล้วกู้คืนไม่ได้ — จุดตัวอย่างไม่พกข้อมูลว่า "แท้จริงมาจากความถี่ไหน" เหลืออยู่เลย นี่คือเหตุผลที่ต้องกรองความถี่สูงทิ้งก่อนสุ่ม ไม่ใช่แก้ทีหลัง

ลองลาก f ผ่านเส้น Nyquist ที่ข้อ 2 ดูเส้นโค้งเสมือน (aliased) โผล่มาทับเส้นเดิมพอดีที่จุดตัวอย่างทุกจุด

1 · ตั้งค่าความถี่สัญญาณ (f) และอัตราสุ่ม (fs)

300 Hz
1000 Hz

2 · สัญญาณจริง vs จุดตัวอย่าง vs สัญญาณเสมือน (ถ้า alias)

เส้นทึบ = สัญญาณจริงต่อเนื่อง, จุด = ตัวอย่างที่สุ่มได้จริง, เส้นประ = สัญญาณความถี่ต่ำกว่าที่ให้จุดตัวอย่างชุดเดียวกันเป๊ะ (โผล่เฉพาะตอน alias)

สัญญาณจริง (ต่อเนื่อง) สัญญาณเสมือน (aliased)

Frequency folding — f สะท้อนรอบเส้น Nyquist อย่างไร

Nyquist

ภาพก็มี "ความถี่" เหมือนสัญญาณเสียง — ลวดลายที่ซ้ำถี่ ๆ (ลาย, หมากรุก, เส้นขนาน) คือความถี่เชิงพื้นที่สูง

การลดขนาดภาพ (downsample) คือการลด sample grid — grid ใหม่ก็มี Nyquist limit ของตัวเอง เท่ากับครึ่งหนึ่งของความหนาแน่น sample ใหม่

ถ้า downsample แบบสุ่มจุดตรง ๆ โดยไม่กรองก่อน ลวดลายที่ถี่เกิน Nyquist ใหม่จะพับกลับมาเป็นลายผิด ๆ (moiré) ที่ไม่มีอยู่ในภาพจริง

Anti-aliasing = เบลอ (low-pass) ก่อน downsample เสมอ — ตัดความถี่ที่ grid ใหม่แสดงไม่ได้ทิ้งไปตั้งแต่ต้น แทนที่จะปล่อยให้มันพับกลับมาเป็นลายหลอน

ภาพทดสอบด้านล่างมี 4 โซนความถี่ต่างกัน (ลายตั้ง/นอน/เฉียงไล่ระดับ + หมากรุกถี่คงที่) — เห็นความแตกต่างชัดเจนระหว่างโซนที่ยัง "ปลอดภัย" กับโซนที่เริ่ม alias

ลองเพิ่ม downsample factor แล้วดู moiré โผล่ในภาพกลาง จากนั้นเพิ่ม blur sigma ดูภาพขวาเรียบลงจนลายหลอนหายไป

1 · ตั้งค่า Downsample Factor และ Blur (Anti-alias)

1.5

Nyquist limit ของ grid หลัง downsample ×k คือ 1/(2k) รอบ/พิกเซล — สูงกว่านี้จะ alias ถ้าไม่กรองก่อน

2 · ต้นฉบับ vs Downsample ตรง ๆ (Alias) vs เบลอก่อน Downsample (Anti-alias)

ต้นฉบับ (200×200)
Downsample ตรง ๆ — ไม่กรอง (alias)
เบลอก่อนแล้วค่อย Downsample (anti-alias)

ทั้งสามภาพแสดงที่ขนาดเท่ากัน (ขยายกลับด้วย nearest-neighbor) เพื่อเทียบลวดลายที่เกิดขึ้นได้ตรง ๆ