我正在考虑和扩展answer中关于的滑块,以便在Matlab的滑块中同时显示/连接两个图像,并能够通过在Matlab中使用.mat数据来更改色彩映射2016a。
因此,我必须使用imagesc
,因为您可以更改色彩映射。
我想从包含变量time
,potential
和matrix
的.mat数据制作图像,以便我可以更改colormap / etc
for k=1:2
% loaded variables from .mat data
img=imagesc(time, potential, matrix);
colormap('jet')
signal=cat(2,signal,img);
end
windowWidth = 320;
hImg = imshow(signal(:,1:1 + windowWidth,:), ... % TODO complication here?
'InitialMagnification', 100, 'Border', 'tight');
% End of the video code here https://stackoverflow.com/a/35924614/54964
% Not necessary for the case here!
最后,我想用imshow
进行放大。
输出
Index exceeds matrix dimensions.
Error in masi (line 7)
hImg = imshow(signal(:,1:1 + windowWidth,:), ...
我无法找到一种方法来进行imagesc-imshow,而无需以.png和.png图像结果写入光盘。
因此,这里只有saveas
和imread
for k=1:2
% loaded variables from .mat data
imagesc(time, potential, matrix);
colormap('jet');
saveas(gcf,'/tmp/Figure','png');
imgRGB=imread(fullfile('/tmp/','Figure.png'));
signal=cat(2,signal,imgRGB);
end
windowWidth = 320;
hImg = imshow(signal(:,1:1 + windowWidth,:), ...
'InitialMagnification', 100, 'Border', 'tight');
通过写入和读取提供正确的输出。
我正在试验Suever的总分辨率答案。我发现默认图像结果有噪音,您可以在滑块视频中轻松看到。 我认为最好的分辨率是-r95。我知道信号具有95%灵敏度的指示器,所以我直接选择它。测量中存在大约5-15%的不确定性,因此-r85也可能是好的,但我现在还不能很好地评估它。 对于我的系统中的分辨率,低边界是r55而没有生成图像(OS X 13“Macbook Air)。 一些分辨率值和我的经验
GUI中的> r124错误,表示某些上限
Struct contents reference from a non-struct array object.
Error in matlab.graphics.internal.getframeWithDecorations (line 49)
x = bi.getWidth();
Error in alternateGetframe
Error in getframe (line 84)
x = alternateGetframe(parentFig, h, offsetRect, withinClientRect);
Error in masi (line 114)
writeVideo(vid, getframe());
当输入信号的不确定度为5-15%时,能够估计r85,r90和r95之间的分辨率质量将是非常好的,这样我就不会从原始的1D信号中分阶段丢失它。
我得到了奇怪的结果,发现[0 0 15 15]
是具有大输出图像,小鬼影和无边界伪影的最佳选择。
我尝试了一些数学因素,如sqrt(2)和pi失败。
每英寸的默认点与前者相同,但图像大约小两倍。
如何使用imagesc
放大显示imshow
的结果?
答案 0 :(得分:1)
基本的想法似乎是你要创建一个RGB图像,它是使用imagesc
而不是实际将其首先保存到磁盘的屏幕上显示的版本。有几个完成此任务。
<强>的getFrame 强>
可以使用getframe
抓取当前轴的简单屏幕截图。这将返回一个包含两个字段的结构:cdata
and colormap
。 cdata
字段是您指定的数字的RGB表示形式(如果您未指定,则为gcf
。)
fr = getframe(hfig);
rgbImage = fr.cdata;
这种方法的缺点是getframe
输出的分辨率只是图的大小(以像素为单位)。如果您在小屏幕上显示非常大的图像,您显然会在生成的图像中丢失很多细节。
打印强>
内置print
功能通常用于将信息发送到打印机或图像文件;但是您可以将输出设备指定为-RGBImage
,这将返回RGB版本作为输出。
rgbImage = print(hfig, '-RGBImage');
使用print
的真正好处是您可以control the resolution输出图像以及许多其他因素。
biggerRGB = print(hfig, '-RGBImage', '-r300'); % 300 dpi
如果在创建图形时,您确定要指定尺寸(以英寸为单位),则无论您当时使用的是什么机器,此操作的结果都将是相同的大小。
hfig = figure('Units', 'inches', 'Position', [0 0 10 10]);
结合上面的-r300
,结果总是为3000x3000像素。