|
- /* Copyright(c)--Navinfo--Author:fangzurui--date:2023-10-12 */
-
- #ifndef DATAMANAGER_IMAGEFILEMANAGER_H_
- #define DATAMANAGER_IMAGEFILEMANAGER_H_
-
- #include <QFile>
- #include <QDialog>
- #include <QFileInfo>
- #include <QFileDialog>
- #include <QProgressDialog>
- #include <QTextStream>
- #include <QButtonGroup>
- #include <QDateTime>
- #include <QString>
- #include <QDir>
- #include <QList>
- #include <QMessageBox>
-
- #include <iostream>
- #include <vector>
-
- #include "Algorithm/typedef.h"
- #include "Algorithm/ImageProjectInterface.hpp"
- #include "EarthViewer/OSGRender.h"
- #include "DataManager/RenderTool/ImageLayer.h"
- #include "DataManager/DataBase/ImageInfoDb.h"
-
- #include "ui_AdjustParam.h"
- #include "ui_ImageFileImport.h"
-
- extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class ImageFileImport; class AdjustParam;}
- QT_END_NAMESPACE
-
- class ImportData {
- public:
- // 输入参数值
- QString originImagePath = ""; // 红外/可见光影像路径
- QString type = ""; // 图像类型
- QString lon = ""; // 吊舱经度
- QString lat = ""; // 吊舱纬度
- QString alt = ""; // 吊舱高程
- QString craftHeading = ""; // 吊舱航向角
- QString craftPitching = ""; // 吊舱俯仰角
- QString craftRolling = ""; // 吊舱翻滚角
- QString pitching = ""; // 相机俯仰角
- QString heading = ""; // 相机航向角
- QString cameraFocus = ""; // 相机焦距
- QString range = ""; // 相机视角
- QString centerLon = ""; // 图像中心点经度
- QString centerLat = ""; // 图像中心点纬度
- QString centerAlt = ""; // 图像中心点高程
- QString distance = ""; // 图像中心点到相机的距离
- // 误差值
- QString headingError = "0.00"; // 吊舱航向角误差
- QString pitchingError = "0.00"; // 吊舱俯仰角误差
- QString rollingError = "0.00"; // 吊舱翻滚角误差
- QString transparency = "100"; // 图像透明度
- };
-
- class Algorithm {
- public:
- Algorithm();
- ~Algorithm();
-
- public:
- // 将参数信息转为算法适用的结构体
- void loadParameters(ImportData importData, IMAGEPROJECT_PARAMETER &stImageProjParameter);
-
- //在tif文件中加入地理坐标
- void addGeoInformationToTiff(const QString &tiffFilePath, REGION_INFOR stRegion);
-
- // 调用空间变换算法
- WF_ERROR_CODE SpatialVariation(ImportData importData);
-
- // 调用特征匹配算法
- bool FeatureMatching(ImportData importData);
-
- // 从DEM数据中获取高程值
- static double getElevationFromTiff(double longitude, double latitude);
- static double getElevationFromTiff(const std::string &tiffPath, double latitude, double longitude);
-
- // 获取tif文件中心点坐标
- static int calImageCenterCoord(QString strImagePath, MapPoint& mapPoint);
- };
-
- class AdjustParam : public QDialog {
- Q_OBJECT
- public:
- explicit AdjustParam(QWidget* parent = nullptr);
- ~AdjustParam();
-
- // 从参数输入窗口传入参数
- void setParameter(ImportData importData);
-
- // 初始化微调参数窗口
- void initAdjustParamWidget();
-
- private:
- // 检查传入参数是否符合要求
- bool isCorrectParam();
-
- public slots:
- // 调整ui中的值
- void changeHeading1Value(int value);
- void changeHeading2Value(int value);
- void changePitching1Value(int value);
- void changePitching2Value(int value);
- void changeRolling1Value(int value);
- void changeRolling2Value(int value);
- void changeRange1Value(int value);
- void changeRange2Value(int value);
-
- // 执行匹配
- void startMatch();
-
- // 开始匹配
- bool matchingInterface();
-
- private:
- Ui::AdjustParam* ui; // 微调窗口ui
- ImportData _importData; // 参数对象
-
- private:
- int heading1 = 0; // 记录各项参数小数点后两位的临时值
- int heading2 = 0;
- int pitching1 = 0;
- int pitching2 = 0;
- int rolling1 = 0;
- int rolling2 = 0;
- int range1 = 0;
- int range2 = 0;
- };
-
- class ImageFileImport : public QDialog {
- Q_OBJECT
- public:
- explicit ImageFileImport(QWidget* parent = nullptr);
- ~ImageFileImport();
-
- // 初始化影像导入窗口
- void initImportImageFileWidget();
-
- private:
- // 检查传入参数是否符合要求
- int isCorrectParam();
-
- public slots:
- // 获取样例文件路径
- void getOriginImageFilePath();
-
- // 清空输入的参数
- void clearParameter();
-
- // 执行算法
- void startSmartMode();
- void startManualMode();
-
- // 空间变化算法流程
- void spatialTranFlow(ImportData importData);
-
- // 特征匹配算法参数准备
- bool matchingInterface(ImportData importData);
-
- // 空间变换算法参数准备
- bool spatialTrans(ImportData importData);
-
- private:
- QButtonGroup* type; // 图像类型按钮组
- Ui::ImageFileImport* ui; // 图像导入窗口ui
- AdjustParam* _adjustWidget = nullptr; // 微调窗口对象
- QString lastFilePath; // 上一次打开的路径
- };
-
- class WaitingWidget : public QDialog {
- Q_OBJECT
- public:
- explicit WaitingWidget(QWidget* parent = nullptr);
- ~WaitingWidget();
- };
-
- #endif // DATAMANAGER_TIFFILEMANAGER_H_
|