通过非 matlab/非本地工具 (GDAL) 以及本地工具 (geoimread) 的组合,我可以将 Sentinel-2A 数据提取为单个波段或作为采用 gdal 合并的 RGB 图像。我被困在使用
imshow(I, [])
产生黑色图像,显然没有信号。图像中的强度值范围是 271 - 4349。我知道图像中有一个很好的信号,因为当我这样做时:
bit_depth = 2^15;
I = swapbytes(I);
[I_indexed, color_map] = rgb2ind(I, bit_depth);
I_double = im2double(I_indexed, 'indexed');
ax1 = figure;
colormap(ax1, color_map);
image(I_double)
即索引图像,收集颜色图,设置颜色图然后调用image
函数,我得到了我正在探索的区域的相似之处(尽管颜色很奇怪)
我目前正在考虑是否应该尝试:
查找 Sentinel-2A 数据的低级描述,实现缩放/校正
使用工具箱,可能是这个。
可能在涉及 GDAL 的早期步骤之一中调整输出设置 非常感谢您的评论或建议。
一个基本的缩放方案是:
% convert image to double
I_double = im2double(I);
% scaling
max_intensity = max(I_double(:));
min_intensity = min(I_double(:));
range_intensity = max_intensity - min_intensity;
I_scaled = 2^16.*((I_double - min_intensity) ./ range_intensity);
% display
imshow(uint16(I_scaled))
uint16
注意到从double
for转换为的重要性imshow
。