2d удаление базовой линии с краев изображения

У меня есть изображение, скажем, например

z=double(rgb2gray(imread('onion.png')));
z=z./max(z(:));
imagesc(z)

Тем не менее, ~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');

Таким образом, изображение, которое я на самом деле получаю, это:

imagesc(z+m); % I assume the effect is additive but I dont know that

Я хотел бы удалить этот базовый кадр и сохранить исходную информацию по краям изображения. Есть идеи?

Некоторые изображения имеют очень плавные функции, поэтому я попытался избавиться от "рамки", обрезая стороны и экстраполируя, но это не очень хорошо работает.

0 ответов

Другие вопросы по тегам