在MATLAB中显示图形而不压缩图形



我有一个MATLAB代码,我正在从图像中生成一些单词的边界图。然后使用从bwboundaries函数生成的点绘制,然后我使用生成的绘图来创建稍后在代码中使用的图像。

下面是代码片段:
%GET 8-NEIGHBOURHOOD BOUNDARIES
[B,L,N] = bwboundaries(z,'noholes');
%PLOT THE BOUNDARY FIGURE FOR EACH WORD
figure;
hold on;
for k=1:length(B),
    boundary = B{k};
    if(k > N)
        plot(boundary(:,2),boundary(:,1),'g','LineWidth',2);
    else
        plot(boundary(:,2),boundary(:,1),'r','LineWidth',2);
    end
    set(gca, 'visible', 'off');
    F = getframe(gcf);
    [X, Map] = frame2im(F);
end

现在,使用稍微大一点的字体大小的正常文本,我得到了完美的结果,正如预期的那样。查看正确的输出

现在,当我的字体大小稍微小一点或者字母间距有点近的时候,我发现生成的绘图以某种方式被"压缩"以适应窗口大小。查看这里的错误输出

我希望绘图占用尽可能多的空间,因为它需要显示整个边界图像,如果需要调整自己的大小。否则,frame2im将捕获完全错误的图像,这将使我的进一步计算变得混乱。

编辑

我必须提到,最终的情节图是由几个较小的情节附加到一个图中形成的。然后使用frame2im转换最后的图。当每个较小的情节被"附加"时,图像的其余部分会"挤压"自己,为新的情节腾出空间。因此,最终的图像被完全压缩在一起。


我认为在Matlab中调整plot的大小,使图形不会被plot窗口的边缘切断,这是一个可能的重复,但在这种特殊情况下,plot被截断。在我的例子中,我发现情节被"压缩"以适应区域。

我不确定这是否是你正在寻找的,但它可能会有所帮助。下面是一个测试

%Simulation of a binary L and proper visualization
A=zeros(100,100);
A(80:90,10:60)=1;
A(10:90,10:20)=1;
figure,imagesc(A)
% concatenation of 20 binary L's and the shrink visualization
num=20;
A2=repmat(A,1,num);
figure,
imagesc(A2)
%correction of the visualization through the definition of the axes dimensions
figure,
axes('unit','normalized','position',[0.1 0.1 0.8 0.8/10])
imagesc(A2)
%correction of the visualization through the definition of the axis dimensions
figure,
imagesc(A2)
axis ([0,1000,0,100]) % axis image

您可以使用此模板来更改图像的外观,从而纠正收缩

最新更新