我怎么能救地理图像倾斜geoTiff文件吗?

16个视图(30天)
我怎么能将图像保存到一个geoTiff文件。我知道的纬度和经度图像的四个角,但图像不是对齐的北/南,东/西。

答案(1)

LeoAiE
LeoAiE 2023年4月23日
我认为你可以使用 geotiffwrite 从映射函数工具箱以及像素坐标映射到地理坐标的变换矩阵。
%加载图像(“your_image.jpg”替换为您的图像文件)
我= imread (“your_image.jpg”);
%的经度和纬度定义图像的四个角
%(替换例子坐标与图像坐标的角落)
latCorners = (37.5, 37.7, 37.4, 37.6);%(左上的右上的左下侧,右下角)
lonCorners = (-122.2, -122.0, -122.3, -122.1);%(左上的右上的左下侧,右下角)
%计算变换矩阵(仿射变换)
宽度=大小(我,2);
身高=大小(我,1);
x =[0,宽度,0,宽度);
y =(0, 0,高度,高度);
= [x, y,则(4,1)]\ [lonCorners”, latCorners”);
%保存形象GeoTIFF文件指定的变换矩阵
geotiffwrite (“output_geotiff.tif”我,);
2的评论
LeoAiE
LeoAiE 2023年4月24日
抱歉我没有使用geotiffwrite,但这里的代码我测试图像和它工作
%加载图像(“your_image.jpg”替换为您的图像文件)
我= imread (“选择性色相02. jpg”);
%的经度和纬度定义图像的四个角
%(替换例子坐标与图像坐标的角落)
latCorners = (37.5, 37.7, 37.4, 37.6);%(左上的右上的左下侧,右下角)
lonCorners = (-122.2, -122.0, -122.3, -122.1);%(左上的右上的左下侧,右下角)
%计算变换矩阵(仿射变换)
宽度=大小(我,2);
身高=大小(我,1);
x =[0,宽度,0,宽度);
y =(0, 0,高度,高度);
= [x, y,则(4,1)]\ [lonCorners”, latCorners”);
= ';
%保存图像
output_filename =“output_image.tif”;
imwrite(我output_filename);
%创建世界文件
createWorldFile (output_filename);
函数createWorldFile(文件名)
% CREATEWORLDFILE创建一个世界文件指定的仿射变换矩阵
worldfile = [(1, 1)、(2,1)、(1、2), (2, 2), (1、3), (2, 3)];
%将图像文件扩展名替换为“.tfw”
(路径、名称、~)= fileparts(文件名);
worldfilename = fullfile(路径,(名字,“.tfw”]);
%写文件
fid = fopen (worldfilename,' w ');
流(fid检测器,' % .10f .10f \ n \ n % % % .10f .10f \ n \ n % % .10f .10f \ n \ n”,worldfile);
文件关闭(fid);
结束

登录置评。

标签

下载188bet金宝搏


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!