auto blocksize = 5; // 코너 응답함수 계산에 고려할 이웃픽셀의 크기 (Norm : 2~5)
auto ksize = 3; // 소벨 연산 커널 크기. (Norm : 3)
auto k = 0.05; // 해리스 코너 검출 상수 (0.04~0.06)
auto threshold = 0.000001; // 결과 임계치
double dMin{}, dMax{};
cv::Mat matSrc = cv::imread("src.bmp");
cv::Mat matCorner;
cv::cornerHarris(matSrc, matCorner, blocksize, ksize, k, cv::BorderTypes::BORDER_DEFAULT);
cv::threshold(matCorner, matCorner, threshold, 255, cv::ThresholdTypes::THRESH_BINARY);
cv::minMaxIdx(matCorner, &dMin, &dMax);
auto maxCorners = 0; // 최대 코너 개수. 0보다 작거나 같으면 무제한.
auto qualityLevel = 0.01; // 코너점 결정을 위한 값. (Norm : 0.01~0.1)
auto minDistance = 5; 코너점 간 최소 거리.
cv::Mat matSrc = cv::imread("src.bmp");
std::vector<cv::Point2f> pnts;
cv::goodFeaturesToTrack(matSrc, pnts, maxCorners, qualityLevel, minDistance);
auto threshold = 10; // 중심 픽셀, 주변 픽셀간의 차이 임계값. 기본값 10. (Norm : 30~60)
auto nonmaxSuppression = true; // 비최대 억제 수행 여부. 기본값 True.
cv::Mat matSrc = cv::imread("src.bmp");
std::vector<cv::KeyPoint> pnts;
cv::FAST(matSrc, pnts, threshold, nonmaxSuppression, cv::FastFeatureDetector::DetectorType::TYPE_9_16);
참고 : https://deep-learning-study.tistory.com/251