Как обнаружить неправильные размещенные бутылки в красном круге, исключая эти регулярные круги bottle с помощью Matlab? - PullRequest
0 голосов
/ 30 мая 2020

Я хочу обнаружить только те бутылки неправильной формы, например, в красном круге: enter image description here

Однако я пробовал несколько методов, но они находят все края bottle на изображении, есть ли способ определить только наклон bottle или как изменить свой метод?

f15 = imread('bottle_crate_15.png');
BW_15 = imbinarize(f15);

%Canny:
    BW_canny = edge(BW_15, 'Canny');
    imshow(BW_canny);

%bwboundaries 
[B,L,N,A] = bwboundaries(BW_15, 'noholes');
imshow(label2rgb(L, @jet, [.5 .5 .5]))
hold on
for k = 1:length(B)
   boundary = B{k};
   plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)
end

%dilate:
im = mean(f15,4);
im = (im-min(im(:))) / (max(im(:))-min(im(:)));

bin = im2bw(im);
SE = strel('disk',1);
bin = ~imerode(~bin,SE);
bin = ~imerode(~bin,SE);

bin =~imdilate(~bin,SE);
bin =~imdilate(~bin,SE);
imshow(bin);

ps: исходное изображение:

enter image description here

1 Ответ

1 голос
/ 30 мая 2020

Если этого уже достаточно, один из подходов может заключаться в классификации, если есть какие-либо bottle неправильно размещенные:

1.) Обнаружение структуры сетки в ящике с напитками (грубые линии). Затем вы сможете сегментировать изображение на области, в которых следует разместить bottle.

2.) Для каждой области размещения вы можете классифицировать, содержит ли она bottle, является ли она пустой или выглядит иначе. Есть несколько подходов к этому. Если у вас есть доступ к нескольким изображениям, показывающим ящики с напитками, вы можете обучить классификатор (используя SVM или CNN). Если у вас недостаточно обучающих изображений, вы все равно можете использовать методы обработки изображений низкого уровня для классификации областей (например, с помощью обнаружения круга для обнаружения областей размещения, содержащих бутылки).

Один подход для обнаружения неправильно размещенных bottle:

Примените детектор объектов (например, https://www.mathworks.com/help/deeplearning/ug/object-detection-using-yolo-v2.html?s_tid=blogs_rc_6) для локализации всех бутылок. Игнорируйте обнаружение, которое правильно находится в пределах зон размещения (например, с использованием горизонтальных линий). Остальные обнаружения относятся к неправильно установленным бутылкам.

Кроме того, вы можете напрямую обучить детектор объектов обнаруживать неправильно установленные бутылки, собирая и аннотируя соответствующие изображения (https://de.mathworks.com/help/vision/ref/trainrcnnobjectdetector.html).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...