matlab构造圆盘,基于matlab的FY-4(全圆盘)影像几何纠正

折腾了三个星期,终于搞定了FY-4的几何纠正问题。期间求人无数,总结起来:还是得靠自己。慢慢摸索,一个个去试,在试错的过程中也让我学会不少东西。话不多说,进入正题。

1.有关FY-4的介绍以及几何校正的两种方法,可以参考官网:http://satellite.nsmc.org.cn/PortalSite/StaticContent/DocumentDownload.aspx?TypeID=3

2.方法选择

目前有两种方法可以实现FY-4的几何纠正,一种是通过计算方法,一种是通过给定的经纬度文件构建查找表。通过计算的方法经查存在一定的问题,其基本思路是通过计算每个行列号的经纬度坐标文件,然后生成控制点对影像进行校正。具体方法可以自行摸索。这里主要探讨根据官网给出的.raw文件,通过matlab读取,然后生成查找表进行校正。代码如下:

clc,clear;

dim = 10992;

fid=fopen('D:\FY-4\data\FullMask_Grid_1000.raw','rb');

data = fread(fid,dim*dim*2,'double');

b1 = reshape(data,[2,dim,dim]);

b1_lat = reshape(b1(1,:,:),dim,dim);

b1_lon = reshape(b1(2,:,:),dim,dim);

lat = b1_lat';

lon = b1_lon';

fclose(fid);

%%

x = lon(1619:2018,6656:7055); %截取一个子区间

y = lat(1619:2018,6656:7055);

%%

a = [];

b = [];

for i = 1:400 %将图像归一化,主要是为了方便将数值矩阵写成图像

for j = 1:400 %当然也可以试试mat2gray这个函数

a(i,j) = (x(i,j) - min(x(:)))/(max(x(:))-min(x(:))); %由于不清楚上面这个函数用的哪种归一化算法,所以自己写了个函数

b(i,j) = (y(i,j) - min(y(:)))/(max(y(:))-min(y(:)));

end

end

imwrite(a,'D:\FY-4\data\xxx_longitude.tif'); %将查找表文件输出

imwrite(b,'D:\FY-4\data\yyy_latitude.tif'); %注意输出后的文件在0-255之间,还需将数据还原为原始值,具体方法此处略去由于全圆盘数据量较大,所以这里只选取了400*400个子区间做实验。得到的X,Y查找表文件如下:

9aafe06d4301c2408dee937e31d1f38e.png

2c701ceb6d55326fd03cd6fac5cfbc55.png

上图分别为经纬度的查找表文件,有了查找表文件后,就可按照如下博客内容,在ENVI里进行基于GLT方法的几何校正工作,博客链接如下:http://blog.sina.com.cn/s/blog_764b1e9d0100qzow.html。

最后附上校正成功后的结果:

96be20f6b844b4f3dafd5893f5a30669.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值