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

来源:互联网 发布:明道软件电脑版下载 编辑:程序博客网 时间:2024/06/05 05:05

通常我们是利用专业遥感影像处理软件如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 = [];endend%将单个通道内的数据压缩至0-255function 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 0