在tif上用matlab自动批量标记已有像素坐标的控制点,控制点文件为csv,结果用envi的椭圆注记存储,并输出结果
时间: 2024-04-30 10:23:14 浏览: 70
以下是一个可能的解决方案:
1. 读取控制点文件(csv格式):
```
control_points = readtable('control_points.csv');
```
2. 读取tif文件:
```
tif_file = 'your_tif_file.tif';
info = imfinfo(tif_file);
num_images = numel(info);
% 读取第一张图像
I = imread(tif_file, 1);
```
3. 在图像上标记控制点:
```
figure;
imshow(I);
hold on;
% 循环遍历所有的控制点
for i = 1:size(control_points, 1)
x = control_points.x(i);
y = control_points.y(i);
plot(x, y, 'ro', 'MarkerSize', 10);
text(x+10, y+10, num2str(i), 'Color', 'white', 'FontSize', 14);
end
hold off;
```
4. 使用envi的椭圆注记存储结果:
```
% 读取tif的元数据
metadata = envihdrread(tif_file);
% 创建一个新的envi文件,用于存储注记
ann_file = 'your_ann_file.ann';
enviwrite(zeros(size(I)), ann_file, metadata, 'bip', 'ann');
% 读取注记文件
ann = enviinfo(ann_file);
ann_data = enviread(ann_file);
% 循环遍历所有的控制点,并在注记文件中添加椭圆注记
for i = 1:size(control_points, 1)
x = control_points.x(i);
y = control_points.y(i);
% 创建一个椭圆注记
ann_e = enviellipse(x, y, 10, 10, 0, 360, 'Color', [255, 0, 0], 'Thickness', 2);
% 将椭圆注记添加到注记文件中
ann_data(y-9:y+10, x-9:x+10, 1) = ann_e;
end
% 保存注记文件
enviwrite(ann_data, ann_file, ann, 'bip', 'ann');
```
完成后,你应该会得到一个包含椭圆注记的.env文件。
阅读全文