从图像边缘去除2d基线

bla*_*bla 6 matlab image image-processing baseline

我有一个图像,比如说

z=double(rgb2gray(imread('onion.png')));
z=z./max(z(:));
imagesc(z)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然而,从各个方面约10个像素我得到了一个我想要删除的不同基线.基线可能是因为边缘像素的增益伪影.

人为地,我可以创建如下效果:

m=zeros(size(z));
m(1,:)=5; m(end,:)=5;
m(:,1)=5; m(:,end)=5;
m=conv2(m,fspecial('gaussian',15,3),'same');
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这样我实际得到的图像是这样的:

imagesc(z+m); % I assume the effect is additive but I dont know that
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想删除该基线框并将原始信息保留在该图像的边缘.有任何想法吗?

一些图像具有非常平滑的特征,所以我试图摆脱"框架",通过裁剪两侧和推断,但它没有做得很好.