前言

针对有其他干扰的字符区域,干扰区域明显偏于某侧的,可以使用质心判断进行去除。

matlab代码如下:

% /************************************************************************
% * Copyright(c) 2017 ZRJ
% * All rights reserved.
% *
% * File: bwCentroidFunc.m
% * Brief: 得到二值化图像的质心位置;
% * Version: 1.0
% * Author: ZRJ
% * Email:
% * Date: 2017/03/03
% * Reference:
% * History:
% * 20170303:得到二值化图像的质心位置;
%
% ************************************************************************/
function flag = bwCentroidFunc( bw )
%程序功能:得到二值化图像的质心位置的判断;

%输入Input:
% bw -- black-and-white image;

%输出Output:
% flag -- Centroid flag;
% cenr_cor -- Centroid coordinate;
% cenr_cor(1) -- row of bwCentroid;
% cenr_cor(2) -- column of bwCentroid;

x = 0;%row of bwCentroid;
y = 0;%column of bwCentroid;
flag = 0;%满足质心位置条件的标志位;
%去除不完整的车号图像
if ( size(bw, 2) < 10 )
return;
end
% % 行投影
% rp = sum(bw, 2);
% rp_ra = 0;
% x_Centroid = 0;
% for i = 1 : size(bw, 1)
% rp_ra = rp_ra + rp(i) / sum(rp);
% if ( rp_ra >= 0.5 )
% x_Centroid = i;
% break;
% end
% end
% clear i
% 列投影
cp = sum(bw, 1);
cp_ra = 0;
y_Centroid = 0;
for i = 1 : size(bw, 2)
cp_ra = cp_ra + cp(i) / sum(cp);
if ( cp_ra >= 0.5 )
y_Centroid = i;
break;
end
end
clear i
% cenr_cor(1) = x_Centroid;%质心所在行数目
% cenr_cor(2) = y_Centroid;%质心所在列数目
if ( y_Centroid < 0.3*size(bw, 2) || y_Centroid > 0.7*size(bw, 2) )%不满足质心位置
flag = 1;
end %end if

end % end bwCentroidFunc function

以上代码只使用了列方向质心进行判断,可根据实际需求进行更改。