머신 비전 알고리즘 - OpenCV - 이미지처리14
# 디지털 이미지 처리
# 이미지의 상태 정보에서 특별한 영역를 검색한다.
> 이미지 매칭을 통해서 영역 검색
# 이미지 처리 - OpenCV 4.5.3 으로 테스트
# 이미지의 상태 정보에서 특별한 영역을 검색
> srcImage : 입력, tmpImage : 매칭 이미지, dstImage : 결과, method : 검색 방법
# cv::matchTemplate
> cv::Mat tmpImage;
> int method = cv::TM_SQDIFF;
> cv::matchTemplate(srcImage, tmpImage, dstImage, method, cv::noArray());
> cv::Point minLoc = cv::Point(), maxLoc = cv::Point();
> cv::minMaxLoc(dstImage, NULL, NULL, &minLoc, &maxLoc, cv::noArray());
> cv::Rect search_result_roi(minLoc.x, minLoc.y, tmpImage.cols, tmpImage.rows);
# cv::TM_SQDIFF
> 전체 결과의 최소값 위치를 찾는다.
> R(x,y)= \sum _{x',y'} (T(x',y')-I(x+x',y+y'))^2
# cv::TM_SQDIFF_NORMED
> 전체 결과의 최소값 위치를 찾는다. - 정규화버전
> R(x,y)= \frac{\sum_{x',y'} (T(x',y')-I(x+x',y+y'))^2}{\sqrt{\sum_{x',y'}T(x',y')^2
\cdot \sum_{x',y'} I(x+x',y+y')^2}}
# cv::TM_CCORR
> 전체 결과의 최대값 위치를 찾는다.
> R(x,y)= \sum _{x',y'} (T(x',y') \cdot I(x+x',y+y'))
# cv::TM_CCORR_NORMED
> 전체 결과의 최대값 위치를 찾는다. - 정규화버전
> R(x,y)= \frac{\sum_{x',y'} (T(x',y') \cdot I(x+x',y+y'))}{\sqrt{
sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}
# cv::TM_CCOEFF
> 전체 결과의 최대값 위치를 찾는다.
> R(x,y)= \sum _{x',y'} (T'(x',y') \cdot I'(x+x',y+y'))\f] where \f[\begin{array}l} T'(x',y')
=T(x',y') - 1/(w \cdot h) \cdot \sum _{x'',y''} T(x'',y'') \\ I'(x+x',y+y')=I(x+x',y+y') - 1/(w \cdot h)
\cdot \sum _{x'',y''} I(x+x'',y+y'') \end{array}
# cv::TM_CCOEFF_NORMED
> 전체 결과의 최대값 위치를 찾는다. - 정규화버전
> R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{\sqrt{\sum_{x',y'}T'(x',y')^2
\cdot \sum_{x',y'} I'(x+x',y+y')^2}}