ฉันต้องลดขนาดรูปภาพในปัจจัยของแนวนอนและแนวตั้ง ( , < )s y s x s y 1
ฉันต้องการใช้ตัวกรองความถี่ต่ำก่อนการสุ่มตัวอย่าง
ฉันควรตรวจสอบพารามิเตอร์ low-pass filter (และแบบเกาส์ ) จะได้รับมันเป็นหน้าที่ของและ ?σ s x s y
โดยเฉพาะผมที่น่าสนใจในกรณีที่{2}
ฉันต้องลดขนาดรูปภาพในปัจจัยของแนวนอนและแนวตั้ง ( , < )s y s x s y 1
ฉันต้องการใช้ตัวกรองความถี่ต่ำก่อนการสุ่มตัวอย่าง
ฉันควรตรวจสอบพารามิเตอร์ low-pass filter (และแบบเกาส์ ) จะได้รับมันเป็นหน้าที่ของและ ?σ s x s y
โดยเฉพาะผมที่น่าสนใจในกรณีที่{2}
คำตอบ:
คุณต้องคิดถึงการเปลี่ยนแปลงความถี่ของ Nyquist ระหว่างภาพทั้งสอง หากความถี่ Nyquist ของภาพต้นฉบับเป็น N ภาพที่ลดลงจะมีความถี่ Nyquist ที่ต่ำกว่า xN โดยที่ x เกี่ยวข้องกับอัตราส่วนของขนาดระหว่างภาพสุดท้ายและภาพเริ่มต้น คุณจะต้องลบความถี่เชิงพื้นที่เหล่านั้นซึ่งสูงกว่า xN ในภาพต้นฉบับก่อนที่จะทำการสุ่มตัวอย่าง
สเปกตรัมพลังงานของ Gaussian ในพื้นที่รูปภาพเป็น Gaussian ในพื้นที่ความถี่ หากเราไม่สนใจมิติที่สองสักครู่เกาส์เซียนในพื้นที่รูปภาพจะถูกกำหนดเป็น exp (-x ^ 2 / s ^ 2) โดยที่ x แทนพิกเซลของคุณ สิ่งนี้ถูกแมปกับพื้นที่ความถี่เป็น exp (-w ^ 2 * s ^ 2) โดยที่ w คือความถี่ พารามิเตอร์ sigma แสดงว่า Gaussian แบบกว้างในพื้นที่รูปภาพสอดคล้องกับ Gaussian ที่แคบในพื้นที่ความถี่
คุณต้องการเลือกพารามิเตอร์ sigma ที่ให้ค่าต่ำมากในพื้นที่ความถี่ที่ความถี่ที่สอดคล้องกับความถี่ Nyquist ของภาพตัวอย่างลง
มันถูกแล้วชี้ให้เห็นว่าและจะได้รับเลือกขึ้นอยู่กับ\m σ
ฉันใช้เวลาคิดเกี่ยวกับวิธีเลือกดีที่สุด นี่คือการพิจารณาของฉัน tl; dr:บางทีฉันอาจทำผิดพลาด แต่ดูเหมือนจะเป็นทางเลือกที่ดีสำหรับการสุ่มตัวอย่างตามปัจจัยที่ 2σ 2 ≈ 3.37
หากคุณลดขนาดใหญ่ (เช่น 2x, 3x, 4x) คุณสามารถใช้ค่าเฉลี่ยของพิกเซลเพื่อให้เกิดการลดรอยหยักได้ดี นั่นเป็นสาเหตุที่ทำให้ anti-aliasing ใช้ CPU / GPU เพิ่มเติมจำนวนมากเพื่อทำให้วิดีโอเกมดูคมชัดขึ้น
เมื่อคุณเปลี่ยนจากภาพขนาด 1000x1000 ไปเป็นภาพขนาด 707x707 (เป็นเพียงตัวอย่างสำหรับตัวประกอบสเกล) คุณถูกต้องว่าการใช้นามแฝงอาจเป็นปัญหา
โชคดีที่ปัญหานี้เป็นปัญหาที่หลายคนประสบมาแล้วและได้ทำงานเพื่อแก้ไข ในหลายกรณีการแก้ไข bicubic เป็นวิธีที่จะไป มีตัวอย่างของวิธีการแก้ไขที่แตกต่างกันที่มีลักษณะดังนี้:
http://www.compuphase.com/graphic/scale.htm
การปรับขนาดของ OpenCV มีหลายวิธีในตัว:
http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html#cv-resize
หากคุณเล่นไปแล้วด้วยวิธีการแก้ไขหลายวิธีและวิธีนี้ไม่ได้ผลโปรดโพสต์ภาพตัวอย่างแหล่งที่มาและภาพตัวอย่างผลลัพธ์ที่แสดงถึงข้อบกพร่อง เราจะต้องใช้สิ่งนี้เพื่อวินิจฉัยปัญหาและลองแก้ปัญหาให้ดี
ฉันไม่มีคำตอบที่ดีสำหรับคุณ แต่นี่คือ 2 ตัวเลือกที่คุณสามารถลองได้:
สำหรับเคสเคอร์เนล Gaussian แบบคลาสสิกในรูปแบบ 2D เป็นรูปแบบ: [1,2,1]T[1,2,1]