논문

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

GPU-accelerated non-uniform fast Fourier transform-based compressive sensing spectral domain optical coherence tomography

[cite]10.1364/OE.22.014871[/cite]

1. Introduction

Compressive sensing (CS) 는 기존의 Shannon/Nyquist 이론에서보다 더 적은 샘플만으로도 동일한 효과를 내는 유용한 테크닉으로 주목받아왔습니다. 그것은 optical coherence tomography (OCT) 에서도 마찬가지로 응용되었습니다.

CS를 적용한 기존의 CS SD OCT들은 uniform discrete Fourier transform (UDFT) 나 fast Fourier transform (FFT) 를 이용하여 sensing matrix를 만들었습니다. 따라서 wavenumber에 linear 하지 않은 스펙트로미터의 문제가 그대로 남아있었으며, 그것을 해결하기 위해 크게 두가지 방법이 제시되었습니다. 한가지는 under-sampled nonlinear wavenumber 데이터를 linear wavenumber data가 되도록 interpolation을 통해 remap 하는 방법입니다. 다른 하나는 미리 캘리브레이션 된 k-linear random mask를 이용하는 것입니다. 하지만 두 방법 모두 한계를 가지고 있었습니다.

이를 극복한 방법으로 modified non-uniform discrete Fourier transform (MNUDFT) matrix를 sensing matrix로써 이용한 CS SD OCT 연구가 제안되었습니다. 이 방법을 이용하면 k-space grid filling이나 k-linear calibration 등을 할 필요가 없었습니다. 하지만 CS를 풀어내는 과정에서 반복적인 방법을 사용하기 때문에 많은 시간이 걸렸습니다. CS를 풀어내는 방법은 행렬 연산을 기초로 하고 있기 때문에 병렬처리에 아주 적합한 특성을 지니고 있습니다. 따라서 3개의 GPU를 이용하여 30 fps 이상의 속도를 내는 것을 보였습니다.

2. Theory

CS OCT에서 사용되는 식은 아래와 같습니다.

$$\text{minimize}_x \frac{1}{2} || \mathbf{F}_u \mathbf{x} - \mathbf{y}_u||^2_2 + \tau || \Phi \mathbf{x}||_1$$

이 식은 under-sampled transformation matrix $ \mathbf{F}_u $ 과 sparsifying operator $ \mathbf{\Phi} $로 구성되어있습니다.

기존의 NUDFT를 이용한 SD OCT에서는 y의 모든 데이터를 가지고 있었기 때문에 inverse transform만으로도 x를 구할 수 있었지만, 여기서는 그것이 통하지 않습니다. $ \mathbf{F}_u $ 로 표현되는 y는 FFT의 그것보다 낮은 sparsity를 가지기 때문입니다. 따라서 MNUDFT를 사용하게 되는데 MNUDFT는 sparsity가 높은 NUDFT의 반 만큼의 결과를 그대로 나머지 반에 대칭으로 채워넣음으로써 sparsity를 높일 수 있었습니다.

하지만 MNUDFT는 속도가 느렸기 때문에 DFT의 FFT처럼 NUFFT가 등장하였습니다. NUFFT는 type-1과 type-2로 구성되는데, type-1은 nonlinear wavenumber로부터 linear spectral representation으로의 변환을, type-2는 linear spectral data로부터 nonlinear wavenumber 데이터로의 변환을 의미합니다. 따라서 두가지는 서로 반대 개념을 갖습니다. NUFFT에서는 커널 함수가 이용되는데 주로 Gaussian과 KaiserBessel 함수가 이용됩니다.

이제 속도가 MNUDFT느린 대신 NUFFT를 적용하여 CS SD OCT에 적용합니다.

실험을 통하여 NUFFT의 sparsity에도 문제가 없음을 보였습니다.

3. GPU-MNUDFT-CS and GPU-NUFFT-CS

CUDA를 이용하여 행렬 연산을, SpaRSA를 이용하여 CS 문제를 풀어내었습니다.

4. Sensitivity roll-off and speed comparison

MNUDFT와 NUFFT의 두가지 커널을 이용하였을 때의 결과를 비교하였습니다.


Tags:
Add a Comment Trackback