티스토리 뷰
대관절 난 멀 잘못했길레 이걸 고치기 위해
1. 원인을 알기 위해 train descriptor를 통채로 얻어와서 일일히 비교하도록 함.
2. Matlab과의 convention 문제를 해결하기 위해 3 차원 Descriptor 의 index를 바꾸는 루틴 작성
3. 소스 코드 구경 실제로 문제 있는 부분은 슥 지나감.
원래대로라면 걍 인식 정확도 비교 후 바로 끝날 일이 었는데 말이다.
해당 소스 코드는 아래와 같다.
templateMatrix 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
링크