CUDA和OPENCL遥感影像正射校正


基于CUDA和OpenCL实现的高分一号遥感影像的RPC正射校正,并且取得了较高的加速比,适合遥感和图像处理的研发人员,对并行计算感兴趣的也可以下载
资源截图
代码片段和文件信息

#include 
#include 
#include 
#include 

#include “ImageWrap.h“
#include “RPCorth.h“

void TestRpc();

void main()
{
OGRRegisterAll();
GDALAllRegister();
CPLSetConfigOption(“GDAL_FILENAME_IS_UTF8“ “NO“);


//GDALDataset* poDatasetchangsha = (GDALDataset*)GDALOpen(“E:\投影转换测试\获取不了投影\248-279_5\SCENE01\IMAGERY.TIF“GA_ReadOnly);

//char* pszWkt1 = (char*)poDatasetchangsha->GetProjectionRef();
//if (0 == strlen(pszWkt1))
//{
// pszWkt1 = (char*)poDatasetchangsha->GetGCPProjection();
//}

//int nGCPCount = poDatasetchangsha->GetGCPCount();
//const GDAL_GCP *pGCPList = poDatasetchangsha->GetGCPs();

//OGRSpatialReference osr2;
//osr2.importFromWkt(&pszWkt1);
//osr2.morphToESRI();

//osr2.exportToWkt(&pszWkt1);

//printf(“%s
“pszWkt1);

////解算仿射变换系数
//double dbGeoTran[6];
//GDALGCPsToGeoTransform(nGCPCountpGCPListdbGeoTran0);
//printf(“%f
“dbGeoTran[0]);

//GDAL_GCP *pGCPs = new GDAL_GCP[nGCPCount];
//memcpy(pGCPspGCPListsizeof(GDAL_GCP)*nGCPCount);

//GDALClose(poDatasetchangsha);

/*const char* pszInFile = “E:\248-279_5\SCENE01\IMAGERY.TIF“;
const char* pszOutFile = “E:\248-279_5\SCENE01\IMAGERY-校正.TIF“;
ImageWarpByGCP(pszInFilepszOutFilenGCPCountpGCPspszWkt1000GRA_NearestNeighbour“GTiff“);*/

const char* pszInFile = “E:\my-space\数据\影像\高分一号-rpc\GF1_WFV2_E72.3_N22.6_20131024_L1A0000102424\GF1_WFV2_E72.3_N22.6_20131024_L1A0000102424.tiff“;
const char* pszOutFile = “E:\my-space\数据\影像\高分一号-rpc\高分一号校正-CUDA.tif“;

DWORD t1 = GetTickCount();
ImageWarpRPC(pszInFilepszOutFileSRS_WKT_WGS8400“GTiff“);

DWORD t2 = GetTickCount();
//TestRpc();

double tt = (t2-t1)/1000.0;
printf(“%f秒
“tt);



//开始控制点校正
  /*void *hTran = GDALCreateGCPTransformer(nGCPCountpGCPList0FALSE);

int nXsize = poDatasetchangsha->GetRasterXSize();
int nYsize = poDatasetchangsha->GetRasterYSize();
double x = dbGeoTran[0] + (nXsize/2)*fabs(dbGeoTran[1]);
double y = dbGeoTran[3] - (nYsize/2)*fabs(dbGeoTran[5]);
int nFlag = 0;
GDALGCPTransform(hTranTRUE1&x&yNULL&nFlag);

printf(“%f%f“xy);*/


}

void TestRpc()
{
GDALAllRegister();
CPLSetConfigOption(“GDAL_FILENAME_IS_UTF8“ “NO“);

// 打开原始图像
const char* pszInFile = “E:\my-space\数据\影像\高分一号-rpc\GF1_WFV2_E72.3_N22.6_20131024_L1A0000102424\GF1_WFV2_E72.3_N22.6_20131024_L1A0000102424.tiff“;
GDALDatasetH hSrcDS = GDALOpen(pszInFile GA_ReadOnly);
if (NULL == hSrcDS)
{
//return 0;
}

GDALDataType eDataType = GDALGetRasterDataType(GDALGetRasterBand(hSrcDS 1));
int nBandCount = GDALGetRasterCount(hSrcDS);

double dbGeonTran[6];
GDALGetGeoTransform(hSrcDSdbGeonTran);

// 创建几何多项式坐标转换关系
char** pszmetadata = GDALGetmetadata(hSrcDS“RPC“);
GDALRPCInfo sRPCInfo;
if (pszmetadata != NULL)
{
GDALExtractRPCInfo( pszmetadata &sRPCInfo );
}

stRPCInfo stInfo;
memcpy(&stInfo&sRPCI

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8840  2014-09-13 20:14  TestImgGCPDebugBuildLog.htm

     文件     553656  2014-09-07 21:35  TestImgGCPDebugGCPTest.obj

     文件     545466  2014-09-07 21:35  TestImgGCPDebugImageWrap.obj

     文件         67  2014-09-13 20:14  TestImgGCPDebugmt.dep

     文件      36175  2014-09-13 13:44  TestImgGCPDebugOpenCL.obj

     文件     227550  2014-09-08 19:03  TestImgGCPDebugRpcCUDAAlg.cu.obj

     文件      13728  2014-09-13 15:12  TestImgGCPDebugRpcOpenCLAlg.obj

     文件     316772  2014-09-13 20:14  TestImgGCPDebugRPCorth.obj

     文件         81  2014-09-06 00:13  TestImgGCPDebugTestImgGCP.device-link.options

     文件        663  2014-09-07 21:35  TestImgGCPDebugTestImgGCP.exe.embed.manifest

     文件        728  2014-09-07 21:35  TestImgGCPDebugTestImgGCP.exe.embed.manifest.res

     文件        621  2014-09-13 20:14  TestImgGCPDebugTestImgGCP.exe.intermediate.manifest

     文件     748544  2014-09-13 20:14  TestImgGCPDebugvc90.idb

     文件     405504  2014-09-13 20:14  TestImgGCPDebugvc90.pdb

     文件       3373  2014-09-06 10:11  TestImgGCPGCPTest.cpp

     文件      10348  2014-08-03 00:22  TestImgGCPImageWrap.cpp

     文件       1090  2014-08-03 00:03  TestImgGCPImageWrap.h

     文件       4209  2014-09-13 15:09  TestImgGCPkernel.cl

     文件          2  2014-09-04 20:21  TestImgGCPKernel.cu

     文件       3556  2014-09-13 13:44  TestImgGCPOpenCL.cpp

     文件        617  2014-08-07 20:06  TestImgGCPOpenCL.h

     文件      63360  2014-09-07 21:24  TestImgGCPReleaseBuildLog.htm

     文件     887698  2014-09-06 15:21  TestImgGCPReleaseGCPTest.obj

     文件     779982  2014-08-06 19:11  TestImgGCPReleaseImageWrap.obj

     文件         67  2014-09-07 21:24  TestImgGCPReleasemt.dep

     文件     226170  2014-09-07 21:24  TestImgGCPReleaseRpcCUDAAlg.cu.obj

     文件     669829  2014-09-07 21:24  TestImgGCPReleaseRPCorth.obj

     文件         30  2014-09-06 15:21  TestImgGCPReleaseTestImgGCP.device-link.options

     文件        616  2014-09-07 21:24  TestImgGCPReleaseTestImgGCP.exe.intermediate.manifest

     文件     330752  2014-09-07 21:24  TestImgGCPReleasevc90.idb

............此处省略17个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)