我正在尝试在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);
答案 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];