提取图像中的遮罩区域

Extracting masked regions in an image

所以,我一直在研究 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')

这是输出:

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);