Matlab imshow功能边框紧不在小尺寸图像下工作

时间:2015-03-03 21:43:38

标签: matlab border

默认情况下,当imshow在图中显示图像时,它会以灰色边框环绕图像。您可以使用'border'参数更改此默认值并抑制边框,如以下示例所示。

imshow('moon.tif','Border','tight')

enter image description here

但是,我最近发现,当矩阵小于约125-130阈值时,边界紧密将停止工作

请尝试这两个Matlab命令,你会看到差异

imshow(rand(130,130),'Border','tight')  % works! no grey boundary at all
imshow(rand(120,120),'Border','tight')  % not working! grey boundary appears

以下是我的意见: enter image description here

这是一个错误吗?我该如何解决?

1 个答案:

答案 0 :(得分:1)

我刚刚通过编写下面的函数解决了这个问题

function outputimg = removeBorder(inputimg, size)
outputimg = zeros(size,size,3);
grayscale = rgb2gray(inputimg);
%Find upper left element in foreground
[x,y] = find(grayscale~=204,1);
outputimg = inputimg(x:x+size-1,y:y+size-1,:);

观察到灰色区域(边界)像素强度总是204,基本上,它检测到不等于204的第一个元素位置,即该正方形的左上角。然后,由于我们知道有效区域的平方大小,我们最终可以裁剪矩阵以删除所有边界。

可能失败的代码的唯一缺点是前景不能包含正好为204的像素值,在我的情况下,它是可接受的。我也尝试计算每边的边框尺寸,但发现尺寸因某种原因不平衡,不确定原因。

感谢@ Benoit_11的帮助。