2014-02-18 3 views
0

일부 이미지 처리 알고리즘의 단위 테스트와 관련된 질문이 있습니다. 이미지 회전을 예로 들어 이미지 회전을 수행하려면 대개 두 개의 매개 변수가 필요합니다. 하나는 회전 각이고 다른 하나는 재 샘플링 방법이며 이미지 회전을 수행하는 함수는 다음과 같은 서명을 갖습니다.이미지 회전 단위 테스트

void rotate_image(const Image &image, const double rotationAngle, const int rotationMethod, Image &rotatedImage); 

그런 다음이 기능을 테스트하기 위해 어떻게 좋은 단위 테스트 프레임 워크를 설계 할 수 있습니까? 당분간, 내가 알아낼 수있는 유일한 해결책은 다른 최첨단 소프트웨어 패키지 (예 : 회전 각도 및 재 샘플링 방법으로 회전 된 이미지)를 사용하여 지상 진실 이미지를 먼저 얻는 것입니다 , MATLAB 이미지 처리 도구 상자); 그 후에 구현 된 함수를 사용하여 회전 된 이미지가 얻어진다; 마지막으로 두 이미지를 비교합니다. 차이 이미지의 절대 합계가 임계 값보다 작 으면 함수는 단위 테스트를 통과합니다. 이 문제를 해결할 수있는 다른 솔루션이 있는지 궁금합니다. 감사.

+0

결과가 완전히 결정적이면 회전 된 이미지를 생성하고 시각적으로 확인하고 뷰어에서 실제로 회전하는지 확인한 다음 파일로 직렬화 한 다음 단위 테스트에서 함수를 호출하고 비교할 수 있습니다 저장된 (참조) 결과. – utnapistim

+1

단위 테스트의 경우 예상 결과가 손으로 계산 될 수있는 자신 만의 (단순한) 이미지를 만들 수 있습니다 *. – Jarod42

답변

1

일부 테스트 케이스 내 마음에 와서 :

  1. 일부 데이터가있는 원형 이미지를 만든 모든 주위에 검은 색입니다. 이를 회전하고 몇 가지 매개 변수 (예 : 평균 r g 및 b 값은 변하지 않습니다.
  2. 원본과 비교하여 전체 360 ° 회전이되는 일련의 회전을 만듭니다.
  3. 기하학적 도형 (직사각형)을 회전하고 예상 된 결과를 계산하십시오.
  4. 가운데를 중심으로 원을 돌리면 변경되지 않습니다.
  5. 90 ° 회전. 각 픽셀은 새로운 위치를 얻습니다. 허용 오차 문제가 없어야합니다.
  6. + 90 ° 및 -270 °로 이미지를 회전합니다. 작은 차이가 나는 경우 불필요한 고정밀 손실이 있습니다.

모든 경우에 작은 정밀도 오류가 발생한다는 것은 분명히 허용 오차를 정의해야합니다.