我做了一些识别平台号码,然后在解压缩时我卡住了,我读了参考,我必须进行水平排名过滤,但我不知道该怎么办。代码:
a = imread('Izy.jpg');
b = imresize(a,0.5);
c = rgb2gray(b);
Py = [ -1,0,1; -1,0,1 ; -1,0,1];
Gp = conv2(c,Py);
Gpx = edge(Gp,'prewitt');
cl = bwareaopen(Gpx,10);
imshow(cl)
Izy.jpg output image and i want get the red rectangled that i mark then crop it
由于
答案 0 :(得分:0)
我只是尝试了一个代码来处理这个特定的图像,但不是一般的。这里我们有输入图像。
a = imread('Izy.jpg');
b = imresize(a,0.5);
c = rgb2gray(b);
此处的代码将图像读入变量a
,将其缩小到一半大小(存储在b
中),然后将其从3通道图像转换为灰度图像(存储在{{ 1}})。我建议使用Canny边缘检测器而不是Prewitt检测器,如下所示:
c
Gpx = edge(c,'canny');
L = bwlabel(Gpx,8);
中)将具有多个前景图像或区域。区域是像素的集合,其中每个成员像素连接到其中的至少一个相邻像素中的至少一个。这些区域使用Gpx
标记并存储在bwlabel()
。L
,我们得到一个结构,其中包含图像中存在的区域的不同属性。 此处,计算区域的regionprops('properties','properties',..)
和area
属性。 eccentricity
值有助于我们识别区域是圆形还是线形。对于圆,值为eccentricity
,对于一行,值为0
1
由于图像中有129个(imgstat = regionprops(L,'Area','Eccentricity');
area = [imgstat.Area];
ecc = [imgstat.Eccentricity];
)个区域,因此每个区域都会有一些区域和偏心值。使用反复试验来确定size(imgstat)
和area
属性所需的值。
应用近似属性值以获取车牌的边界,并将区域索引存储在eccentricity
中。 label
从标记的图像中提取并存储所需的区域。
logical_result
存储在label = find((area > 150) & (ecc < 0.95) & (ecc > 0.9));
logical_result = ismember(L,label);
figure;imshow(logical_result)
现在,计算logical_result
的边界值。这些值作为索引恢复,因此,我们必须使用logical_result
将它们转换为下标。从边界值我们可以从原始图像中提取感兴趣的区域
ind2sub()
这给出了以下结果: