본문 바로가기

Python/[스테레오 비전]

#4. 스테레오 카메라 원리 분석(4) : Census transform와 Rank transform

728x90
반응형

영역 기반 정합 방법

Ⅰ. 영역 기반 정합 방법

윈도우 간의 상관도(= 정합 비용, 비유사도)를 기반으로 계산하여 시차를 계산하는 방법이며, 다양한 알고리즘이 존재합니다.

그중에서도 Census transform은 잡음에 강하다는 특징이 있어서 많이 사용되는 알고리즘입니다. 

Ⅱ. Census transform

💡 Census Transform은 각 픽셀의 주변 픽셀들과의 상대적인 밝기 비교를 통해 해당 픽셀의 특성을 이진 벡터로 변환하는 방법입니다. 이렇게 변환된 벡터는 픽셀 간의 절대적인 밝기 차이가 아닌, 이웃 픽셀들과의 관계를 나타내므로 조명 변화에 매우 강건합니다.

 

각각 개별적으로 기준영상의 윈도우(=Census window)와 목표 영상의 윈도우들 내에 존재하는 중심 픽셀과 주변 픽셀의 값의 비교를 통해 '1' 혹은 '0'의 패턴을 생성하고, 개별적으로 생성된 패턴은 1열의 벡터로 표현합니다.

 

생성된 벡터들은 정합비용을 계산하는데 사용됩니다.

기준 영상의 벡터와 목표 영상의 벡터들의 차이 정도를 정합 비용으로 사용합니다. 아래의 그림을 보면 쉽게 이해 가능합니다.

Census transform

  1. 기준 영상(좌측 영상)의 한 점과 목표 영상(우측 영상)의 시차 탐색 범위(disparity search range) 내 존재하는 모든 픽셀에 대해 윈도우를 설정한다.
  2. 좌측 윈도우 하나와 시차 탐색 범위 내 설정된 윈도우들 개별적으로 패턴을 생성 윈도의 중심 픽셀이 주변 픽셀보다 값이 크면 '1', 작거나 같으면 '0'을 할당한다.
  3. '1'과 '0'으로 이루어진 생성된 패턴은 다시 일련의 벡터로 만든다. ( 아래에서는 'Census vector'라고 명시)
  4. 기준 영상의 윈도우에 대한 Census vector와 목표 영상의 시차 탐색 범위만큼의 윈도우들에 대한 Census vector들과의 차이를 계산
    • 차이는 벡터의 개별 요소가 얼마나 다른 지를 확인하는 것
    • 'dmax'의 벡터는 좌측의 벡터와 3개가 차이 남
    • 'd0'의 경우에는 4개가 차이 남
  5. 이때의 차이 값을 정합 비용으로 사용한다.
  • 조명 변화에 강건: 픽셀 간 절대적인 밝기 차이를 사용하지 않으므로, 조명 조건이 다르거나 명암 대비가 큰 경우에도 정합 성능이 유지됩니다.
  • 텍스처가 적은 영역에서도 효과적: 텍스처가 부족한 영역에서 상대적으로 더 나은 성능을 보일 수 있습니다.
  • 계산 복잡도: 변환 과정에서 계산이 추가되므로, 기본적인 SAD나 SSD보다 계산 비용이 증가할 수 있습니다.

Ⅲ. Rank transform

💡 Rank Transform은 각 픽셀의 밝기 값을 주변 픽셀들 사이에서의 순위로 변환하는 방법입니다. 즉, 특정 픽셀이 주변 픽셀들에 비해 얼마나 밝거나 어두운지를 평가하여 순위를 매깁니다.

 

각각 개별적으로 기준영상의 윈도우와 목표 영상의 SAD 윈도우들을 설정하고, 윈도우 내에 존재하는 픽셀들에 Rank 윈도우를 설정합니다.

 

먼저 개별적으로 SAD 윈도우 내 모든 픽셀에 설정된 Rank 윈도우들은 중심 픽셀과 주변 픽셀의 값의 비교를 통해 '1' 혹은 '0'의 비교 결과를 산출한 후, '1'의 개수를 체크합니다. SAD 윈도우 내 모든 픽셀에 설정된 Rank 윈도우들에 대해 '1'의 갯수 체크가 끝나면, '1'의 개수가 기록된 SAD 윈도우 크기의 윈도우가 생성되며 그렇게 생성된 윈도우는 SAD를 통해 최종 정합 비용을 산출합니다.

Rank transform

  1. 기준 영상(좌측 영상)의 한 점과 목표 영상(우측 영상)의 시차 탐색 범위(disparity search range) 내 존재하는 모든 픽셀에 대해 SAD 윈도우를 설정한다.
  2. 개별적으로 설정된 SAD 윈도우 내 존재하는 픽셀에 Rank 윈도우 설정한다.
  3. Rank 윈도우는 윈도우의 중심 픽셀과 주변 픽셀 보다 값이 큰 경우를 카운트한다.
  4. SAD 윈도우 내 모든 픽셀에 대해 개수가 카운트되면 '변환'이라는 화살표 아래처럼 카운트된 수로 채워진 SAD 윈도우 크기의 윈도우가 만들어진다.
  5. 생성된 윈도우들은 다시 SAD 연산을 통해 최종 정합 비용을 계산한다.

장점

  • 조명 변화에 강건: 밝기 자체를 비교하지 않고, 순위를 비교하기 때문에 조명 조건 변화에도 강건합니다.
  • 단순 구현: 다른 변환 방법에 비해 비교적 간단하게 구현할 수 있습니다.

단점

  • 민감성: 윈도우 크기에 따라 민감도가 달라질 수 있으며, 텍스처가 아주 적은 영역에서는 Rank Transform의 효과가 제한적일 수 있습니다.
  • 정보 손실: 순위만을 사용하므로, 일부 정밀한 정보가 손실될 수 있습니다.

내용 정리

  • Census TransformRank Transform은 조명 변화나 텍스처 부족한 영역에서의 정합 성능을 개선하기 위해 사용되는 방법입니다.
  • Census Transform은 각 픽셀의 주변 관계를 이진 벡터로 변환하여, Rank Transform은 각 픽셀의 밝기를 주변 픽셀과의 순위로 변환하여 조명 변화에 강건한 정합을 가능하게 합니다.
  • 두 방법 모두 기본적인 SAD나 SSD에 비해 조명 변화와 같은 환경적인 요인에 더 강건한 정합 결과를 제공합니다.

 

측면 Census Transform  Rank Transform
변환 방식 픽셀 간 밝기 비교를 통해 이진 벡터 생성 픽셀의 밝기 순위를 통해 변환
조명 변화에 대한 강건성 매우 강건함 강건함
텍스처가 적은 영역에서의 성능 효과적 효과적이나 제한적일 수 있음
계산 복잡도 높음 중간
정보 손실 적음 있음
728x90
반응형
댓글