hyper-spectral图像显示在不正确的颜色显示在蓝色

2视图(30天)
你好!。我是新matlab,
我用multibandread显示特定频段的高光谱图像和光谱剖面(生或佛罗里达州或使用int),
我的问题是
1:图像显示而不是正常的颜色,它显示在蓝色(添加相关图片和代码)
2:我想每个乐队的光谱资料(我已经代码中的情节,但我得到的频谱似乎不像z-profile我从环境中获得)
3:我可以显示在颜色吗?
(注意我使用Matlab R2016a R2018a)
下面是我的代码
由于我editied代码 Guillaume ,让它更容易读/欢呼
非常感谢
文件名=“fvf01.fla”;
行= 1040;
样品= 1392;
乐队= 31;
数据类型=“uint16”;
抵消= 0;
交错=“bsq”;
byteorder =“ieee-le”;
bandtoread = 10;
bandname = sprintf (“带% d ',bandtoread);
img = multibandread(文件名、行、样品、乐队,
数据类型、抵消、交错、byteorder
{“乐队”,“直接”,bandtoread});
显示亮度图像(img);
标题(bandname);
10评论
kefo
kefo 2018年11月15日
@ 沃尔特·罗伯森 非常感谢。这是非常有用的和有用的链接
再次抱歉的混乱和我的标签,完全不理解它是如何工作的:D

登录置评。

接受的答案

Guillaume
Guillaume 2018年11月14日
很抱歉我努力明白你问我的回答可能是完全的。
我认为你最好加载整个高光谱图像作为一个三维矩阵,然后如果你想看一个特定的乐队,只是选择相关的3 d矩阵。这将会是这样的:
文件名=“fvf01.fla”;
行= 1040;
样品= 1392;
乐队= 31;
数据类型=“uint16”;
抵消= 0;
交错=“bsq”;
byteorder =“ieee-le”;
img = multibandread(文件名、行、样品、乐队,
数据类型、抵消、交错、byteorder);%阅读整体形象
% img应该是1040 x 1392 x 31矩阵
%查看一个特定的乐队
bandtoshow = 10;
imshow (img (:,:, bandtoshow));
标题(sprintf (“带% d 'bandtoshow));
注意,我使用 imshow 显示乐队,而不是 显示亮度图像 imshow 默认为一个灰度colourmap而 显示亮度图像 使用 帕累托 。你总是可以改变colourmap如果你使用 显示亮度图像 :
显示亮度图像(img (:,:, bandtoshow));
colormap(灰色);
我不认为有一个函数来显示多光谱图像在matlab与多光谱图像(但我不工作)。你可以做一个简单的gui,它可以让你看到每个单独带:
图;
himg = imshow (img (:,: 1));
hcontrol = uicontrol (“风格”,“popupmenu”,“字符串”组成(“带% d '1:乐队),“位置”(50 80 20),“回调”@ (hcontrol ~)集(himg,CData的img (::, hcontrol.Value)));
如果你想看到一个像素在乐队的形象,简单的索引你的3 d矩阵:
pixelrow = 50;
pixelcolumn = 20;
图;
情节(挤压(img (pixelrow、pixelcolumn:)));
标题(sprintf (的频谱在x = % d, y = % d '、pixelcolumn pixelrow));
这是你画上所有的光谱沿着给定的行:
行= 100;
图;
情节(挤压(img(行,:,)));
传奇(组成(“带% d '1:乐队));
标题(sprintf (“沿着行% d谱”、行));
希望,这可以帮助你做你想做的事情。
3评论
kefo
kefo 2018年11月15日
@Guillaume好我现在有大部分,另外每件事现在工作充分结合(图像加载、波段选择和显示在灰度dsplaying像素光谱,同样单一乐队和谱图或者在相同的图4乐队和4块 次要情节
类似的东西
没有的话我可以表达我的感激和钦佩你的慷慨,善良,知识和耐心,我已经学会了很多从你,期待以后更多的合作。
我们学习大师的职业
所以非常感谢一次又一次。真的很高兴认识你,保持像朋友。/友谊highfive
fig.PNG
图;
次要情节(2、2、1)
情节(挤压(图片(pixelrow1、pixelcolumn1:)));
标题(sprintf (的频谱在x = % d, y = % d '、pixelcolumn1 pixelrow1));

登录置评。

答案(1)

R阿卡什
R阿卡什 2020年6月22日
我想画一个光谱的高光谱图像捕获使用SpecimIQ相机。使用上述代码来画出频谱的我不能得到任何输出。
使用相同的代码如上所述。
图;
情节(挤压(图片(pixelrow1、pixelcolumn1:)));
标题(sprintf (的频谱在x = % d, y = % d '、pixelcolumn1 pixelrow1));
我的图片尺寸512 * 512,有204个乐队。
但输出光谱剖面显示空白的输出。
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年6月23日
nnz (~ isfinite(图片(pixelrow1、pixelcolumn1:)))
将有助于

登录置评。

类别

找到更多的在蓝色的帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!