OpenCV 이미지 유사도 비교 #2 - 히스토그램 비교
OpenCV를 활용한 이미지의 유사도 비교에서 먼저 피처 매칭을 살펴봤다.
오늘은 히스토그램 비교를 알아보도록 하자.
히스토그램은 매개변수에 따라 Correlation, Chi-square, Intersection, Bhattacharyya 각각의 결과값을 가질 수 있다.
그래서 중요한 부분이 각각의 결과값을 어떻게 해석하는 것이다.
Correlation과 Intersection은 값이 클수록 유사한 것이고,
Chi-square와 Bhattacharyya는 값이 작을수록 유사한 것으로 판단한다.
Comparing Histogram
먼저 전체 소스를 살펴보면 다음과 같다.
마찬가지로 C로 구현되어 있는 Histogram 소스를 자바로 변환한 것이다.
여기에서도 중요한 부분이 102~105번째 줄에 있는 유사성을 판단할 값이다.
몇 번의 테스트를 통해서 대략적으로 값을 설정했지만, 좀 더 정교하게 다듬을 필요가 있다.
히스토그램 방식에서는 4개의 결과값을 자체 기준으로 비교해서 세 개 이상이 적합할 때
두 이미지가 유사한 것으로 판단하는 형태로 코딩을 했다.
이런 조건들은 자유롭게 변경하면서 테스트하면 좋을 듯 하다.
Histogram Test
피처 매칭과 동일하게 아이폰 이미지를 가지고 테스트를 해 봤다.
먼저 동일한 이미지인 iphone1.jpeg를 비교하면 다음과 같이 동일하다고 나온다.
이번에는 거의 비슷해 보이는 iphone1.jpeg와 iphone2.jpeg를 비교해보자.
Chi-square를 제외한 나머지 세개가 조건을 충족해서 유사한 이미지로 판단했다.
마지막으로 완전히 다른 iphone1.jpeg와 iphone3.jpeg를 비교해 보면 다음과 같다.
Correlation과 Bhattacharyya이 조건을 만족했지만, 전체적으로 3개가 넘지 않아서 다르다고 판단했다.
히스토그램을 사용하면 조건에 따라 오판하는 경우도 종종 있을 것으로 보인다.
하지만, 이런 형태로 히스토그램을 사용할 수 있다는 것을 알아 두면 좋겠다.
잠시 이미지 유사도 비교를 할 필요가 있어 OpenCV를 테스트를 해봤다.
OpenCV가 실시간 이미지 프로세싱을 위한 라이브러리여서 이미지 유사도에 최적화되어 있지는 않지만,
이런 형태로 활용할 수 있다는 점을 참고했으면 한다.
OpenCV 더보기..
OpenCV 이미지 유사도 비교 #2 - 히스토그램 비교