在MATLAB中防止颜色栏调整图像大小

时间:2018-08-05 08:14:42

标签: matlab image-processing matlab-figure colorbar

我正在尝试在MATLAB中向图像添加颜色条,而不会丢失图形的原始分辨率。

This link解释了如何处理添加颜色条会调整原始图像大小的事实。但是该解决方案通过使用插值法进行放大(从底部第6行开始使用的set方法)来制作原始的松散信息。对于我的应用程序来说,避免这种情况的发生至关重要(尝试观察摩尔纹对二次采样的影响)

我正在使用的代码附在下面

%% Load images using relative paths
path1 = '../data/circles_concentric.png';
path2 = '../data/barbaraSmall.png';
img1 = imread(path1, 'png');
img2 = imread(path2, 'png');
%Shrinking factor
d1 = 2;
d2 = 3;
img1_shrunk1 = myShrinkImageByFactorD(img1, d1);
imshow(img1_shrunk1);
colorbar(gca); 
img1_shrunk2 = myShrinkImageByFactorD(img1, d2);
figure, imshow(img1_shrunk2);
colorbar(gca);

1 个答案:

答案 0 :(得分:3)

我已经解决了这个问题,只需将颜色条放在单独的轴上即可。

%Import image and colormap
[img,map]=imread('image.tif');

%Create figure and show the image on ax1
fig=figure;
ax1=axes(fig);
imshow(img,map,'Parent',ax1);

%Create ax2 and make it invisible
ax2=axes(fig,...
    'Position',[ax1.Position(1)+ax1.Position(3),ax1.Position(2),0.2,0.7]);
axis off
set(ax2,'color','none');

%Apply colormap to ax2 and, colorbar and adjust CLim
colormap(map);
colorbar(ax2,'Position',...
    [ax1.Position(1)+ax1.Position(3)+0.03,0.1,0.05,0.7],...
        'AxisLocation','in');
ax2.CLim=[minValue,maxValue];