【发布时间】:2021-12-15 15:55:17
【问题描述】:
我想显示一张卫星图像(16 位),其中包含 4 个强度级别的波段:红色、绿色、蓝色和 nir。但是,我只想显示前 3 个波段。我使用以下代码:
RGB=imread('IMG_PHR1B_MS_202106020751594_ORT_5893575101-2_R1C1.TIF');
subset_RGB=RGB(1550:3238,343:1250,1:3);
figure(1)
imshow(subet_RGB)
impixelinfo
像素显示明显不同的值,但图像是完全黑色的。 值范围:
红色:473-4152
绿色:599-4256
蓝色:507-3737
我将此图像转换为 HSV(因为我也需要它)。
normal=im2double(subset_RGB);
hsv=rgb2hsv(normal);
imshow(hsv)
此图像确实会生成彩色图像。 我可能认为这是因为 hsv 是双倍的,而 subset_RGB 是 16 位的。所以我尝试了以下方法:
test=im2double(subset_RGB)
imshow(test)
我也按照建议尝试了 imagesc,但结果是黑色图像:
figure(2)
imagesc(subset_RGB)
如何以真彩色显示原始图像?
【问题讨论】:
-
你图片中像素值的范围是0到255吗?
-
试试
imagesc?这会在显示之前缩放图像。 -
我用两种建议编辑了帖子。
-
使用
imshow(subet_RGB,[])。 -
根据此处的文档:mathworks.com/help/matlab/ref/… 您的颜色三元组值应在 [0 255] 范围内,但您说您的值范围远远超出该范围。他们以后会扩大规模吗?