Вопрос по image, edge-detection, matlab, crop – Найдите края изображения и обрежьте его в MATLAB

1

У меня есть изображение RGB. Я отсканировал изображение. Таким образом, изображение занимает небольшую часть листа формата А4.

Я хочу найти границу изображения и обрезать его. Я мог бы использовать операторы обнаружения краев, такие как «Sobel». и т.д., но они обнаруживают все края, присутствующие на изображении. Все, что я хочу, это границы изображения. Также многие из функций обнаружения краев, включая «границы» работать только с двоичными или полутоновыми изображениями. Мое изображение RGB.

Я пытался использовать «imcrop», но это больше интерактивная обрезка. Я заинтересован в том, чтобы сделать это автоматически.

Загрузка тестового изображения:

Error: User Rate Limit Exceeded Jonas

Ваш Ответ

3   ответа
0

Error: User Rate Limit ExceededcornerError: User Rate Limit ExceededimcropError: User Rate Limit Exceeded

Благодарю. Попробую это. Я загрузил тестовое изображение. Поскольку будут существовать различия в значениях пикселей между фоном и изображением, граница изображения будет известна. Я попробую функцию угла с 4 углами. Sista
0

Error: User Rate Limit Exceededbwlabel Error: User Rate Limit ExceededError: User Rate Limit Exceeded

Error: User Rate Limit Exceededim2bw Error: User Rate Limit Exceeded.

5

Error: User Rate Limit Exceeded

img = imread('http://i.stack.imgur.com/dEawA.jpg');
%# instead of "==" you can check for similarity within a tolerance
tt=img(:,:,1)==img(:,:,2) & img(:,:,2) == img(:,:,3);

enter image description here

%# invert tt so that it's 1 where there is signal
tt = ~tt;

%# clean up some of the smaller artifacts
tto = imopen(~tt,strel('square',100));

enter image description here

%# get the areas and bounding box of the areas above threshold
%# as an additional criterion, you could also use excentricity
%# or you could simply remove the bottom 100 rows of the scan
stats = regionprops(tto,'BoundingBox','Area');
area = cat(1,stats.Area);
[~,maxAreaIdx] = max(Area);
bb = round(stats(maxAreaIdx).BoundingBox);

%# note that regionprops switches x and y (it's a long story)
croppedImage = img(bb(2):bb(2)+bb(4),bb(1):bb(1)+bb(3),:);

enter image description here

Error: User Rate Limit ExceededttoError: User Rate Limit ExceededimrotateError: User Rate Limit Exceeded

Привет, Джонас, большое спасибо. Я не знал «regionprops» работал таким образом. Я думаю, я могу попробовать это. Sista

Похожие вопросы