在matlab中进行图像处理,一般使用的都是图像本地坐标,以左上角(1,1)开始。处理完成后,如果要将结果在带地理坐标的遥感影像中显示,或者需要输出成shp文件,就需要涉及到本地坐标和地理坐标的转换,我们可以使用pix2map函数来实现这个功能。
clc;clear;close all; [pic, R] = geotiffread('boston.tif'); %读取tif图像 figure(1),imshow(pic);
% pic即为本地图像,下面对本地图像进行操作 gray=rgb2gray(pic); bw=im2bw(gray,0.1); %阈值分割 bw=1-bw; bw1 = bwareaopen(bw,500000); %删除面积小于500000的区域 bw2=imfill(bw1,'holes'); %填充孔洞 figure(2),imshow(bw2); bw3=bwboundaries(bw2); %得到边缘轮廓 data=bw3{1,1}; %得到轮廓线的坐标,一个N*2的矩阵,此坐标为本地图像坐标 [lonX,latY]=pix2map(R,data(:,1),data(:,2)); %将本地图像坐标转换为地理坐标 figure(3),axis off; mapshow('boston.tif'); %显示带地理坐标的遥感影像 mapshow(lonX,latY,'Color','r'); %在遥感影像上显示轮廓