【发布时间】:2017-03-16 11:02:48
【问题描述】:
我正在 Matlab 中制作一个脚本,用于接收汽车后部的图像。经过一些图像处理后,我想输出汽车的原始图像,并在汽车牌照周围有一个矩形。以下是我目前所写的内容:
origImg = imread('CAR_IMAGE.jpg');
I = imresize(origImg, [500, NaN]); % easier viewing and edge connecting
G = rgb2gray(I);
M = imgaussfilt(G); % blur to remove some noise
E = edge(M, 'Canny', 0.4);
% I can assume all letters are somewhat upright
RP = regionprops(E, 'PixelIdxList', 'BoundingBox');
W = vertcat(RP.BoundingBox); W = W(:,3); % get the widths of the BBs
H = vertcat(RP.BoundingBox); H = H(:,4); % get the heights of the BBs
FATTIES = W > H; % find the BBs that are more wide than tall
RP = RP(FATTIES);
E(vertcat(RP.PixelIdxList)) = false; % remove more wide than tall regions
D = imdilate(E, strel('disk', 1)); % dilate for easier viewing
figure();
imshowpair(I, D, 'montage'); % display original image and processed image
这里有一些例子:
从这里我不确定如何隔离车牌的字母,特别是在上面的第二个示例中,由于图像的透视,每个字母的面积都减小了。我的第一个想法是获取所有区域的边界框并仅保留周长与面积比“相似”的区域,但这导致在我像 K和上面第四个例子中的V。
如果我应该如何隔离这些字母,我将不胜感激。无需任何代码,欢迎提出任何建议。
【问题讨论】:
标签: matlab image-processing image-segmentation