默认情况下,当imshow在图中显示图像时,它会以灰色边框环绕图像。您可以使用'border'参数更改此默认值并抑制边框,如以下示例所示。
imshow('moon.tif','Border','tight')
但是,我最近发现,当矩阵小于约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
以下是我的意见:
这是一个错误吗?我该如何解决?
答案 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的帮助。