티스토리 뷰

카테고리 없음

뭘 잘못했을까?

newpolaris 2011. 2. 13. 18:25

대관절 난 멀 잘못했길레 이걸 고치기 위해
1. 원인을 알기 위해 train descriptor를 통채로 얻어와서 일일히 비교하도록 함.
2. Matlab과의 convention 문제를 해결하기 위해 3 차원 Descriptor 의  index를 바꾸는 루틴 작성
3. 소스 코드 구경 실제로 문제 있는 부분은 슥 지나감.

원래대로라면 걍 인식 정확도 비교 후 바로 끝날 일이 었는데 말이다.

해당 소스 코드는 아래와 같다.

template  
Matrix DSiftFeatureExtractor::operator()( const ImageArray& imArray ) {
	const size_t numArray = imArray.rows;

	Matrix dSiftFeatureMatrix;

	dSiftFeatureMatrix.reserve( numArray, dSift_.getDescrTotalLength() );

    MY_DO( numArray ) {
        dSift_.process( &imArray.data[ imArray.rows * i ] );
		std::copy_n( dSift_.getDesciptor(),
					   dSift_.getDescrTotalLength(), 
					   std::back_inserter( dSiftFeatureMatrix ) );
    }

    return dSiftFeatureMatrix;
}

지금 이렇게 보니 문제가 확 보이는군. dSift_.process( &imArray.data[ imArray.rows * i ] );

나의 문제점은,

1. 코드 리뷰 안 함.
2. 코드 일부만 수정. imArray의 규격이 바껴 모든 관련 코드를 수정해야하는데 numArray부분만 수정함.
3. 데이터에 바로 접근. 최소한 함수 초기에 numArray처럼 변수선언해뒀어야함. 좀더 좋은건 접근용함수 작성
0. 테스트 안 함. 대역죄인이군…

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크