123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #pragma once
- #include "ImgProcessGlobal.h"
- #include "FeatureMatching.h"
- #if defined(_MSC_VER)
- #include <BaseTsd.h>
- 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<typename T>
- 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<float> 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);
|