논문

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

BM3D Image Denoising with Shape-Adaptive Principal Component Analysis

[cite]10.1.1.160.8226[/cite]

1. Introduction

한장의 이미지에서 노이즈를 제거하는 방법으로 여러 방법들이 있지만, 최근 BM3D filter 방법이 state-of-the-art로 평가받고 있다. 이 방법은 동일한 이미지에서 비슷한 영역들을 모아 묶은 다음, 이 영역들로 3차원 배열을 구성한 뒤, tranform-domain에서의 shrinkage하여 노이즈를 제거하는 방법이다.

이 방법은 신호가 3D transform-domain로 변환하였을 때, 신호가 특정 성분의 sparse한 특징을 갖는다는 가정에 의한 것이다. 하지만 비슷한 영역을 정의하기 위해 사용되는 모양은 정사각형 내에는 세세한 요소나 샤프한 부분이나, 에지, 커브 등이 포함되어 있어 그러한 영역은 현실적으로 sparsity를 이끌어 내기가 힘든 문제를 가지고 있다.

한편 비슷한 영역을 수집하는 것과 비슷한 접근으로, 대상 픽셀 주변에서 비슷한 픽셀들을 수집하는 SA-DCT 방법이 제안되었다.

이 둘 방법들을 혼합하여 3D transform-domain에서의 sparsity를 끌어낼 수 있도록 정사각영역 대신 최적의 영역을 사용하도록 하는 방법을 이야기해보도록 하자.

2. BM3D-SAPCA algorithm

A. Algorithm outline

대강의 알고리즘 흐름을 보면 아래와 같다. 먼저 입력으로 사용하는 이미지는 가우시안 노이즈 $ N(0, \sigma^2) $의 노이즈를 포함한다고 가정한다. 이미지의 각 픽셀들을 가로 우선하여 방문하면서 알고리즘을 수행한다.

  1. 8방향의 LPA-ICI 방법을 이용하여 대상 픽셀을 중심으로 하는 adaptive-shape를 구한다. 이 영역의 픽셀 수 는 $ N_{el} $이다. adaptive-shape의 최대 크기는 정사각형 영역으로 제한되며 이 영역을 reference block이라고 부르자.
  2. block-matching 방법을 이용하여 1에서 구한 영역과 비슷한 영역을 주변 영역에서 찾는다. 여기서 찾은 영역의 수를 $ N_{gr} $이라 하자.
  3. 앞에서 구한 두 수에 따라 두가지 경우를 나누어 각기 다른 방법으로 처리할 것인데, 어느것을 사용할 것인지 결정한다.
    1. 먼저 $ \frac{N_{gr}}{N_{el}} \geq \tau $ 인 경우, second-moment matrix를 생성할 만큼 검색된 주변 영역의 수가 충분하다고 생각하고, 이 행렬에 대해서 trimmed shape-adaptive PCA 변환을 해준다. 이에 대해서는 뒤에가서 자세히 이야기하도록 하자.
    2. 1의 경우가 아니라면, 주변 영역이 충분하지 않으니 단순히 SA-DCT를 사용해준다.
  4. 2에서 찾은 영역 중 높은 것들 순으로 하여 $ min(N_{gr}, N_2) $개의 영역을 쌓아 3D 배열을 만든다. $ N_2 $는 얼만큼 영역을 사용할 것인지 제한하는 상수이다.
  5. 3에서 결정한 방법을 사용하여 각 영역에 적용한 다음, 같은 픽셀로 이루어지는 축 방향으로 Haar wavelet 같은 1D orthogonal transform을 해준다.
  6. 5의 3D spectrum에서 shrinkage (hard-threshold나 empirical Wiener filtering) 를 해주고,
  7. 다시 5의 변환을 원래대로 돌려준다.
  8. 7월 결과를 가중치 합을 통하여 노이즈가 제거된 픽셀 값을 반환한다.

B. Trimmed PCA

위의 과정에서 핵심적인 3.1 shape-adaptive PCA transform에 대해서 자세히 알아보자. 3.1의 입력으로는 현재 대상 픽셀의 주변과 비슷하게 값을 갖는 $N_{gr}$개의 adaptive-shape 영역의 group이다. 여기서는 각 2D 영역을 $ N_{el} $의 길이를 갖는 1개의 컬럼 벡터 $ \vec{v}_i $로 다루기로 하자. 따라서 $N_{el} \times N_{gr} $ 크기의 second-moment matrix는 다음과 같이 계산될 수 있다.

$$C = [ \vec{v}_1 \vec{v}_2 \dots \vec{v}_{N_{gr}}] [ \vec{v}_1 \vec{v}_2 \dots \vec{v}_{N_{gr}}]^T$$

여기에 eigenvalue decomposition을 하면,

$$U^T C U = S = diag(s1, s2, \dots, s_{N_{el}})$$

으로, orthogonal matrix $U$와 diagnoal matrix $S$이며 $s$들은 큰 순서대로 배치된다. 그리고 이 $s$값 중 $ \lambda \sigma^2 $보다 큰 값에 해당하는 U의 컬럼들만을 이용하여 decomposition을 하면 노이즈가 제거된 영역 내 이미지를 얻을 수 있다.

C. Iterative refinement

앞에서 설명한 알고리즘은 한번으로 끝나는 것이 아니라 반복적으로 여러번 적용할 수 있는 방법이다. 논문에서는 3번 반복하는 방법을 제안하는데, 첫번째는 노이즈를 가진 이미지에서 비슷한 영역을 찾도록 하고, hard-thresholding 방법으로 shrinkage를 적용한다. 이어지는 두번째, 세번째 반복에 대해서는 앞에서 노이즈 제거가 된 이미지를 이용하여 비슷한 영역을 찾도록 하고, second-moment matrix 또한 직전까지 노이즈 제거 처리가 이미지를 사용한다. 특별히 세번째 반복에서는 shrinkage 단계에서 empirical Wiener filtering을 사용한다.

3. Results

2.C에서 설명한 3번 반복한 방법을 이용한 BM3D-SAPCA와 다른 알고리즘 사이의 결과를 비교가 되어있다. 매 반복시마다 파라미터를 다르게 사용하여, 반복의 순서대로 각각 $ \tau_1 = 1.3, \lambda_1 = 49, \tau_2 = 1, \lambda_2 = 13, \tau_3 = 0., \lambda_3 = 13 $을 사용하였다.

PSNR과 mean structural similarity index map (MSSIM) 을 기준으로 BM3D, PSA-DCT, SA-BM3D 방법들과의 비교 결과가 나타나있다.


Add a Comment Trackback