TGVDenoise

기본적으로 우리는 선형 데이타 상태에서 한차례 사진의 노이즈 제거를 했습니다. 선형 데이타일때는 보통 MultiscaleLinearTransform(MLT)로 처리를 하게 되는데요, 충분히 높은 SNR을 유지하고 있으며 이미 충분히 노이즈가 제거되었다면, 꼭 비선형 데이타에서 노이즈 제거를 또 할 필요는 없습니다. 결국 비선형 데이타의 노이즈 제거는 선형 데이타의 처리 후 마지막 단계에 남아있는 노이즈가 있을 때 하는 것이라고 생각하시면 되겠습니다. 

TGVD (Total Generalized Variation Denoise)

이름이 떼제베(TGV) 디노이즈(Denoise)니까 엄청 빠를 것 같은데 정반대 입니다. 비둘기호 열차입니다. 
TGVDenoise는 선형 데이타 뿐만 아니라 비선형 데이타의 노이즈 제거에도 이용할 수 있습니다. 기본적으로 이 프로세스의 이론적 개념은 다음과 같습니다. 

"TGVDenoise는 일반적인 비등방성 확산기반 알고리즘과 달리, 모든 이미지는 조금씩 조금씩 순차적으로 부드럽게 변화한다고 가정한다. 이 개념을 바탕으로 갑작스런 계단식의 변화나 이상한 형태의 부드러운 변화를 찾아 제거한다"

🠚 결국 순차적으로 부드럽게 색이 변하지 않는 부분을 찾아내 부드럽게 만들어 버리는 프로세스입니다.


TGVDenoise는 크게 두 가지 모드, RGB/K 모드와 CIE L*a*b* 모드로 작동합니다. 어느 모드를 설정하느냐에 따라 아래쪽 항목의 형태가 달라집니다. 
  • RGB/K 모드 : 일반적으로 선형 데이타에서 사용하며, 비선형 데이타의 그레이스케일 이미지에도 사용합니다. RGB/K 모드를 선택하시면 Chrominance 탭이 비활성화 됩니다(정상)
  • CIE L*a*b* 모드 : 비선형 삼색 이미지를 처리할 때 사용합니다. 이 항목을 클릭하면 아래의 탭이 Lightness와 Chrominance로 바뀌는데 LRGB 요소중 Lightness는 L을, Chrominance는 RGB부분을 처리한다고 생각하시면 됩니다
통상적으로 RGB/K모드보다 CIE L*a*b* 모드가 처리에 더 많은 시간이 소요됩니다. 

RGB/K 모드

CIELAB모드
RGB/K 탭이 Lightness로 변경됨

Strength

Strength를 높이면 높일수록 TGVD 프로세스는 영상을 더 부드럽게 만듭니다(뭉게버립니다). 이 항목의 디폴트 값인 5는 비선형 데이타에 맞도록 설정되어 있어 선형데이타에는 맞지 않습니다. 
설명이 좀 복잡한데 이 값의 설정은 오른쪽 작은 창의 수를 먼저 조정하고 왼쪽의 슬라이더를 움직이는 방식입니다. 오른쪽 작은 창은 Strength 계수의 지수를 나타내는데, -1 ~ 1 사이로 설정하신 후 왼쪽 슬라이더를 살살 움직이시면 됩니다. 직접 만져보시면 아시겠지만 이 지수를 -1로 설정하면 왼쪽 슬라이더의 기본값이 5에서 0.5로 바뀌게 됩니다. 그리고 지수를 1로 설정하면 왼쪽 슬라이더의 기본값이 50으로 바뀌게 됩니다. 결국 지수를 얼마로 주느냐에 따라 Strength의 강도가 극단적으로 바뀐다는 것입니다.
기억할 것은 Strength의 강도가 너무 세지면 색의 포화도가 확 빠져 버립니다(Desaturation).

Edge Protection

Strength와 함께 Edge Protection은 가장 중요한 변수입니다. 이 수치를 작게 설정하면 할수록 대상의 경계면을 더 예리하게 유지해 줍니다. 이 수치 역시 우측에 지수 항목이 있는데 통상적으로 -4 ~ -1 정도를 사용합니다. 

기본적으로 적당한 Edge Protection값을 찾는 것은 끝임없는 시행착오 밖에 없습니다. 그런데 이 프로세스는 상당한 시간이 걸리지요. 결국 다음과 같은 방법으로 하면 좀  쉽습니다. 


  1. TGVDenoise를 할 대상 이미지에서 배경하늘 부분에 작은 프리뷰를 하나 만듭니다
  2. Statistics 프로세스를 엽니다 
  3. Statistics 윈도우에 Normalizaed Real [0,1]을 선택합니다
  4. 만약 통계창(Statistics 윈도우)에 표준편차(Standard deviation; stdDev)가 없다면 오른쪽에 렌치 아이콘을 클릭해 이 항목을 선택해줍니다
  5. Statistics 윈도우를 열어둔 채로(봐야 하니까) TGVDenoise의 Edge Protection 슬라이더와 지수를 Statistics 윈도우의 표준편차와 비슷하게 요리조리 조절해 줍니다

Smoothness

Smoothness는 작은 크기의 대상을 보존하는데 사용합니다. 대부분의 이미지에서 슬라이더 디폴트값 2.00에 지수 0으로 잘 작동합니다. 이 항목을 조절하면 이미지의 얼룩 같은 것을 줄이는데 도움이 되며 특히 선형 데이타에서 유용합니다.

Iterations

기본값은 100 입니다. 통상 250에서 테스트를 시작해 실제 적용시 500~1000까지 올립니다. 말 그대로 Iteration은 반복계산의 횟수를 설정하는 것입니다. 수치를 올리면 프로세싱 시간이 점점 늘어납니다.

Automatic Convergence

자동수렴 기능이라고 하는데 이걸 켜게되면 프로세스가 Iteration 값에 맞춰 계속 계산을 해나가다가 알고리즘상 수렴에 도달하는 순간 계산을 멈추게 됩니다. 결국 이 기능을 체크해 놓으면 시간을 절약할 수 있어 매우 추천합니다. 

Local Support

Deconvolution 프로세스의 Local Deringing과 마찬가지로 이 기능 역시 전통적 의미의 마스크는 아니며 어느정도 이미지를 지지해주는 역할을 합니다. 기본적으로는 비활성화 되어 있으며 비선형 데이타의 처리에 유용한 기능입니다. 비선형 데이타에서 이 기능을 사용할 때는 높은 SNR의 대상을 보호할 목적으로 외부마스크를 반전(inverted)해 사용합니다. 
만약 선형 데이타에서 TGVDenoise 프로세스를 사용하려고 한다면 이 기능을 사용하는게 좋습니다. 이때 Support image는 대상 이미지를 선택하면 됩니다. 


TGVDenoise 프로세스는 메모리와 CPU의 자원을 엄청나게 소모하는 프로세스입니다. 다시말해 컴퓨터 사양이 떨어지면 떨어질수록 소요시간이 기하급수로 늘어난다는 것이지요. 이 문제를 해결하는 가장 좋은 방법은 Edge Protection에서 설명한 것처럼 작은 프리뷰를 만들어 거기다 계속 테스트를 해보는 겁니다. 
그리고 TGVDenoise를 CIE L*a*b* 모드로 작동시킬때 Lightness탭과 Chrominance탭 양쪽에 Apply가 체크되어 있을 것입니다. 둘 다 체크되어 있다는 뜻은 이 프로세스가 Luminance와 Chrominance양쪽을 동시해 처리한다는 뜻입니다. 테스트를 할 때는 소요시간을 줄이기 위해 한쪽을 꺼놓은 상태로 하시고 마지막에 양쪽을 다 체크해서 진행하시면 도움이 됩니다. 
보통 이 프로세스를 한 후, 마스크를 제거 또는 비활성화하고 HistogramTransformation을 이용해 Black point를 조절하는 과정이 필요합니다. 

댓글