더북(TheBook)

OnHoughLine 이벤트 처리 함수에서는 허프 변환을 수행하는 IppHoughLine 함수를 호출하고, 검출된 직선 정보를 std::vector<IppLineParam> 타입의 변수 lines에 저장하였다. 만약 lines에 저장된 직성 성분이 있으면, 최대 10개까지의 직선 성분을 영상에 표현하도록 하였다. 이때 축적 배열의 값이 큰 순서대로 직선을 선정하기 위해 STL의 sort 함수를 사용하였고, 다음과 같은 연산자 재정의를 IppFeature.h 파일에 추가하였다.

inline bool operator< (const IppLineParam& lhs, const IppLineParam& rhs)
{
    return lhs.vote > rhs.vote;
}

그림 11-21은 ImageTool 프로그램을 실행하여 실제 영상에 대한 허프 변환을 수행한 결과이다. ImageTool1 창에 나타난 영상은 hanyang.bmp 파일에 대해 허프 변환 직선 검출을 수행한 결과이다. 건물의 기둥과 난간 등의 구조물에서 나타나는 직선을 제대로 검출한 것을 확인할 수 있다. 앞서 OnHoughLine 이벤트 처리 함수에서 최대 10개의 직선만을 화면에 표시하도록 하였기 때문에 모든 기둥에 대해 직선을 표시하지는 않았다. 더 많은 직선을 표시하려면 OnHoughLine 함수를 수정하여 사용하면 된다. ImageTool2 창에 나타난 영상은 bookshelf.bmp 파일에 대한 직선 검출 결과 영상이다. 선반의 직선과 책의 수직선이 제대로 검출된 것을 확인할 수 있다.

그림 11-21 ImageTool 프로그램에서 허프 변환 직선 검출 실행 결과
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.