Phương pháp tiếp cận
Có nhiều phương pháp cho Deconvolution (Cụ thể là toán tử suy biến là tuyến tính và bất biến thời gian / không gian) ngoài kia.
Tất cả trong số họ cố gắng đối phó với thực tế vấn đề là Ill Poised trong nhiều trường hợp.
Các phương pháp tốt hơn là những phương pháp thêm một số chính quy vào mô hình dữ liệu sẽ được khôi phục.
Nó có thể là mô hình thống kê (Priors) hoặc bất kỳ kiến thức nào.
Đối với hình ảnh, một mô hình tốt là mảnh mịn hoặc độ thưa của độ dốc.
Nhưng vì mục đích của câu trả lời, một phương pháp tham số đơn giản sẽ được thực hiện - -Minimizing Lỗi tối thiểu bình phương giữa dữ liệu được khôi phục trong mô hình cho các phép đo.
Mô hình
Mô hình bình phương nhỏ nhất là đơn giản.
Hàm mục tiêu là một hàm của dữ liệu được cho bởi:
f(x)=12∥h∗x−y∥22
Vấn đề tối ưu hóa được đưa ra bởi:
argminxf(x)=argminx12∥h∗x−y∥22
Trong đó là dữ liệu được khôi phục, là Hạt nhân làm mờ (Gaussian trong trường hợp này) và là tập hợp các phép đo đã cho.
Mô hình giả định các phép đo chỉ được đưa ra cho phần hợp lệ của tích chập. Cụ thể là nếu và thì trong đó .h y x ∈ R n h ∈ R k y ∈ R m m = n - k + 1xhy
x∈Rnh∈Rky∈Rmm=n−k+1
Đây là một hoạt động tuyến tính trong không gian hữu hạn do đó có thể được viết bằng Biểu mẫu ma trận:
argminxf(x)=argminx12∥Hx−y∥22
Trong đó là ma trận tích chập.H∈Rm×n
Giải pháp
Giải pháp Least Squares được đưa ra bởi:
x^=(HTH)−1HTy
Như có thể thấy nó đòi hỏi một ma trận đảo ngược.
Khả năng giải quyết vấn đề này phụ thuộc đầy đủ vào số điều kiện của toán tử tuân theo . cond ( H ) = √HTHcond(H)=cond(HTH)−−−−−−−−−−√
Phân tích số điều kiện
Điều gì đằng sau con số điều kiện này?
Người ta có thể trả lời nó bằng Đại số tuyến tính.
Nhưng theo tôi, một cách tiếp cận trực quan hơn sẽ nghĩ về nó trong Miền tần số.
Về cơ bản, toán tử suy giảm làm suy giảm năng lượng, nói chung, tần số cao.
Bây giờ, vì về tần số, đây về cơ bản là một phép nhân phần tử, người ta sẽ nói cách dễ dàng để đảo ngược nó là phân chia phần tử khôn ngoan bằng bộ lọc nghịch đảo.
Vâng, đó là những gì được thực hiện ở trên.
Vấn đề phát sinh với các trường hợp bộ lọc làm suy giảm năng lượng thực tế thành không. Sau đó, chúng tôi có vấn đề thực sự ...
Đây cơ bản là những gì mà Số điều kiện cho chúng tôi biết, một số tần số bị suy giảm so với các tần số khác.
Ở trên người ta có thể thấy Số điều kiện (Sử dụng đơn vị [dB]) là một hàm của tham số STD của Bộ lọc Gaussian.
Như mong đợi, STD càng cao thì số điều kiện càng tệ vì STD càng cao đồng nghĩa với LPF càng mạnh (Giá trị đi xuống ở cuối là các vấn đề về số).
Giải pháp số
Bộ đồng phục của hạt nhân Gaussian Blur đã được tạo.
Các tham số là , và .
Dữ liệu là ngẫu nhiên và không có tiếng ồn được thêm vào.k = 31 m = 270n=300k=31m=270
Trong MATLAB, Hệ thống tuyến tính đã được giải quyết bằng cách pinv()
sử dụng Pseudo Inverse và \
toán tử dựa trên SVD .
Như người ta có thể thấy, sử dụng SVD, giải pháp ít nhạy hơn nhiều so với dự kiến.
Tại sao có lỗi?
Nhìn vào một giải pháp (Đối với STD cao nhất):
Như người ta có thể thấy tín hiệu được phục hồi rất tốt ngoại trừ bắt đầu và kết thúc.
Điều này là do việc sử dụng Kết hợp hợp lệ cho chúng ta biết rất ít về các mẫu đó.
Tiếng ồn
Nếu chúng ta thêm tiếng ồn, mọi thứ sẽ khác!
Lý do kết quả tốt trước đây là do thực tế MATLAB có thể xử lý DR của dữ liệu và giải các phương trình mặc dù chúng có số điều kiện lớn.
Nhưng số điều kiện lớn có nghĩa là bộ lọc nghịch đảo khuếch đại mạnh (Để đảo ngược suy giảm mạnh) một số tần số.
Khi những cái đó chứa tiếng ồn, điều đó có nghĩa là tiếng ồn sẽ được khuếch đại và sự phục hồi sẽ rất tệ.
Như người ta có thể thấy ở trên, bây giờ việc tái thiết sẽ không hoạt động.
Tóm lược
Nếu một người biết chính xác Toán tử suy thoái và SNR rất tốt, các phương pháp giải mã đơn giản sẽ hoạt động.
Vấn đề chính của quá trình giải mã là mức độ khó của Toán tử suy giảm tần số.
Càng suy giảm thì càng cần nhiều SNR để khôi phục (Về cơ bản, đây là ý tưởng đằng sau Bộ lọc Wiener ).
Các tần số được đặt thành 0 không thể được khôi phục!
Trong thực tế, để có kết quả ổn định, nên thêm một số linh mục.
Mã này có sẵn tại Kho lưu trữ tín hiệu StackExchange của tôi Q2969 GitHub .