147 lines
3.9 KiB
C++
147 lines
3.9 KiB
C++
#include "stdafx.h"
|
|
#include "ImageOperatorBase.h"
|
|
#include "BaseTool.h"
|
|
#include "GeoOperator.h"
|
|
#include <Eigen/Core>
|
|
#include <Eigen/Dense>
|
|
#include <omp.h>
|
|
#include <io.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <gdal.h>
|
|
#include <gdal_utils.h>
|
|
#include <gdal_priv.h>
|
|
#include <gdalwarper.h>
|
|
#include <proj.h>
|
|
#include <string.h>
|
|
#include <memory>
|
|
#include <iostream>
|
|
#include "FileOperator.h"
|
|
#include <opencv2/opencv.hpp>
|
|
#include <QMessageBox>
|
|
#include <QDir>
|
|
#include <fcntl.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <QProgressDialog>
|
|
#include <gdal_priv.h>
|
|
#include <ogr_spatialref.h> // OGRSpatialReference 用于空间参考转换
|
|
#include <gdal_alg.h> // 用于 GDALWarp 操作
|
|
|
|
|
|
|
|
void testOutAmpArr(QString filename, float* amp, long rowcount, long colcount)
|
|
{
|
|
|
|
|
|
Eigen::MatrixXd h_amp_img = Eigen::MatrixXd::Zero(rowcount, colcount);
|
|
|
|
for (long hii = 0; hii < rowcount; hii++) {
|
|
for (long hjj = 0; hjj < colcount; hjj++) {
|
|
h_amp_img(hii, hjj) = amp[hii * colcount + hjj];
|
|
}
|
|
}
|
|
QString ampPath = getDebugDataPath(filename);
|
|
saveEigenMatrixXd2Bin(h_amp_img, ampPath);
|
|
qDebug() << filename.toLocal8Bit().constData();
|
|
qDebug() << "max:\t" << h_amp_img.maxCoeff();
|
|
qDebug() << "min:\t" << h_amp_img.minCoeff();
|
|
}
|
|
|
|
void testOutAmpArr(QString filename, double* amp, long rowcount, long colcount)
|
|
{
|
|
|
|
|
|
Eigen::MatrixXd h_amp_img = Eigen::MatrixXd::Zero(rowcount, colcount);
|
|
|
|
for (long hii = 0; hii < rowcount; hii++) {
|
|
for (long hjj = 0; hjj < colcount; hjj++) {
|
|
h_amp_img(hii, hjj) = amp[hii * colcount + hjj];
|
|
}
|
|
}
|
|
QString ampPath = getDebugDataPath(filename);
|
|
saveEigenMatrixXd2Bin(h_amp_img, ampPath);
|
|
qDebug() << filename.toLocal8Bit().constData();
|
|
qDebug() << "max:\t" << h_amp_img.maxCoeff();
|
|
qDebug() << "min:\t" << h_amp_img.minCoeff();
|
|
}
|
|
|
|
|
|
void testOutClsArr(QString filename, long* amp, long rowcount, long colcount) {
|
|
|
|
Eigen::MatrixXd h_amp_img = Eigen::MatrixXd::Zero(rowcount, colcount);
|
|
|
|
for (long hii = 0; hii < rowcount; hii++) {
|
|
for (long hjj = 0; hjj < colcount; hjj++) {
|
|
h_amp_img(hii, hjj) = amp[hii * colcount + hjj];
|
|
}
|
|
}
|
|
QString ampPath = getDebugDataPath(filename);
|
|
saveEigenMatrixXd2Bin(h_amp_img, ampPath);
|
|
qDebug() << filename.toLocal8Bit().constData();
|
|
qDebug() << "max:\t" << h_amp_img.maxCoeff();
|
|
qDebug() << "min:\t" << h_amp_img.minCoeff();
|
|
|
|
}
|
|
|
|
void testOutComplexDoubleArr(QString filename, std::complex<double>* data, long rowcount, long colcount)
|
|
{
|
|
QString ampPath = getDebugDataPath(filename);
|
|
gdalImageComplex compleximg = CreateEchoComplex(ampPath, rowcount, colcount, 1);
|
|
compleximg.saveImage(data, 0, 0, rowcount, colcount, 1);
|
|
|
|
return;
|
|
}
|
|
|
|
void testOutDataArr(QString filename, double* data, long rowcount, long colcount)
|
|
{
|
|
return testOutAmpArr(filename, data, rowcount, colcount);
|
|
}
|
|
|
|
void testOutDataArr(QString filename, float* data, long rowcount, long colcount)
|
|
{
|
|
return testOutAmpArr(filename, data, rowcount, colcount);
|
|
}
|
|
|
|
void testOutDataArr(QString filename, long* data, long rowcount, long colcount)
|
|
{
|
|
return testOutClsArr(filename, data, rowcount, colcount);
|
|
}
|
|
|
|
void testOutAntPatternTrans(QString antpatternfilename, double* antPatternArr,
|
|
double starttheta, double deltetheta,
|
|
double startphi, double deltaphi,
|
|
long thetanum, long phinum)
|
|
{
|
|
|
|
|
|
Eigen::MatrixXd antPatternMatrix(thetanum, phinum);
|
|
for (long t = 0; t < thetanum; ++t) {
|
|
for (long p = 0; p < phinum; ++p) {
|
|
long index = t * phinum + p;
|
|
if (index < thetanum * phinum) {
|
|
antPatternMatrix(t, p) = static_cast<double>(antPatternArr[index]); // Copy to Eigen matrix
|
|
}
|
|
}
|
|
}
|
|
|
|
Eigen::MatrixXd gt(2, 3);
|
|
gt(0, 0) = startphi;//x
|
|
gt(0, 1) = deltaphi;
|
|
gt(0, 2) = 0;
|
|
|
|
gt(1, 0) = starttheta;
|
|
gt(1, 1) = 0;
|
|
gt(1, 2) = deltetheta;
|
|
|
|
QString antpatternfilepath = getDebugDataPath(antpatternfilename);
|
|
gdalImage ds = CreategdalImageDouble(antpatternfilepath, thetanum, phinum, 1, gt, "", true, true, true);
|
|
ds.saveImage(antPatternMatrix, 0, 0, 1);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|