พารามิเตอร์ตัวกรอง Low-pass สำหรับการสุ่มตัวอย่างภาพ


11

ฉันต้องลดขนาดรูปภาพในปัจจัยของแนวนอนและแนวตั้ง ( , < )s y s x s y 1sxsysxsy1

ฉันต้องการใช้ตัวกรองความถี่ต่ำก่อนการสุ่มตัวอย่างn×m

ฉันควรตรวจสอบพารามิเตอร์ low-pass filter (และแบบเกาส์ ) จะได้รับมันเป็นหน้าที่ของและ ?σ s x s yn,mσsxsy

โดยเฉพาะผมที่น่าสนใจในกรณีที่{2}sx=sy=1/2


คำถามที่เกี่ยวข้องกับ [คนที่ถามที่นี่] [1] [1]: stackoverflow.com/questions/3149279/…
isrish

1
ขอบคุณ แต่คำถามนี้ไม่ได้เกี่ยวกับวิธีการกำหนดพารามิเตอร์ตัวกรองเป็นฟังก์ชั่นของปัจจัยการลดขนาด
Ben-Uri

คุณต้องการกรองเท่าไหร่ เป้าหมายของคุณคืออะไร

1
ฉันต้องการใช้ตัวกรองความถี่ต่ำก่อนที่จะทำการสุ่มตัวอย่างเพื่อหลีกเลี่ยงการใช้นามแฝง ฉันต้องการรักษาข้อมูลให้มากที่สุดโดยไม่ใช้นามแฝง
Ben-Uri

1
คุณต้องดูที่การแปลงฟูริเยร์ของตัวกรองเพื่อทราบว่าจะตัดความถี่ aliasing ได้ดีเพียงใดในขณะที่รักษาความถี่ต่ำกว่าขีด จำกัด Nyquist ของผลลัพธ์ตัวอย่าง การเปลี่ยนแปลงแบบเกาส์เซียนเป็นแบบเกาส์อื่นซึ่งหมายความว่าไม่มีการตัดที่คมชัด มีตัวเลือกที่ดีกว่าเกือบตลอดเวลา
Mark Ransom

คำตอบ:


4

คุณต้องคิดถึงการเปลี่ยนแปลงความถี่ของ 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 ของภาพตัวอย่างลง


ถูกต้อง แต่ฉันจะแปลสิ่งนี้เป็นเคอร์เนล convolution โดยสิ้นเชิงได้อย่างไร (นี่เป็นคำถาม)
Ben-Uri

ดูการแก้ไข pls ...
NoNameNo

ขอบคุณ แต่ยังมีสูตรค้นหา sigma เป็นฟังก์ชันของความถี่สูงสุดที่ควรอยู่ในผลลัพธ์ผลลัพธ์หรือไม่
Ben-Uri

ฉันไม่รู้สูตรใด ๆ
NoName ไม่มี

1

มันถูกแล้วชี้ให้เห็นว่าและจะได้รับเลือกขึ้นอยู่กับ\m σnmσ

ฉันใช้เวลาคิดเกี่ยวกับวิธีเลือกดีที่สุด นี่คือการพิจารณาของฉัน tl; dr:บางทีฉันอาจทำผิดพลาด แต่ดูเหมือนจะเป็นทางเลือกที่ดีสำหรับการสุ่มตัวอย่างตามปัจจัยที่ 2σ 23.37σσ23.37


0

หากคุณลดขนาดใหญ่ (เช่น 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

หากคุณเล่นไปแล้วด้วยวิธีการแก้ไขหลายวิธีและวิธีนี้ไม่ได้ผลโปรดโพสต์ภาพตัวอย่างแหล่งที่มาและภาพตัวอย่างผลลัพธ์ที่แสดงถึงข้อบกพร่อง เราจะต้องใช้สิ่งนี้เพื่อวินิจฉัยปัญหาและลองแก้ปัญหาให้ดี


โปรดสังเกตว่าในขณะที่มันใช้งานได้อย่างรวดเร็วการเฉลี่ยพิกเซลไม่ใช่โซลูชันที่เหมาะสมที่สุดสำหรับคุณภาพ การเฉลี่ยพิกเซลอย่างมีประสิทธิภาพใช้ฟิลเตอร์ rect ในพื้นที่ความถี่นี้เทียบเท่ากับการคูณด้วยฟังก์ชัน sinc ที่แกว่งด้วยศูนย์วกที่ศูนย์ประสานเสียงของ Nyquist มีสองปัญหา: 1. มันลดทอนความถี่สูง แต่ไม่มาก 2. มันกลับเฟสที่กลีบด้านอื่น ๆ ทั้ง (1) และ (2) สามารถมีส่วนร่วมในนามแฝง
ท้อง

0

ฉันไม่มีคำตอบที่ดีสำหรับคุณ แต่นี่คือ 2 ตัวเลือกที่คุณสามารถลองได้:

  • ในวิสัยทัศน์คอมพิวเตอร์นี้ปัจจัย rescaling มักจะจัดการโดยใช้ตัวกรอง Gaussian ของความกว้าง (พิกเซล) ระหว่างวันที่ 5 และ 9 คุณสามารถค้นหาที่สอดคล้องของเกาส์เพราะพิกเซลกว้างเป็นคลาสสิกเท่ากับ\3 σσ3σ
  • หากคุณยินดีที่จะทำการคำนวณการสุ่มตัวอย่างสัญญาณอย่างละเอียดแล้วทำไมไม่ใช้การแปลงฟูริเยร์? ใช้ FFT ของภาพเก็บเฉพาะส่วนย่อยที่สอดคล้องกับขนาดเป้าหมายของคุณและกลับด้านการแปลง วิธีนี้จะใช้ตัวกรองการลบรอยหยักบนสเปกตรัมของคุณ หากมีสิ่งประดิษฐ์มากเกินไป (ระลอกเสียงกริ่ง) สำหรับคุณจากนั้นให้นำไปใช้กับสเปกตรัมของตัวกรอง Gaussian ที่มีความกว้างสอดคล้องกับขนาดเป้าหมายของคุณ

0

สำหรับเคสเคอร์เนล Gaussian แบบคลาสสิกในรูปแบบ 2D เป็นรูปแบบ: [1,2,1]T[1,2,1]s=1/2

[1,2,1]T[1,2,1]

คุณผิด. คุณลืมค่าอัตราส่วน 0.25 หรือไม่? ... และถ้าเป็นเช่นนั้นนี่เป็นตัวเลือกทั่วไปสำหรับ s = 1/2 ไม่ใช่ 1 / sqrt (0.5)
Ben-Uri

ความคิดเห็นใด ๆ เกี่ยวกับการใช้ของ @ Ben-Uri ระบบกำลังทำเครื่องหมายโพสต์นี้ว่ามีคุณภาพต่ำเนื่องจากความยาว โปรดพิจารณาแก้ไขหรือลบ
Peter K.

1
@PeterK - ผมคิดว่าเบนยูริเป็นความสับสนกับs 2ss2
nbubis

ฉันคิดว่าคุณกำลังใช้สำหรับเครื่องชั่ง (เหมือนที่ฉันใช้ในคำถามของฉัน) คุณใช้สำหรับ Gaussian ? ฉันถามว่าเป็นหน้าที่ของปัจจัยลดระดับ ( ) คืออะไรและฉันไม่เห็นว่าโซลูชันของคุณแก้ปัญหาได้อย่างไร s σ σ s x , s Yssσσsx,sy
Ben-Uri
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.