논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Fast Motion Deblurring

[cite]10.1145/1618452.1618491[/cite]

1 Introduction

모션 블러는 일반적으로 사진에서 생기는 아티팩트로 흐릿한 이미지와 함께 이미지의 정보가 손실되어버립니다. 주로 이것은 빛을 누적시키는 센서의 방식에서 기인하고 있습니다.

모션 블러가 shift-invariant하다면, 블러 모델은 latent 이미지에 대한 모션 블러 커널의 컨볼루션으로 모델링 할 수 있습니다. 이는 디컨볼루션 작업으로 블러 효과를 제거할 수 있습니다. Non-blind 디컨볼루션 모델에서는 블러 커널이 주어진 상태에서, 블러를 없애는 것을 목적으로 하고 있지만, blind 디컨볼루션에서는 커널이 어떤지 알 수 없는 상태에서 원래의 latent 이미지를 복원하고자 하는 문제입니다. 여기에서는 하나의 이미지만을 사용하여 blind 디컨볼루션 문제를 풀어 블러 커널과 latent 이미지를 추정하는 방법을 알아보고자 합니다.

Single-image blind 디컨볼루션 문제는 데이터의 수보다 미지수의 수가 많기에 ill-posed 문제입니다. 그동안 많은 방법들이 제안되어왔지만 엄청난 계산이 필요하여 평범한 이미지 크기임에도 수분 이상 걸리곤 했습니다.

대부분의 blind 디컨볼루션 방법들은 반복적인 방법으로 모션 블러 커널과 latent 이미지를 점점 최적화하는 방법을 택하고 있습니다. 블러 커널은 추정된 latent 이미지와 블러링된 이미지로부터 계산되고, 다시 이 커널을 이용하여 latent 이미지를 추정하도록 합니다. 새로 계산된 latent 이미지는 다시 새 커널을 계산하는데 사용됩니다. 이 과정에서 큰 크기의 행렬과 벡터 연산이 수반되며 이를 다루기 위한 최적화 기법이 필요합니다.

이 논문에서는 단 몇초만에 하나의 이미지만으로 blind 디컨볼루션하여 블러링을 없애는 방법에 대해서 제안하고 있습니다. 다른 방법들과 동일한 수준의 성능을 제공하면서 수배이상 빠릅니다. C++로 구현된 코드는 1분 이내로 디블러링을 해냅니다. 이것은 기존의 Shan의 방법보다 20배 이상 빠른 결과이며, 이 방법은 GPU 구현에도 용이합니다.

Latent 이미지의 추정을 빠르게 하기 위해 반복적인 프로세스에서의 새로운 prediction step을 적용하였습니다. 추정된 latent 이미지의 강한 에지 성분의 위치를 예측하고 그 위치만을 활용하여 커널을 추정합니다. 이 방법으로 비효율적인 계산을 피하도록 하였습니다.

디컨볼루션을 위해서는 간단한 가우시안 prior를 사용하였습니다. 이는 Fourier tansform을 통하여 계산을 빠르게 할 수 있습니다.

커널 추정을 위해서는 픽셀 값을 그대로 쓰기보다는 이미지의 미분 값을 사용하였습니다. 최적화를 위해서는 conjugate gradient (CG) 을 사용하였으며, 그래디언트 계산을 위해서 Fourier transform을 사용하였습니다. 이미지 미분 값을 사용하는 것은 Fourier transform을 사용하는 횟수를 12번에서 2번으로 줄여주었으며, CG의 빠른 수렴을 보여줍니다.

2 Related Work

3 Fast Single Image Blind Deconvolution

3.1 Single Image Blind Deconvolution

모변 블러는 보통 $ B = K * L + N $ 로 모델링할 수 있습니다. $B$는 블러된 이미지, $K$는 모션 블러 커널, 혹은 point spread function (PSF), $L$은 latent 이미지입니다. $N$은 노이즈이며, $*$은 컨볼루션 연산입니다. Blind 디컨볼루션 문제에서는 B로부터 K, L을 추정해야 하는 문제로 아주 풀기 힘든 ill-posed 문제입니다.

잘 알려진 blind 디컨볼루션 방법은 $L$$K$를 반복적인 방법으로 최적화 하는 것입니다. Latent 이미지 추정과 커널의 추정 단계에서는 다음의 식으로 문제를 정의할 수 있습니다.

$$L' = \arg \min_L \{ ||B - K * L|| + \rho_L(L) \} $$

$$K' = \arg \min_K \{ ||B - K * L|| + \rho_K(K) \} $$

여기서 $ || B - K * L||$는 데이터 피팅 항으로 L2 norm이 주로 사용됩니다. $\rho_L, \rho_K$는 regularization 항입니다.

반복적인 방법의 목적은 모션 블러 커널을 정교화하기 위함입니다. 최종 디블러링 결과는 최종 커널 $K$를 이용하여 non-blind 디컨볼루션을 행하여 얻어지게 됩니다.

이전까지 제시된 반복적 방법은 두가지 속성이 잘 이루어져야 성공하게 되는데, 그것은 에지의 날카로움의 복원과 부드러운 부분의 노이즈 억제입니다. 이것들이 정확한 커널의 추정을 가능하게 해줍니다. 보통 이미지는 강한 에지를 포함하고 있기 때문에, 블러 커널은 에지의 복원을 통하여 쉽게 추정할 수 있게 됩니다. 또한 노이즈가 억제가 되어야 스무딩된 부분의 노이즈들이 데이터 텀에 영향을 적게 줄 것입니다.

이 두가지 속성을 얻기 위하여 그동안의 방법들은 비선형적인 최적화 방법을 사용하였으며, 이는 많은 계산을 필요로 하였습니다.

3.2 Fast Blind Deconvoltion

여기에서는 계산복잡도를 줄이기 위한 bind 디컨볼루션 기법들을 사용하엿습니다. 이를 위해 latent 이미지는 충분히 강한 에지를 가지고 있다고 가정하였습니다. Latent 이미지의 추정에는 복잡한 최적화 과정 대신 샤프한 에지의 복원과 노이즈 억제를 추구하도록 하였습니다. 커널 추정에 관하여는 픽셀 값을 최적화 과정에서 제외하여 속도를 향상시켰습니다.

이 방법에서는 latent 이미지 추정을 두 단계로 나누었습니다.

  1. 단순 디컨볼루션
  2. 예측

첫번째 단계에서는, 블러된 이미지 B와 커널 K가 주어졌을 때, 먼저 가우시안 prior를 이용한 단순 디컨볼루션을 이용하여 블러를 제거하여 원래 이미지 L을 추정합니다. 가우시안 prior의 특성에 의해서 L은 스무딩된 에지와 부드러운 부분에 노이즈를 가지게 됩니다.

예측 단계에서는 앞서 추정된 L에서 샤프한 에지를 복원하고 노이즈를 제거하여 더욱 정교화한 L’을 계산합니다. 결과적으로 L’은 커널 추정을 할 때, L보다 더 나은 수준의 latent 이미지를 제공하게 됩니다.

커널 추정은 CG를 이용하여 식 (2)을 풀게 됩니다. 이 과정에서 에너지 함수의 그래디언트를 계산할 일이 많이 있습니다. 일반적으로 그래디언트 계산은 큰 행렬과 벡터의 곱등을 포함하는 헤비한 계산이지만, fast Fourier transform (FFT)을 이용하여 이를 가속화할 수 있습니다. 하지만 FFT를 연속적으로 사용하려면 이미지의 경계 부분을 제대로 다루어야 합니다. 따라서 픽셀 값이 아니라 이미지의 미분 값만을 사용함으로써 이미지 경계 문제를 단순하게 바꾸면서도 FFT의 계산 숫자까지 줄였습니다.

3.3 Process Overview

알고리즘은 모션 블러 커널 K과 latent 이미지 L을 번갈아가며 정교화하는 과정으로 요약할 수 있는데 총 3가지 단계를 반복하게 됩니다.

  1. 예측
  2. 커널 추정
  3. 디컨볼루션

또한 latent 이미지 추정은 두가지 단계로, 예측과 디컨볼루션 단계로 나뉩니다. 또한 예측 단계를 반복 루프의 처음에 두어 커널 추정을 하기 위한 L의 초기값으로 사용하도록 하였습니다.

예측 단계에서는, 먼저 $L$의 그래디언트 맵 $ \{ P_x, P_y \} $을 계산합니다. 이것은 강한 에지들과 노이즈 억제를 위해 사용될 것입니다. 루프의 시작을 제외하면 예측 단계의 입력은 이전 단계에서 디컨볼루션을 통해 계속적으로 계산해온 $L$의 추정 이미지를 사용하게 됩니다.

커널 추정 단계에서는 예측된 그래디언트 맵 $ \{ P_x, P_y \} $$B$의 그래디언트 맵을 이용하여 $K$를 추정하게 됩니다.

디컨볼루션 단계에서는 $K$$B$를 이용하여 새로운 $L$을 추정하고 다음 예측단계로 넘어가게 됩니다.

$K$$L$의 추정을 더 효과적으로 하기 위하여 coarse-to-fine 스키마를 사용하엿습니다. 가장 낮은 레벨에서, $B$의 다운샘플된 버전을 이용하여 예측 단계를 초기화합니다. 최적화 과정을 통해 $L$의 마지막 추정이 끝난 뒤에는 선형 인터폴레이션을 통하여 이를 업샘플링한 뒤, 이를 다음 레벨 예측 단계의 초기값으로 사용합니다. 실험에서는 각 스케일마다 7번의 반복 과정을 거쳤습니다. 이러한 coarse-to-fine 스키마는 덜 샤프하여 찾아내지 못한 에지의 크기가 큰 블러링을 처리하는데 도움이 됩니다.

$K$$L$을 갱신 중일 때에는 $B$$L$은 그레이스케일로 변환한 이미지를 사용하엿습니다. 하지만, 최종 $K$을 얻고 난 뒤에는, $B$의 각 컬러 채널에 대하여 각각 $K$를 이용하여 디컨볼루션을 적용하여 최종적인 디블러된 이미지를 계산하였습니다.

4 Fast Latent Image Estimation

Prediction

이 단계에서는 $L$이 가지는 그래디언트를 추정하고자 합니다. 이 때, 두드러진 에지들만 남기고 나머지는 모두 0의 그래디언트를 가지도록 합니다. 결과적으로 커널 추정 단계에서는 두드러진 에지만이 커널의 최적화에 영향을 끼치게 됩니다.

여기서는 강한 에지만을 복원하기 위해서 shock filter를 사용합니다. Shock filter는 이미지 피쳐를 강조하기 위한 필터이며 블러된 스텝 신호를 샤프한 에지로 복원시켜줍니다.

$$I_{t+1} = I_t - \text{sign}(\Delta I_t)||\nabla I_t|\ dt $$

$I_t$는 시각 t에서의 이미지, $\Delta I_t, \nabla I_t$는 각각 $I_t$의 라플라시안과 그래디언트입니다. $dt$는 한 계산 단위의 시간 스텝입니다.

예측 단계는 bilateral filtering, shock filtering, 그래디언트 매그니튜드 스레숄딩 단계로 이루어져있습니다. 먼저 현재의 $L$의 추정 이미지에 bilateral filtering을 적용하여 노이즈를 억제합니다. 다음 shock filteringfmf wjrdydgkdu $L$이 가지는 강한 에지를 복원합니다. 그 결과 이미지인 $L'$는 강한 에지 뿐 아니라 노이즈 또한 강조되었을 것입니다. 따라서 $L'$의 그래디언트 $ \{ \partial L_x', \partial L_y' \} $를 계산한 다음에 스레숄딩을 거쳐 노이즈를 제거합니다. 그 결과인 $ \{ P_x, P_y \} $가 예측 단계의 최종 결과물입니다.

이 때, bilateral filter는 5 * 5 를, 지역적 $\sigma_s = 2.0$을 사용하였습니다. 범위 $\sigma_r$은 사용자 파라미터로 입력 블러된 이미지 $B$의 노이즈 레벨과 관련되어있습니다. $B$의 노이즈가 심할 수록 큰 값을 사용하면 됩니다.

Shock filter는 식 (3)을 한번 적용하였습니다.

반복적인 디블러링 과정 중 처음에는 $\sigma_r, dt$에 큰 값을 사용하여 강한 에지를 뚜렷하게 분리해낸 뒤, 반복을 계속 할 수록 0.9를 곱해 점점 작은 값들을 사용하도록 하였습니다. 실제 실험에서는 $\sigma_r = 0.5, dt = 1.0$을 초기값으로 사용하였습니다.

그래디언트의 스레숄딩 과정은 다음과 같습니다. 먼저 m * m 크기의 커널을 추정하기 위해서는 최소한 m개 방향으로의 블러된 에지에 관한 정보가 필요합니다. 먼저 각 $\partial L'$에 대하여 그래디언트 크기와 방향 에 대한 히스토그램을 생성합니다. 각도는 45도 간격으로 양자화 하였고, 서로 반대되는 방향은 하나의 방향으로 간주하였습니다. 다음 각 방향에 대하여 가장 큰 매그니튜드 중, $rm$개 픽셀 이상을 갖는 것들만을 남기고 스레숄딩해버립니다. 여기서는 $r=2$를 사용하였습니다. 이 값 또한 알고리즘을 진행하면서 많은 정보를 포함하도록 매 반복마다 0.9를 곱해주었습니다.

Deconvolution

이 단계에서는 주어진 커널 $K$와 블러된 이미지 $B$를 이용하여 latent 이미지 $L$을 추정하는 단계입니다. 이 때 에너지 함수는 다음과 같습니다.

$$f_L(L) = \sum_{\partial_*} w_* || K * \partial_* L - \partial_* B ||^2 + \alpha || \nabla L ||^2$$

여기서 $\partial_* \in \{ \partial_o, \partial_x, \partial_y, \partial_{xx}, \partial{xy}, \partial_{xy} \} $로, 각 방향에 대한 편미분 값을 나타내며, $w_* \in \{ w_0, w_1, w_2 \} $는 각 편미분에 대한 가중치, $\alpha$는 regularization 항의 가중치를 나타냅니다.

첫번째 항은 블러 모델에 대한 에너지를 나타내며, 아티팩트가 나타나는 것을 방지하기 위해 그래디언트를 사용합니다. Regularization 항은 $L$가 부드러운 그래디언트를 가지게끔 유도합니다. 위의 식은 주파수 도메인에서 나눗셈을 통하여 빠르게 최적화할 수 있으며, 이 때 단 두번의 FFT만 사용하면 됩니다. $w_*$는 Shan의 연구에 나온 값을, $\alpha=0.1$을 사용하였습니다.

위의 식의 최적화 결과는 다른 디컨볼루션 방법들보다는 썩 좋은 결과가 나오지 않습니다. 그 결과는 에지가 스무딩된거나 ringing 아티팩트를 가지고 있을 수 있습니다. 하지만 예측 단계에서는 에지를 샤픈시키고 자잘한 것들은 사용하지 않으므로 겨로가에 영향을 주지 않습니다.

Large blurs

크기가 큰 블러 때문에 예측 단계에서 샤프한 에지를 찾는 것이 실패할 수 있습니다. 때문에 coarse-to-fine 스키마를 사용하여 큰 블러 이미지를 다루고자 합니다.

먼저 낮은 해상도에서 샤프한 에지를 예측한 뒤, 점점 블러의 크기를 좁혀나가면서 에러를 최소화하면서 커널을 예측합니다. 높은 해상도에서는 이전의 해상도에서 얻어진 디컨볼루션된 결과 이미지의 업샘플링 버전에서 샤프 에지의 예측을 시작합니다. 이는 이미 직전 단계에서 상당한 양의 블러가 사라진 상태일 것입니다. 각 스케일에서 반복을 진행하며 샤프한 에지의 예측은 이전 단계의 디컨볼루션된 이미지에서 이루어집니다. 그 이미지는 이전 반복에서 업데이트된 커널을 통하여 만들어진 것입니다. 따라서 계속적으로 예측 정확도를 향상시키며 진행할 수 있게 됩니다.

큰 블러를 처리하고자 사용한 멀티 스케일 스키마 역시 이전의 연구와 크게 구별되는 부분입니다.

Speed comparison

Latent 이미지의 그래디언트 맵을 추정하기 위해서 2번의 FFT를 거쳐야 합니다. 한번은 디컨볼루션, 나머지 하나는 이미지 필터링입니다. 작은 크기의 bilateral filtering과 shock filtering, 그래디언트 threshold은 매우 빠르게 계산할 수 있게 됩니다. 이는 30에서 60번의 FFT가 필요한 Shan의 연구에 비해 15, 30배나 빠른 것입니다.

5 Fast Kernel Estimation

모션 블러 커널을 추정하기 위해 그래디언트 맵을 사용하여 아래 에너지 함수를 최적화 합니다.

$$f_K(K) = \sum_{(P_*, B_*)} w_* || K * P_* - B_* ||^2 + \beta || K ||^2$$

여기서 $w_* \in \{ w_1, w_2 \} $는 각 편미분 방향에 해당하는 가중치입니다. $P_*$$B_*$는 아래와 같은 쌍으로 구성됩니다.

$$(P_*, B_*) \in \{ (P_x, \partial_x B), (P_y, \partial_y B), (\partial_x P_x, \partial \partial_{xx} B), (\partial_y P_y, \partial \partial_{yy} B), (\partial_x P_y + \partial_y P_x)/2, \partial_{xy} B \}$$

위의 쌍에 대하여 각 $(K * P_* - B_*)$는 맵 $I$를 구성합니다. 각 $I$에 대하여 $||I||^2 = \sum_{(x, y)} I(x,y)^2$ 라고 정의합니다. $\beta$는 Tikhonov regularization을 위한 가중치입니다.

이 에너지 함수는 Shan의 그거소가 비슷하지만, 이미지의 픽셀 값을 포함하지 않고 편미분 값을 쓴다는 점이 가장 큰 차이점입니다. 더불어 L1 놈 대신 Yuan의 연구에서와 같이 Tikhonov regularization항인 $K$를 포함하고 있습니다. 여기에서는 $w_*$는 Shan의 연구에서 따온 값을, $\beta=5$를 사용하였습니다.

위의 식은 다음과 같이 행렬 형태로 나타낼 수 있습니다.

$$f_k(k) = ||Ak - b||^2 + \beta||k||^2 = (Ak - b)^T (Ak -b) + \beta k^T k$$

$A$는 다섯가지 $P_*$로 구성되며 $k$는 모션 블러 커널 $K$의 벡터 표현 형식입니다. $b$는 다섯가지 $B_*$의 벡터 표현입니다. 이 식을 최소화 하기 위해 CG를 사용하였습니다. 따라서 이 식의 그래디언트는 다음과 같습니다.

$$\frac{\partial f_k(k)}{\partial k} = 2A^A A k + 2 \beta k - 2A^T b$$

이 식은 최소화 과정을 거치는 동안 수없이 많이 계산되어져야 합니다. 그런데 행렬 A의 그 크기가 크기 때문에 이 계산은 많은 시간을 소비해야 합니다. $ A^T A$의 계산 또한 만만치 않습니다. 하지만 $Ak$는 사실 $P_*$$K$의 컨볼루션 계산이기 때문에 FFT를 이용하여 가속화할 수 있습니다. 실제로 $Ak$는 여섯번의 FFT가 필요한데, 한번의 $F(K)$와 다섯번의 $F^{-1} [ w_* F(P_*) \circ F(K) ] $ 계산이 그것입니다. 여기서 $F$$F^{-1}$은 forware와 inverse Fourier transform 입니다. $\circ$는 픽셀 단위 곱셈입니다. 최적화를 실행하기 전에 $F(P_*)$를 미리 계산을 해 둘 수 있어 시간을 절약할 수 있습니다.

비슷한 이유로 $A^T y, y = Ak$는 6번의 FFT만으로 계산이 가능합니다. 따라서 결과적으로 위 그래디언트 계산은 총 12번의 FFT가 필요하게 됩니다. 마찬가지로 $A b $는 미리 계산이 가능할 것입니다.

더 시간을 절약하기 위하여 $Ak$$A^T y$의 계산을 한번에 $A^T A k$로 계산하고자 합니다. 이는 다음과 같이 계산됩니다.

$$F^{-1} [ \sum_{P_*} w_* \bar{F(P_*)} \circ F(P_*) \circ F(K)]$$

$\bar{F(P_*)}$$F(P_*)$의 complex conjugate입니다. 이 식에서 $ \sum_{P_*} w_* \bar{F(P_*)} \circ F(P_*) $는 미리 계산을 해둘 수있으므로 2번의 FFT만이 필요하고 10번의 FFT를 절약할 수 있게 됩니다.

이러한 효과는 픽셀 값이 아닌 그래디언트를 사용하는 것에 나오는 것입니다. 만약 픽셀 값을 그대로 사용한다면 $A k $에 FFT를 적용하였을 때 boundary artifact가 발생하므로 이를 신경을 써야 합니다. 하지만 $A^T A k $를 한번에 계산하는 과정에서는 지를 다룰 수가 없습니다. 하지만 그래디언트를 이용하기 때문에 경계선 부분에 0을 채워넣고 사용함으로써 아티팩트가 생기는 것을 막을 수 있습니다. 확장할 이미지의 크기는 소수를 사용하여 2, 3, 5, 7을 사용하였습니다.

모션 블러 커널은 normalized되었으며 음수 값을 포함하지 않습니다. 커널의 추정 뒤에는 가장 큰 값의 1/20보다 작은 값들은 0으로 초기화 해버립니다.

Convergence speed

최적화 기법에서는 수렴하기까지의 반복 시간이 매우 중요합니다. 여기에서 보인 커널 추정 방법은 기존의 픽셀 값을 사용한 방법보다 빠른 시간을 보여줍니다. 그 비결은 좋은 조건을 가진 행렬 $A^T A$의 구조에 있습니다.

$$A^T A = \sum_* w_* A_*^T A_*$$

$$(A_*^T A_* )_{(i, j)} = (I^i_*)^T (I^j_*)$$

여기서 $ I_*^i $$ \partial_* L$의 벡터 표현입니다. 편미분값은 보통 에지 부분을 제외하고는 대부분 0에 가까우므로 이 행렬은 크기가 크긴 하지만 대각 성분을 제외하고는 대부분 작은 값을 갖습니다. 하지만 픽셀 값을 사용한 경우에는 거의 모든 부분이 0이 아니게 됩니다. 이러한 이유로 $ A^T A $는 condition number가 픽셀 값을 이용하였을 때보다 월등히 작아지므로 CG의 수렴 속도가 줄어들게 됩니다.

Speed comparison

속도 비교를 위해서 커널 추정의 속도를 비교해보았습니다. 에너지 함수를 Shan의 그것과 똑같이 설정하고 커널 prior부분을 $L_2$로 변경하였고, 이를 Shan-L2라 부르도록 하겠습니다. 기존의 Shan은 $L_1$을 사용하기에 좀 더 많은 연산이 필요하기 때문입니다.

Shan-L2의 경우, 6개 이미지(픽셀 이미지, 5개 편미분 이미지)를 사용하여 14번의 FFT가 필요합니다. 또한 앞에서 이야기하였듯 CG에서 더 많은 반복이 필요합니다. 실험에서는 제안하는 알고리즘이 5번 반복한 것과 동등한 수준의 결과를 위해서 30번의 반복을 해야하였습니다. 이전에 제안된 픽셀 값을 사용하는 알고리즘들은 4번의 FFT가 필요하지만, 경계 문제를 해결하지 못하며 역시 더 많은 반복이 필요하였습니다.

제안하는 방법은 Shan-L2 보다 40배 빨랐으며, 다른 픽셀 값을 사용하는 방법보다도 10배 빨랐습니다.

Accuracy

정확도 검증을 위하여 가우시안 노이즈를 추가한 합성 이미지를 사용하였습니다. 제안한 방법은 픽셀 값을 사용하지 않았음에도 비슷한 정확도이거나 더 나은 수준을 보여주었습니다.

Application to other methods

사실 이 방법은 Yuan이나 Shan, Jia의 방법 등에도 적용하여 속도를 끌어올릴 수 있습니다.

6 Results

이 방법에서 커널 크기는 추정하려는 커널의 크기를 벗어나지 않는한 성능에 크게 영향을 끼치지 않습니다.

구현에서는 GPU를 이용한 BSGP를 사용하였으며 FFT는 CUDA에서 제공되는 방법을 사용하였습니다. 코드는 Intel Core2 Quad CPU 2.66GHz, 3.25GB RAM, NVIDIA GTX280 환경에서 구현되었습니다. CPU만을 이용한 구현도 실험해보았습니다.

7 Discussion

Limitations

다른 영역에 비해 유난히 강한 지역 피쳐가 존재할 경우 실패할 수 있습니다.

현재는 알고리즘이 파라미터에 민감하게 반응합니다.

샤프한 에지를 이용하여 커널을 추정하기 때문에 그렇지 않은 이미지에서는 잘 작동하지 않을 수 있습니다.

일정한 모션 블러링을 복원하는 방법이기에 컨볼루션에 의한 블러링이 아닌 경우, 빛에 의해 픽셀들이 새츄레이트 된 경우, 심한 노이즈, 지역적으로 다른 블러 모델을 가진 경우 제대로 처리하기가 힘이 듭니다.

회전에 대한 블러링 또한 처리하기가 힘이 듭니다.


Add a Comment Trackback