tif栅格影像上控制点文件只按行列号记录,把matlib默认图像坐标系改为与tif一致,然后基于matlab用该文件批量标记控制点,控制点标为十字,并输出为ENVI可以看出控制点的tif
时间: 2024-05-25 16:18:34 浏览: 15
坐标。
步骤如下:
1. 打开tif栅格影像,获取其行列数,确定其左上角坐标和像素分辨率。
2. 将matlab默认图像坐标系改为与tif一致,即将原点移动至tif左上角,x轴与tif列方向一致,y轴与tif行方向相反,像素分辨率一致。
3. 根据控制点文件的行列号,计算出其对应在matlab中的坐标。
4. 在matlab中绘制十字标记,并输出为ENVI格式的控制点文件,其中包含控制点的行列号和对应的tif坐标。
相关问题
tif栅格影像上控制点文件只按行列号记录,基于matlab用该文件批量标记控制点,控制点标为十字,并输出为ENVI可以看出控制点的tif
影像。
以下是基于MATLAB的代码示例:
```matlab
% 读取控制点文件
fid = fopen('control_points.txt', 'r');
cp_data = textscan(fid, '%d %d');
fclose(fid);
% 读取tif影像
tif_file = 'input_image.tif';
info = imfinfo(tif_file);
num_cols = info.Width;
num_rows = info.Height;
% 标记控制点
imshow(tif_file);
hold on;
for i = 1:size(cp_data, 1)
col = cp_data{i, 1};
row = cp_data{i, 2};
x = (col - 1) / num_cols;
y = 1 - (row - 1) / num_rows;
plot(x, y, 'r+');
end
hold off;
% 输出为ENVI格式
output_file = 'output_image';
gdal_translate_cmd = sprintf('gdal_translate -of ENVI %s %s', tif_file, output_file);
system(gdal_translate_cmd);
```
其中,`control_points.txt`是控制点文件,每行记录一个控制点的行列号;`input_image.tif`是输入的tif影像;`output_image`是输出的ENVI影像,没有后缀名。代码中使用了`imshow`和`plot`函数来标记控制点,并使用了GDAL命令行工具`gdal_translate`将tif影像转换为ENVI影像格式。
注意,由于MATLAB默认的图像坐标系是从上到下,从左到右,而tif影像的行列号是从左到右,从上到下,因此需要对控制点的坐标进行转换。
tif栅格影像上控制点文件只按行列号记录,基于matlab用该文件批量标记控制点,控制点标为十字,并输出在ENVI中可以看到的形式
以下是一个基于MATLAB的脚本,可以批量标记tif栅格影像上的控制点,并输出为ENVI格式的控制点文件:
```matlab
% 读取控制点文件
cp_file = 'control_points.txt';
cp_data = dlmread(cp_file);
% 读取栅格影像
img_file = 'raster.tif';
info = geotiffinfo(img_file);
img = imread(img_file);
% 创建一个新的ENVI控制点文件
envi_file = 'control_points.envi';
envihdrwrite(envi_file, 'control_points.hdr');
% 遍历所有控制点,标记十字
for i = 1:size(cp_data, 1)
row = cp_data(i, 1);
col = cp_data(i, 2);
img(row-1:row+1, col-1:col+1, :) = 255;
img(row-5:row+5, col, :) = 255;
img(row, col-5:col+5, :) = 255;
% 计算控制点的地理坐标
[x, y] = pix2map(info, col, row);
% 将控制点地理坐标写入ENVI控制点文件
envihdradd(envi_file, [x, y], 'geo');
end
% 保存标记后的栅格影像
imwrite(img, 'raster_cp.tif');
```
在这个脚本中,控制点文件`control_points.txt`是一个以空格分隔的文本文件,第一列为行号,第二列为列号。栅格影像`raster.tif`是需要标记控制点的栅格影像。标记完控制点后,脚本将生成一个新的栅格影像文件`raster_cp.tif`,其中控制点被标记为白色的十字。同时,脚本还会生成一个ENVI格式的控制点文件`control_points.envi`,其中包含每个控制点的地理坐标信息。这个文件可以在ENVI软件中打开,用于后续的几何校正等操作。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)