#pragma once #include "ImgProcessGlobal.h" #include "FeatureMatching.h" #if defined(_MSC_VER) #include typedef SSIZE_T ssize_t; #endif enum IBorderType { IBORDER_CLAMP = (1 << 0), IBORDER_MIRROR = (1 << 1), IBORDER_REPEAT = (1 << 2), IBORDER_CONSTANT = (1 << 3) }; namespace IBorder { template T value(T value, T len, IBorderType type) { switch (type) { case IBORDER_CLAMP: if (value < 0) return 0; if (value >= len) return len - 1; return value; case IBORDER_MIRROR: if (value < 0) return -((value + 1) % len); if (value >= len) return len - 1 - value % len; return value; case IBORDER_REPEAT: if (value < 0) return len - 1 + ((value + 1) % len); if (value >= len) return value % len; return value; case IBORDER_CONSTANT: default: if (value < 0 || value >= len) return -1; } return -1; } } static float g_gauss3_data[] = { 0.25f, 0.5f, 0.25f }; static float g_gauss5_data[] = { 1.0f / 17.0f, 4.0f / 17.0f, 7.0f / 17.0f, 4.0f / 17.0f, 1.0f / 17.0f }; static float g_gauss7_data[] = { 1.0f / 226.0f, 12.0f / 226.0f, 55.0f / 226.0f, 90.0f / 226.0f, 55.0f / 226.0f, 12.0f / 226.0f, 1.0f / 226.0f }; static float g_derivate7_data[] = { -1.0f,-1.0f,-1.0f, 0.f, 1.0f,1.0f ,1.0f }; static float g_derivate21_data[] = { -1.0f,-1.0f,-1.0f,-1.0f,-1.0f,-1.0f,-1.0f,-1.0f,-1.0f,-1.0f, 0.f, 1.0f,1.0f ,1.0f, 1.0f,1.0f ,1.0f, 1.0f,1.0f ,1.0f,1.0f }; static float g_mean3_data[] = { 1.0f / 3.0f, 1.0f / 3.0f, 1.0f / 3.0f }; static float g_mean5_data[] = { 1.0f / 5.0f, 1.0f / 5.0f, 1.0f / 5.0f, 1.0f / 5.0f, 1.0f / 5.0f }; static float g_mean7_data[] = { 1.0f / 7.0f, 1.0f / 7.0f, 1.0f / 7.0f, 1.0f / 7.0f, 1.0f / 7.0f, 1.0f / 7.0f, 1.0f / 7.0f }; static float g_mean11_data[] = { 1.0f / 11.0f, 1.0f / 11.0f, 1.0f / 11.0f, 1.0f / 11.0f, 1.0f / 11.0f, 1.0f / 11.0f, 1.0f / 11.0f, 1.0f / 11.0f, 1.0f / 11.0f, 1.0f / 11.0f, 1.0f / 11.0f }; void CVX_PROCESS_EXPORT mulValue1f(float* dst, float const* src, const float value, const size_t n); void CVX_PROCESS_EXPORT convolveHorizontal1f(float* dst, const float* src, const size_t width, float const* weights, const size_t wn, IBorderType btype); float CVX_PROCESS_EXPORT ncc(const float* src1, const float* src2, const size_t n); cv::Mat CVX_PROCESS_EXPORT plotSignals1D(std::vector projArray, int plotImageHeight = -1); //¼ÆËãͼÏñµÄÇåÎú¶È float CVX_PROCESS_EXPORT calImgSharpness(cv::Mat Pic, cv::Rect roi); int CVX_PROCESS_EXPORT calRoiInfo(const cv::Mat& m, int& idxL, int& idxR, int& idyT, int& idyB, float rectExpandWidthFactor = 0.05, int sampleStep = 40, int gradientThresh = 50);