// ImgProcessDll.h : 定义 DLL 应用程序的接口函数 // typedef long int32; typedef int BOOL; typedef unsigned char BYTE; typedef __int64 INT64 ; #pragma once /*================================== 图像前处理 =================================================================*/ /*************************************************************************** * ImgPreProcess() * 功能描述:若原始数据为有符号Y16,则在调用算法前,需先调用本函数进行数据转换 * 输入参数:short *pSrc 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * 输出参数:unsigned short* pDst 处理后的无符号数据 ***************************************************************************/ extern "C" __declspec(dllexport) void ImgPreProcess(short* pSrc, unsigned short* pDst, int nWidth, int nHeight); //原始数据先进行ImgDeMean操作 extern "C" __declspec(dllexport) void ImgDeMean(unsigned short* pSrc, unsigned short* pDst, int nWidth, int nHeight); /*================================== Diaoguang =================================================================*/ // 混合调光输入参数 typedef struct tagMixMapPara { BOOL DetecterType; // 探测器类型 0:制冷; 1:非制冷 float RightDiscard; // 右抛点百分比% float LeftDiscard; // 左抛点百分比% BOOL MapMethod; // 映射方式 0:均值; 1:中值 int MixMedthod; // 混合方式 0:线性; 1:直方图; 2:混合 BOOL LastFrame; // 是否使用上一场参数 0:当前场; 1:上一场 int MapRange; // 映射范围 int PlatThres; // 平台直方图阈值 int nBright; //y16亮度调节 int nContrast; //y16对比度调节 int nContrastThresh;//对比度限制阈值 float fHighImgPara; //IDE自适应调节高频参数 int nClaheLimit; //CLAHE平台阈值 int nBFStd; //IDE 灰度滤波参数 BOOL bIsBBHE_Y8mean_adapt; //是否自适应调整Y8MEAN int nClaheWinSize; //BBHE参数 int nY8MapMean; int nBBHELeft; int nBBHERight; tagMixMapPara() { //调光算法默认参数配置: DetecterType = 0; fHighImgPara = 0.0; //IDE自适应调节高频参数 LastFrame = 0; // 是否使用上一场参数 0:当前场; 1:上一场 LeftDiscard = 5; //1 // 左抛点百分比‰ MapMethod = 0; // 映射方式 0:均值; 1:中值 MapRange = 230; // 映射范围 MixMedthod = 2; // 混合方式 0:线性; 1:直方图; 2:混合 nBBHELeft = 300; // 2 nBBHERight = 100; // 3 nBFStd = 20; //IDE 灰度滤波参数 nBright = 50; //y16亮度调节 nClaheWinSize = 2; nClaheLimit = 5; //CLAHE平台阈值 nContrast = 50; //y16对比度调节 nContrastThresh = 75; //对比度限制阈值 nY8MapMean = 40; PlatThres = 200; // 平台直方图阈值 RightDiscard = 5; // 右抛点百分比‰ bIsBBHE_Y8mean_adapt = true; //是否自适应调整Y8MEAN } } MixMapPara; // 混合调光输出参数 typedef struct tagMixMapOut { int Y16_Range; // Y16图像动态范围 int Y16_Max; // int Y16_Min; // int Y16_Mean; // Y16图像均值 int Y8_Mean; //Y8均值 // tagMixMapOut() // { // Y16_Range = 0; // Y16_Max = 0; // // Y16_Min = 0; // // Y16_Mean = 0; // Y16图像均值 // Y8_Mean = 0; // } } MixMapOut; /*************************************************************************** * MixTiaoGuangDll() * 功能描述:混合调光算法: * 输入参数: unsigned short * pSrc : 输入16位图像 int nWidth: 图像宽 int nHeight: 图像高 * 输出参数: unsigned char* pDst: 输出调光后8位图像 ***************************************************************************/ extern "C" __declspec(dllexport) void MixTiaoGuangDll(unsigned short* pSrc, unsigned char* pDst, int nWidth, int nHeight, MixMapPara g_sMixMapPara, MixMapOut& g_sMixMapOut); /*************************************************************************** * BBHE_MixTiaoGuangDll() * 功能描述:混合调光算法: * 输入参数: unsigned short * pSrc : 输入16位图像 int nWidth: 图像宽 int nHeight: 图像高 * 输出参数: unsigned char* pDst: 输出调光后8位图像 ***************************************************************************/ extern "C" __declspec(dllexport) void BBHE_MixTiaoGuangDll(unsigned short* pSrc, unsigned char* pDst, int nWidth, int nHeight, MixMapPara g_sMixMapPara, MixMapOut& g_sMixMapOut); /*************************************************************************** * ClaheMappingDll() * 功能描述:分块调光 * 输入参数:unsigned short *pSrc 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * bool bDataMode 数据位宽,0:Y16;1:Y8 * int nWinSize 块数, 调节范围: 2\4\6\8,默认2 * int nNormLimit 阈值, 调节范围:1~20, 默认5 * 输出参数:unsigned char* const pDst 处理后的Y8图像 ***************************************************************************/ extern "C" __declspec(dllexport) void ClaheMappingDll(unsigned short* pSrc, unsigned char* const pDst, int nWidth, int nHeight, bool bDataMode, int nWinSize, int nNormLimit, MixMapPara g_sMixMapPara); /*================================== IDE =================================================================*/ /*************************************************************************** * IDE_MSR_BFDll() * 功能描述:IDE * 输入参数:unsigned short *pSrc 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * int nPosFilterWin 5x5 * 输出参数:unsigned char* pDst 处理后的Y8图像 ***************************************************************************/ extern "C" __declspec(dllexport) void IDE_MSR_BFDll(unsigned short* pSrc, unsigned char* pDst, int nWidth, int nHeight, int nPosFilterWin, MixMapPara& g_sMixMapPara, MixMapOut& g_sMixMapOut); /*================================== DDE =================================================================*/ /*************************************************************************** * LaplaceSharpenDll() * 功能描述:DDE * 输入参数:unsigned short *pSrc 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * int nFilterHalfW 1 * int nFilterHalfH 1 * int gDdeStep 2 增强系数 * 输出参数:unsigned short *pSrc 处理后的图像 ***************************************************************************/ extern "C" __declspec(dllexport) void LaplaceSharpenDll(unsigned short* pSrc, int nWidth, int nHeight, int nFilterHalfW, int nFilterHalfH, int gDdeStep); /*************************************************************************** * NlMeansDll() * 功能描述:去噪 * 输入参数:unsigned short *pSrc16 16位无符号数据 * unsigned char* pSrc8 8位无符号数据 * unsigned char bitWitdth 16/8 * int nWidth 图像宽度 * int nHeight 图像高度 * int nSWBlocX 7 * int nSWBlocY 3 * int nPWBloc 1 * int nSigma 20 * 输出参数:unsigned short *pusSrcImg 处理后的图像 ***************************************************************************/ extern "C" __declspec(dllexport) void NlMeansDll(unsigned char bitWitdth, unsigned short* pSrc16, unsigned char* pSrc8, int nWidth, int nHeight, int nSWBlocX, int nSWBlocY, int nPWBloc, int nSigma); /*================================== 去竖条纹 =================================================================*/ /*************************************************************************** * RemoveVecStripeNoise() * 功能描述:原去竖条纹 * 输入参数:unsigned short *pusSrcImg 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * int nVecStripeStd 50 * int nVecStripeWin 9 * int nVecStripeWeightThres 3700 * int nVecStripeValueThres 15 * 输出参数:unsigned short *pusSrcImg 处理后的图像 ***************************************************************************/ extern "C" __declspec(dllexport) void RemoveVecStripeNoise(unsigned short* pusSrcImg, int nWidth, int nHeight, int nVecStripeStd, int nVecStripeWin, int nVecStripeWeightThres, int nVecStripeValueThres); /*************************************************************************** * RemoveVecStripeNoiseByFourPart() * 功能描述:4去竖条纹 * 输入参数:unsigned short *pusSrcImg 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * int nVecStripeStd 50 * int nVecStripeWin 9 * int nVecStripeWeightThres 3700 * int nVecStripeValueThres 15 * 输出参数:unsigned short *pusSrcImg 处理后的图像 ***************************************************************************/ extern "C" __declspec(dllexport) void RemoveVecStripeNoiseByFourPart(unsigned short* pusSrcImg, int nWidth, int nHeight, int nVecStripeStd, int nVecStripeWin, int nVecStripeWeightThres, int nVecStripeValueThres); /*================================== 去横纹 =================================================================*/ /*************************************************************************** * RemoveHorStripeNoise() * 功能描述:去横纹 * 输入参数:unsigned short *pusSrcImg 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * int nVecStripeStd 50 * int nVecStripeWin 9 * int nVecStripeWeightThres 3700 * int nVecStripeValueThres 15 * 输出参数:unsigned short *pusSrcImg 处理后的图像 ***************************************************************************/ extern "C" __declspec(dllexport) void RemoveHorStripeNoise(unsigned short* pusSrcImg, int nWidth, int nHeight, int nVecStripeStd, int nVecStripeWin, int nVecStripeWeightThres, int nVecStripeValueThres); /*================================== 时域滤波 =================================================================*/ /*************************************************************************** * TimeNoiseFliterDll() * 功能描述:时域滤波 * 输入参数:unsigned short *pusSrc 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * int nSigma 10 * int nPower 5 * 输出参数:unsigned short *pusSrc 处理后的图像 ***************************************************************************/ extern "C" __declspec(dllexport) void TimeNoiseFliterDll(unsigned short* pusSrc, int nWidth, int nHeight, int nSigma, int nPower); /*================================== 去坏点 =================================================================*/ /*************************************************************************** * BadPixelDeTect() * 功能描述:静态去坏点,处理均匀面 * 输入参数:unsigned short *pSrc 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * int g_nAutoBadPixelKernel 5 * int g_badpixelThreshold 15 * 输出参数:int &g_badpixleNumSingle 坏点数 ***************************************************************************/ extern "C" __declspec(dllexport) void BadPixelDeTect(unsigned short* pSrc, unsigned char* pDst, int nWidth, int nHeight, int g_nAutoBadPixelKernel, int g_badpixelThreshold, int& g_badpixleNumSingle); /*************************************************************************** * BadPixelDeTect() * 功能描述:运动去坏点,运动场景 * 输入参数:unsigned short *pSrc 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * int g_nAutoBadPixelKernel 5 * int g_badpixelThreshold 15 * 输出参数:int &g_badpixleNumSingle 坏点数 ***************************************************************************/ extern "C" __declspec(dllexport) void BtmRemoveBadPixel(unsigned short* pSrc, int nWidth, int nHeight, int g_nAutoBadPixelKernel, int g_badpixelThreshold, int& g_badpixleNumMove); /*================================== 去锅盖 =================================================================*/ /*************************************************************************** * DeGuoGai() * 功能描述:去锅盖 * 输入参数:unsigned short *pSrc 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * BOOL g_bGuoGaiModel true * unsigned short *pModelImg model image * 输出参数:unsigned short *pSrc 去锅盖数据 ***************************************************************************/ extern "C" __declspec(dllexport) void DeGuoGai(unsigned short* pSrc, int nWidth, int nHeight, BOOL g_bGuoGaiModel, unsigned short* pModelImg); /*================================== 图像缩放 =================================================================*/ /*************************************************************************** * bilinearResizeY16() * 功能描述:Y16图像缩放 * 输入参数:unsigned short *pSrc 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * float g_fZoomWidth 1.0 * float g_fZoomHeight 1.0 * 输出参数:unsigned short *pSrc 图像缩放 ***************************************************************************/ extern "C" __declspec(dllexport) void bilinearResizeY16(unsigned short* pSrc, int iWidth, int iHeight, float g_fZoomWidth, float g_fZoomHeight); /*************************************************************************** * bilinearResizeY8() * 功能描述:Y8图像缩放 * 输入参数:unsigned char *pSrc 16位无符号数据 * int nWidth 图像宽度 * int nHeight 图像高度 * float g_fZoomWidth 1.0 * float g_fZoomHeight 1.0 * 输出参数:unsigned char *pSrc 图像缩放 ***************************************************************************/ extern "C" __declspec(dllexport) void bilinearResizeY8(unsigned char* pSrc, int iWidth, int iHeight, float g_fZoomWidth, float g_fZoomHeight);