Gaussian Filter

그냥 불규칙 적인 수치(잔떨림)를 정규분포로 평활화 하는 필터로, 가장 구현이 쉽다고 한다.

가우시안 블러랑은 또 다른개념이다

이전 프레임 일곱개를 받아서 그 이전 프레임의 평균치를 내어 이상현상을 방지하는 필터

 

전공에 배우지 말아야 할 것 없고, 모르는게 더 많으니까 또 공부해야겠다.

 

자세한 필터 설명은 다음에 하고,

오늘은 내 AR 솔루션에 적용시킬 코드만 적어놓겠다.


 

//////////////////////////////////초기화/////////////////////////////////

 float Sigma = 2.0f;          // 가우시안 필터 시그마값 조절

 mTotal = 0.0f;               // 전체 가중치

 for ( int i = 0; i < COUNT_OF_WEIGHTS; i++ )
  mPositionSet[i].set(0.0, 0.0, 0.0);

 for ( int i = 0; i < COUNT_OF_WEIGHTS; i++ )   // 7개 : 현재 프레임 하나 + 이전 프레임 여섯개 획득
 {
  float Position = static_cast< float >( COUNT_OF_WEIGHTS / 2 - i );  // 위치 프레임 x
  mTable[i] = std::expf( -( Position * Position ) / ( 2.0f * Sigma * Sigma ) ) / ( std::sqrt( 2.0f * 3.1415f ) * Sigma );  // 2차원 가우시안 분포 수식
  mTotal += mTable[i];        // 각 프레임 별 가우시안 분포 총합
 } 

 mTotal = 0.0f;
 for ( int i = 0; i < COUNT_OF_WEIGHTS; i++ )
  mPositionSet[i].set(0.0, 0.0, 0.0);                      // 벡터 초기화

 

////////////////////////////////가우시안 분포 계산//////////////////////////

 mMoveMat.set(m[0][3], m[1][3], m[2][3]);
// printf("in : %f, %f, %f //\n", m[0][3], m[1][3], m[2][3]);

 for ( int i = 1; i < COUNT_OF_WEIGHTS; i++ )
 {
  mPositionSet[ i - 1 ] = mPositionSet[i];   // 카메라에서 얻은 이동행렬(벡터) 한칸씩 뒤로 밀자
 }

 mPositionSet[ COUNT_OF_WEIGHTS - 1 ] = mMoveMat;     // 이동행렬 세트에 넣기

 Vec3 FilteredPosition;
 FilteredPosition.set(0.0, 0.0, 0.0);        // 가우시안 필터 입힌 결과를 넣을 벡터변수 초기화

 for ( int i = 0; i < COUNT_OF_WEIGHTS; i++ ) 
 {
  for( int j = 0; j < 3; j++)
  {
   FilteredPosition.v[j] += mTable[i] * mPositionSet[i].v[j];    // 최근 7개 벡터를 가우시안 필터 적용 후 전부더해
  }
 }

 for (int i = 0; i < 3; i++)
  FilteredPosition.v[i] = FilteredPosition.v[i] / mTotal;      // 그리구 전부더한 전체 벡터와 가우시안 분포 총합을 나눠줘
 m[0][3] = FilteredPosition.v[0];
 m[1][3] = FilteredPosition.v[1];
 m[2][3] = FilteredPosition.v[2];     // 가우시안 필터링 된 벡터 적용

 

'Augmented Reality > Image Processing' 카테고리의 다른 글

Gaussian Pyramid  (0) 2014.06.10
영상처리 영문용어  (0) 2014.06.10
Kalman Filter  (5) 2014.05.27
SIFT  (0) 2014.05.27
Posted by 긍정왕오킹