Matlab读取、转换遥感影像到普通影像

论坛 期权论坛 脚本     
匿名网站用户   2020-12-21 09:08   96   0

通常我们是利用专业遥感影像处理软件如ENVI等来处理遥感影像。但是在处理小块遥感影像或者需要自己实现一些比较简单但envi上没有的功能,则需要自己编程实现,首要的一步就是读取遥感影像,本篇博客记录如何利用matlab读取遥感影像并将其转换为普通图像。
代码如下:

%输入为制定的RGB对应遥感影像的波段
function tif2jpg(r,g,b)
%这部分是批处理过程,因为我自己有大量的遥感影像片段需要处理,所以进行批处理
imgPath = 'RsImage/';
RStiff = dir([imgPath,'*.tif']);%得到指定文件夹下所有tif后缀的文件
len = length(RStiff);
for i = 1:len
    RsImg = imread([imgPath, RStiff(i).name]);
    RsChannel1 = RsImg(:,:,r);
    RsChannel2 = RsImg(:,:,g);
    RsChannel3 = RsImg(:,:,b);
    %因为从遥感影像读取的数据是int16型的,范围超过0-255,需要将每个通道数据压缩至0-255
    ImgChannel1 = transform(RsChannel1);
    ImgChannel2 = transform(RsChannel2);
    ImgChannel3 = transform(RsChannel3);
    %将R,G,B三个通道的数据压入图像中
    image(:,:,1) = uint8(ImgChannel1);
    image(:,:,2) = uint8(ImgChannel2);
    image(:,:,3) = uint8(ImgChannel3);
    image = uint8(image);%最后将image中的数据指定为int8 如无此步,则可能出错
    imwrite(image,['image-convert/',num2str(i,'%06d'),'.jpg']);
    image = [];
end
end
%将单个通道内的数据压缩至0-255
function imgChannel = transform(rsChannel)
maxC = max(max(rsChannel));
minC = min(min(rsChannel));
temp = maxC*1.0 - minC*1.0;
k = 255.0/double(temp);
b = -1.0*k*minC;
imgChannel = rsChannel*k + b;
end

到此,完成遥感影像到普通影像的转换,可以进行后续的其他操作了

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP