구혼
디컨 볼 루션 (즉, 열화 연산자는 선형이고 시간 / 공간 불변)에는 많은 방법이 있습니다.
그들 모두는 많은 경우에 문제가 병에 걸렸다는 사실을 다루려고 노력합니다.
더 나은 방법은 복원 할 데이터 모델에 정규화를 추가하는 방법입니다.
통계 모델 (이전) 또는 모든 지식 일 수 있습니다.
이미지의 경우 좋은 모델은 그라디언트 조각이 매끄 럽거나 희소합니다.
그러나 답을 위해 간단한 매개 변수 접근 방식이 필요합니다.-모델에서 복원 된 데이터와 측정 값 사이의 최소 제곱 오차를 최소화합니다.
모델
최소 제곱 모델은 간단합니다.
데이터의 함수 인 목적 함수는 다음과 같습니다.
f(x)=12∥h∗x−y∥22
최적화 문제는 다음과 같습니다.
argminxf(x)=argminx12∥h∗x−y∥22
여기서 는 복원 할 데이터이며 는 Blurring Kernel (이 경우 가우스)이고 는 지정된 측정 세트입니다.
모델은 컨볼 루션의 유효한 부분에 대해서만 측정 값이 제공된다고 가정합니다. 즉, 및 이면 여기서 입니다.xhy
x∈Rnh∈Rky∈Rmm=n−k+1
이것은 유한 공간에서의 선형 연산이므로 행렬 형식을 사용하여 작성할 수 있습니다.
argminxf(x)=argminx12∥Hx−y∥22
여기서 은 컨볼 루션 행렬입니다.H∈Rm×n
해결책
최소 제곱 솔루션은 다음과 같이 제공됩니다.
x^=(HTH)−1HTy
알 수 있듯이 행렬 반전이 필요합니다.
적절히이 문제를 해결하는 능력은 운전자의 상태 번호에 따라 따르는 . HTHcond(H)=cond(HTH)−−−−−−−−−−√
조건 번호 분석
이 조건 번호 뒤에 무엇이 있습니까?
Linear Algebra를 사용하여 대답 할 수 있습니다.
그러나 더 직관적 인 접근 방식은 주파수 영역에서 생각하는 것입니다.
기본적으로 열화 연산자는 일반적으로 고주파의 에너지를 감쇠시킵니다.
이제 주파수에서 이것은 기본적으로 요소 별 곱셈이기 때문에, 역 필터에 의해 요소별로 나누는 쉬운 방법이라고 할 수 있습니다.
글쎄, 그것은 위에서 한 일입니다.
필터가 실제로 에너지를 0으로 감쇠시키는 경우 문제가 발생합니다. 그렇다면 우리는 실제 문제가 있습니다 ...
이것은 기본적으로 조건 번호가 알려주는 것입니다. 일부 주파수는 다른 주파수에 비해 얼마나 세게 감쇠 되었습니까?
위에서 가우시안 필터 STD 파라미터의 함수로 조건 번호 ([dB] 단위 사용)를 볼 수 있습니다.
예상 한 바와 같이, STD가 높을수록 LPF가 강하다는 것을 의미하므로 STD가 높을수록 조건 수가 나빠집니다.
수치 솔루션
가우시안 블러 커널의 앙상블이 만들어졌습니다.
매개 변수는 , 및 입니다.
데이터는 무작위이며 노이즈가 추가되지 않았습니다.n=300k=31m=270
MATLAB에서 선형 시스템은 pinv()
SVD 기반 Pseudo Inverse와 \
연산자 를 사용 하여 해결되었습니다 .
보시다시피 SVD를 사용하면 솔루션이 예상보다 훨씬 덜 민감합니다.
왜 오류가 있습니까?
솔루션보기 (STD가 가장 높은 경우) :
보시다시피 시작과 끝을 제외하고 신호가 매우 잘 복원됩니다.
이것은 Valid Convolution을 사용하기 때문에 샘플에 대해서는 거의 알려주지 않습니다.
소음
노이즈를 추가하면 상황이 다르게 보일 것입니다!
이전에 결과가 좋았던 이유는 MATLAB이 데이터의 DR을 처리하고 조건 수가 많더라도 방정식을 풀 수 있기 때문입니다.
그러나 큰 조건 수는 역 필터가 일부 주파수를 강하게 증폭 (강한 감쇠를 반전시키기 위해)한다는 의미입니다.
노이즈가 포함되어 있으면 노이즈가 증폭되고 수복물이 나빠집니다.
위에서 볼 수 있듯이 이제 재구성이 작동하지 않습니다.
요약
Degradation Operator를 정확히 알고 SNR이 매우 좋은 경우 간단한 디컨 볼 루션 방법이 작동합니다.
디컨 볼 루션의 주요 문제는 Degradation Operator가 얼마나 자주 주파수를 감쇠시키는 지입니다.
복원하기 위해 더 많은 SNR이 감쇠 될수록 감쇠됩니다 (이것은 기본적으로 Wiener Filter 의 아이디어입니다 ).
0으로 설정된 주파수는 복원 할 수 없습니다!
실제로 안정적인 결과를 얻으려면 몇 가지 선행 사항을 추가해야합니다.
코드는 내 StackExchange 신호 처리 Q2969 GitHub 리포지토리 에서 사용할 수 있습니다 .