обрезать черную рамку изображений с помощью MatLab - PullRequest
0 голосов
/ 24 марта 2019

Для моей магистерской диссертации я должен рассмотреть несколько похожих по структуре изображений с помощью Matlab.Я уже закодировал фактическую оценку.Моя проблема в том, что изображения имеют черную рамку разной толщины.Это приведет к фальсификации оценки.Пока я обрезал границу вручную.Поэтому я хотел спросить, может ли кто-нибудь помочь мне вырезать этот кадр, используя код Matlab.

Ниже приведен пример изображения enter image description here

Я пытался решить эту проблемупроблема с заглушкой (https://de.mathworks.com/help/images/ref/edge.html), но она не работает.

Может быть, вы можете дать мне какой-нибудь совет

1 Ответ

0 голосов
/ 24 марта 2019

Я бы не использовал функцию определения края, как вы указали в своем вопросе.

Скорее я бы сосредоточился на уменьшении размеров изображения и анализе «уменьшенного изображения». В следующем коде вы можете увидеть пример сокращения изображения на две репрезентативные линии и анализа линии для обнаружения образца.

% Load the image.
Img = imread('pfi36.png');

% Level to pass for the "edge" detection.
lvl = 50;

% Add a buffer around the edges.
buf = 10;

% Reduce the Image to 1D along the x and y driections respectively.
lrData = mean(Img,1); 
tdData = mean(Img,2);

% Find the indices of the edges.
indL = find(lrData>lvl,1,'first');
indR = find(lrData>lvl,1,'last');
indB = find(tdData>lvl,1,'last');

% Show the Cropped image.
newImg = Img(1:(indB+buf),(indL-buf):(indR+buf));
imshow(newImg);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...