แนวทาง
มีวิธีการมากมายสำหรับ Deconvolution (คือตัวดำเนินการสลายตัวเป็นแบบเส้นตรงและ Time / Space Invariant)
พวกเขาทั้งหมดพยายามที่จะจัดการกับความจริงที่ว่าปัญหานั้นไม่ดีในหลาย ๆ กรณี
วิธีที่ดีกว่าคือวิธีการที่เพิ่มการทำให้เป็นปกติในรูปแบบของข้อมูลที่จะกู้คืน
มันอาจเป็นแบบจำลองทางสถิติ (นักบวช) หรือความรู้ใด ๆ
สำหรับรูปภาพแบบจำลองที่ดีคือชิ้นส่วนที่ราบเรียบอย่างชาญฉลาดหรือเป็นระยะของการไล่ระดับสี
แต่เพื่อประโยชน์ของคำตอบเราจะใช้วิธีการทางพารามิเตอร์อย่างง่าย - การกำจัดข้อผิดพลาดกำลังสองน้อยที่สุดระหว่างข้อมูลที่กู้คืนในแบบจำลองไปยังการวัด
แบบ
แบบจำลองกำลังสองน้อยที่สุดนั้นง่าย
ฟังก์ชั่นวัตถุประสงค์เป็นฟังก์ชั่นของข้อมูลที่ได้รับจาก:
ฉ( x ) =12∥ h ∗ x - y∥22
ปัญหาการปรับให้เหมาะสมจะได้รับจาก:
หาเรื่องนาทีxฉ( x ) = หาเรื่องนาทีx12∥ h ∗ x - y∥22
ที่ไหน x เป็นข้อมูลที่จะกู้คืน ชั่วโมง คือเคอร์เนลเบลอ (Gaussian ในกรณีนี้) และ Yเป็นชุดของการวัดที่กำหนด
ตัวแบบจะทำการวัดค่าที่ได้รับเฉพาะส่วนที่ถูกต้องของการชักชวน คือถ้าx ∈Rn และ ชั่วโมง∈Rk แล้วก็ Y∈Rม. ที่ไหน m = n - k + 1.
นี่คือการดำเนินการเชิงเส้นในพื้นที่ จำกัด จึงสามารถเขียนได้โดยใช้แบบฟอร์มเมทริกซ์:
หาเรื่องนาทีxฉ( x ) = หาเรื่องนาทีx12∥ Hx - y∥22
ที่ไหน H∈Rm × n เป็นเมทริกซ์การโน้มน้าว
สารละลาย
โซลูชัน Least Squares นั้นมอบให้โดย:
x^=(HTH)- 1HTY
ที่สามารถเห็นได้มันต้องเมทริกซ์ผกผัน
ความสามารถในการแก้ปัญหานี้ขึ้นอยู่กับจำนวนเงื่อนไขของผู้ปฏิบัติงานHTH ซึ่งเชื่อฟัง cond( H) =cond(HTH)----------√.
การวิเคราะห์จำนวนเงื่อนไข
หมายเลขอะไรที่อยู่เบื้องหลังเงื่อนไขนี้
สามารถตอบได้โดยใช้พีชคณิตเชิงเส้น
แต่ในความคิดของฉันที่ใช้งานง่ายกว่านั้นฉันจะคิดวิธีนี้ในโดเมนความถี่
โดยทั่วไปผู้ประกอบการย่อยสลายจะลดทอนพลังงานของความถี่สูงโดยทั่วไป
ทีนี้เนื่องจากในความถี่นี่เป็นการคูณองค์ประกอบที่ชาญฉลาดใคร ๆ ก็บอกได้ว่าวิธีง่าย ๆ ในการกลับด้านก็คือการแบ่งองค์ประกอบที่ชาญฉลาดโดยตัวกรองผกผัน
มันเป็นสิ่งที่ทำข้างต้น
ปัญหาเกิดขึ้นกับกรณีที่ฟิลเตอร์ลดทอนพลังงานให้เป็นศูนย์ ถ้าอย่างนั้นเรามีปัญหาจริง ...
นี่คือสิ่งที่หมายเลขเงื่อนไขบอกเราว่าความถี่บางความถี่นั้นลดทอนลงเมื่อเทียบกับคนอื่นอย่างไร
ด้านบนจะเห็นหมายเลขเงื่อนไข (ใช้ [dB] หน่วย) เป็นฟังก์ชันของพารามิเตอร์ Gaussian Filter STD
ตามที่คาดไว้ยิ่งสูงกว่า STD ยิ่งเลวร้ายยิ่งหมายเลขเงื่อนไขเป็นสูงกว่าหมายถึง LPF ที่แข็งแกร่ง (ค่าลงไปที่ท้ายเป็นปัญหาเชิงตัวเลข)
โซลูชันเชิงตัวเลข
สร้างเคอร์เนล Gaussian Blur ทั้งหมด
พารามิเตอร์คือ n = 300, k = 31 และ m = 270.
ข้อมูลเป็นแบบสุ่มและไม่มีเสียงรบกวนเพิ่ม
ใน MATLAB ระบบเชิงเส้นได้รับการแก้ไขโดยpinv()
ใช้ SVD Pseudo Inverse และ\
ผู้ปฏิบัติงาน
อย่างที่เห็นได้ว่าการใช้ SVD นั้นมีความไวน้อยกว่าที่คาดไว้มาก
ทำไมถึงมีข้อผิดพลาด?
ดูวิธีแก้ปัญหา (สำหรับ STD สูงสุด):
ในฐานะที่เป็นหนึ่งสามารถดูสัญญาณจะถูกกู้คืนได้เป็นอย่างดียกเว้นจุดเริ่มต้นและจุดสิ้นสุด
นี่เป็นเพราะการใช้งานของ Conv Conv ที่ใช้งานได้ซึ่งบอกเราเพียงเล็กน้อยเกี่ยวกับตัวอย่างเหล่านั้น
สัญญาณรบกวน
ถ้าเราเพิ่มเสียงรบกวนสิ่งต่าง ๆ จะดูแตกต่าง!
เหตุผลที่ได้ผลดีมาก่อนเนื่องจาก MATLAB สามารถจัดการ DR ของข้อมูลและแก้สมการได้แม้ว่าพวกเขาจะมีจำนวนเงื่อนไขมาก
แต่หมายเลขเงื่อนไขที่มีขนาดใหญ่หมายถึงตัวกรองผกผันขยายอย่างมาก (ในการย้อนกลับการลดทอนแรง) ความถี่บางอย่าง
เมื่อเสียงเหล่านั้นมีเสียงหมายความว่าเสียงจะถูกขยายและการฟื้นฟูจะไม่ดี
ดังที่เห็นด้านบนตอนนี้การสร้างใหม่จะไม่ทำงาน
สรุป
ถ้าใครรู้ผู้ดำเนินการย่อยสลายอย่างแน่นอนและ SNR นั้นดีมากวิธีการแยกส่วนอย่างง่ายจะทำงานได้
ปัญหาหลักของ deconvolution คือความยากของตัวดำเนินการลดทอนความถี่
ยิ่งจำเป็นต้องใช้ SNR มากเพียงใดในการกู้คืน (โดยพื้นฐานแล้วนี่คือแนวคิดเบื้องหลังตัวกรอง Wiener )
ความถี่ที่ถูกตั้งค่าเป็นศูนย์ไม่สามารถกู้คืนได้!
ในทางปฏิบัติเพื่อให้ได้ผลลัพธ์ที่มั่นคงควรเพิ่มนักบวชบางคน
รหัสที่มีอยู่ในของฉันStackExchange การประมวลผลสัญญาณ Q2969 GitHub Repository