Один из способов, я могу думать, что это пороговое изображение, так что у вас есть сплошной белый объект, немного сжимающий объект. Затем используйте слегка уменьшенный объект для индексации в маске основного объекта и удалите эту область. Кроме того, немного увеличьте область промежуточного результата, чтобы удалить внешний край границы. В конечном итоге это создаст выдолбленную маску, которая предназначена для удаления границ вашего объекта в пределах некоторого допуска, оставив остальную часть изображения неповрежденной. Любые значения, которые истинны в этой маске, могут использоваться для удаления границ.
Для воспроизводимости, я загрузил изображение в Stack Imgur так, что мы не должны полагаться на сторонний сайт, чтобы скачать изображение:
Это «немного» для сокращаться и расти, вам придется поиграть. Я выбрал 5 пикселей, поскольку это, похоже, работает. Чтобы сделать сокращение и рост, используйте эрозию и дилатацию соответственно с imerode
и imdilate
соответственно, и я использовал структурирующий элемент квадрата размером 5 × 5 пикселей.
% Read from Stack Imgur directly
im = imread('https://i.stack.imgur.com/UJcKA.png');
% Perform Sobel Edge detection
sim = edge(im, 'sobel');
% Find the mask of the object
mask = im > 5;
% Shrink the object
se = strel('square', 5);
mask_s = imerode(mask, se);
% Remove the inner boundary of the object
mask(mask_s) = false;
% Slightly enlarge now to ensure outer boundary is removed
mask = imdilate(mask, se);
% Create new image by removing the boundaries of the
% edge image
sim(mask) = false;
% Show the result
figure; imshow(sim);
Теперь мы получаем этот образ:
Вам придется играть с порога Собела, потому что я на самом деле не знаю, что вы использовали, чтобы получить желаемое изображение, которое вы хотите , Достаточно сказать, что порог по умолчанию не дает того, что показывают ожидаемые результаты.
Что вы подразумеваете под "удалить границу"? Вы имеете в виду удалить белый периметр объекта? Ваш желаемый результат в верхней части вашего сообщения включает краевые пиксели, которые являются внутренними для объекта, поэтому то, что вы описываете, и ваши желаемые результаты не соответствуют друг другу. – rayryeng
Да, просто хочу удалить белую полосу вокруг фигуры, желаемое изображение было показано в двоичном режиме. – asys
Основная цель - определить шов на фотографии. эта фотография получается после сегментации фона по линиям hough – asys