Извлечение замаскированных областей в изображении - PullRequest
0 голосов
/ 23 февраля 2020

Итак, я работал над обнаружением номерного знака в Matlab. Я создал желаемую маску и соединил ее с исходным изображением. Теперь я хочу извлечь только маскированную область и не могу найти способ сделать это. Любая помощь будет оценена.

Вот то, что я до сих пор закодировал.

Im = imread("RPImage.jpg");
I = rgb2gray(Im);
I = medfilt2(I);
J = histeq(I);

%imshow(J)

[~,threshold] = edge(I,'sobel');
fudgeFactor = 0.5;
BWs = edge(I,'sobel',threshold * fudgeFactor);
%imshow(BWs)

BWs = bwareaopen(BWs, 8);
%imshow(BWs)

BWfill = imfill(BWs,'holes');
%imshow(BWfill)

mask = bwareaopen(BWfill, 1000);
%imshow(mask)

seD = strel('diamond',1);
BWfinal = imerode(mask,seD);
BWfinal = imerode(BWfinal,seD);
%imshow(BWfinal)
%title('Segmented Image');

imshow(labeloverlay(Im,BWfinal))
title('Mask Over Original Image')

И это вывод: Image with number plate detected by a blue mask

1 Ответ

0 голосов
/ 24 февраля 2020
rowvec = sum(BWfinal);
colvec = sum(BWfinal, 2);

first_row_id = find(colvec > 0, 1);
last_row_id = find(colvec > 0, 1, 'last');

first_col_id = find(rowvec > 0, 1);
last_col_id = find(rowvec > 0, 1, 'last');

rows = last_row_id - first_row_id + 1;
cols = last_col_id - first_col_id + 1;

roi = I(first_row_id:last_row_id, first_col_id:last_col_id);
...