// QB_ImageProcessFunc.cpp : 定义 DLL 的初始化例程。 // #include "stdafx.h" #define IMGPROCESS_EXPORTS // 包含头文件 #include "QB_ImgProcessFun.h" #include "SysGeoCorrect.h" #include "GeoTIFFEdit.h" #include "IntensityControl.h" #include "ContrastControl.h" #include "DefinitionControl.h" #include "GeoInfoCalculate.h" #include "GCPGeoCorrect.h" #include "DecreaseHazeControl.h" #include "GetElevation.h" #include "fuseImg.h" #include "superResolutionImg.h" // 功能:图像去雾处理 //1.1. 图像去雾控制 IMGPROCESS_API bool DoDehazeCtrl(QBStru *qbData, int A_MAX, double degree, bool bSrcFirst) { return QBStruDeHazeControl(qbData, A_MAX, degree, bSrcFirst); } //1.2 功能:图像去雾控制(函数重载) IMGPROCESS_API bool DoDehazeCtrl(ImgStru* src, ImgStru* dst, int A_MAX, double degree) { return ImgStruDeHazeControl(src, dst, A_MAX, degree); } //2.1 功能:图像亮度控制 IMGPROCESS_API bool DoIntensityCtrl(QBStru *qbData, int degree, bool bSrcFirst) { return QBStruIntensityControl(qbData, degree, bSrcFirst); } //2.2 功能:图像亮度控制 IMGPROCESS_API bool DoIntensityCtrl(ImgStru* src, ImgStru* dst, int degree) { return ImgStruIntensityControl(src, dst, degree); } //3.1 功能:图像对比度控制 IMGPROCESS_API bool DoContrastCtrl(QBStru *qbData, int degree, bool bSrcFirst) { return QBStruContrastControl(qbData, degree, bSrcFirst); } //3.2 功能:图像对比度控制(函数重载) IMGPROCESS_API bool DoContrastCtrl(ImgStru* src, ImgStru* dst, int degree) { return ImgStruContrastControl(src, dst, degree); } //4.1 功能:图像清晰度控制 IMGPROCESS_API bool DoDefinitionCtrl(QBStru *qbData, int degree, bool bSrcFirst) { return QBStruDefinitionControl(qbData, degree, bSrcFirst); } //4.2 功能:图像清晰度控制(函数重载) IMGPROCESS_API bool DoDefinitionCtrl(ImgStru* src, ImgStru* dst, int degree) { return ImgStruDefinitionControl(src, dst, degree); } //5.1 功能:计算图像中心点经纬度坐标、载荷等效俯仰角和方位角 IMGPROCESS_API bool DoCalImgCenterCoordinate(double &Lon, double &Lat, double &H, const struQB_FJ *frame) { return CalImgCenterCoordinate(Lon, Lat, H, frame); } //5.2 功能:计算图像中任意点经纬度坐标 IMGPROCESS_API bool DoCalAnyPtCoordinate(double &Lon, double &Lat, double &H, const struQB_FJ *frame, int pt_x, int pt_y) { return CalAnyPtCoordinate(Lon, Lat, H, frame, pt_x, pt_y); } //6.1 功能:基于复接数据的图像系统级几何校正 IMGPROCESS_API bool DoSysGeoCorrect(QBStru *qbData, bool bSrcFirst) { return SysGeoCorrectImg(qbData, bSrcFirst); } //6.2 功能:基于复接数据的图像系统级几何校正(重载) IMGPROCESS_API bool DoSysGeoCorrect(ImgStru *dstImg, const ImgStru *srcImg, const struQB_FJ *frameData) { return SysGeoCorrectImg(dstImg, srcImg, frameData); } //6.3 功能:基于地面控制点的几何精校正 IMGPROCESS_API bool DoGCPGeoCorrectImg(ImgStru *dstImg, const ImgStru *srcImg, const std::vector& GCP_XY, const std::vector& GCP_LonLat, int type) { return GCPGeoCorrectImg(dstImg, srcImg, GCP_XY, GCP_LonLat, type); } //6.4 功能: OpenCV图像格式基于地面控制点的几何精校正 IMGPROCESS_API bool DoGCPGeoCorrectImg( cv::Mat& dstImg, GeoBoundingBox& LBbox, const cv::Mat& srcImg, const std::vector& GCP_XY, const std::vector& GCP_LonLat, int type) { return GCPGeoCorrectImg(dstImg, LBbox, srcImg, GCP_XY, GCP_LonLat, type); } //6.5 功能:基于控制点的几何校正 IMGPROCESS_API bool DoCPBasedImgCorrect( cv::Mat &dstImg, const cv::Mat &srcImg, const std::vector& GCP_xy, const std::vector& GCP_XY) { return CPBasedImgCorrect(dstImg, srcImg, GCP_xy, GCP_XY); } //7.1 功能:保存情报数据至本地文件(GeoTiff格式) IMGPROCESS_API bool SaveToGeoTIFF(QBStru *qbData, string savePath) { return SaveQBDataToGeoTIFF(qbData, savePath); } //7.2 功能:保存图像数据至本地文件(GeoTiff格式) IMGPROCESS_API bool SaveToGeoTIFF(const ImgStru *Img, string savePath) { return SaveImgStruToGeoTIFF(Img, savePath); } //7.3 功能:保存图像数据至本地文件(GeoTiff格式) IMGPROCESS_API bool SaveToGeoTIFF(cv::Mat& Img, GeoBoundingBox& LBbox, string savePath) { return SaveImgStruToGeoTIFF(Img, LBbox, savePath); } //8.1 功能:计算图像(几何校正前)中两点间的距离和方位(重载) IMGPROCESS_API bool CalculateTwoPtsDistanceAzimuth(double &distance, double &azAngle, const struQB_FJ *frameData, cv::Point pt1, cv::Point pt2) { return CalTwoPointsDistanceAzimuth(distance, azAngle, frameData, pt1, pt2); } //8.2 功能:计算图像中两点间的距离和方位 IMGPROCESS_API bool CalculateTwoPtsDistanceAzimuth(double &distance, double &azAngle, const QBStru *qbData, cv::Point pt1, cv::Point pt2, int flags) { return QBStruCalTwoPtsDistanceAzimuth(distance, azAngle, qbData, pt1, pt2, flags); } //9.1 功能:计算图像中多点组成的多边形面积 IMGPROCESS_API bool CalculatePloygonArea(double& area, const struQB_FJ *frameData, cv::Point* points, int count) { return CalPolygonArea(area, frameData, points, count); } //9.2 功能:计算图像中多边形面积 IMGPROCESS_API bool CalculatePloygonArea(double &area, const QBStru *qbData, cv::Point* point, int count, int flags) { return QBStruCalPolygonArea(area, qbData, point, count, flags); } //10 读取高程 //功能:基于经纬度读取地面高程 //输入: // 1. fLonDeg: 经度(度) // 2. fLatDeg: 纬度(度) // 3. sDir: 高程数据文件存储路径, 默认设为:"D:\\ElevationData" // //输出: // 1. fElevator:高程(米) // //返回值:若函数运行成功,返回true,否则返回false bool GetElevation( float& fElevator, double dLonDeg, double dLatDeg, string sDir, bool bNearst) { return GetDem(fElevator, dLonDeg, dLatDeg, sDir, bNearst); } // 清理DEM记忆 void ClearDem() { ClearDemMem(); } // 11.1 功能:函数 DoFastFuseImgRGBplusIR() 快速融合两幅输入图像 // 输入: // img1: 输入图像1:RGB:三通道 // img2: 输入图像2:IR:三通道或单通道 // 输出: // dst: 融合图像 // 返回值: // 运算有效返回true,否则返回false bool DoFastFuseImgRGBplusIR(cv::Mat &dst, const cv::Mat RGBimg, const cv::Mat IRimg) { return FastFuseImgRGBplusIR(dst, RGBimg, IRimg); } // 11.2 功能:函数 DoFuseImgRGBplusIR() 基于小波变换融合两幅输入图像 // 输入: // img1: 输入图像1:RGB:三通道 // img2: 输入图像2:IR:三通道或单通道 // wname: 小波名称 // 支持小波: // 1. haar // 2. symN [1, 10] // 3. dbN [1, 10] // 4. coifN [1, 5] // level:小波分解层数 // 输出: // dst: 融合图像 // 返回值: // 运算有效返回true,否则返回false bool DoFuseImgRGBplusIR(cv::Mat &dst, const cv::Mat RGBimg, const cv::Mat IRimg, const string wname, const unsigned int level) { return FuseImgRGBplusIR(dst, RGBimg, IRimg, wname, level); } // 11.3 功能:函数 FuseImg() 基于小波变换融合两幅输入图像 // 输入: // img1: 输入图像1 // img2: 输入图像2 // wname: 小波名称 // 支持小波: // 1. haar // 2. symN [1, 10] // 3. dbN [1, 10] // 4. coifN [1, 10] // level:小波分解层数 // 输出: // dst: 融合图像 // 返回值: // 运算有效返回true,否则返回false bool DoFuseImg(cv::Mat &dst, const cv::Mat img1, const cv::Mat img2, const string wname, const unsigned int level) { return FuseImg(dst, img1, img2, wname, level); } // 功能:灰度图像(红外图像)超分辨率构建 // 输入: // imgDeque: 输入图像序列,要求图像尺寸相同,类型为CV_8UC1 // 输出: // dst: 输出超分图像 // 返回重建中有效的图像数目 int GetSuperResolutionImg(cv::Mat &dst, const std::deque &imgDeque, double multiple) { return SuperResolutionImg(dst, imgDeque, multiple); }