二值图像质心位置

前言

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

matlab代码如下:

% /************************************************************************
% * Copyright(c) 2017  ZRJ
% * All rights reserved.
% *
% * File:	bwCentroidFunc.m
% * Brief: 得到二值化图像的质心位置;
% * Version: 1.0
% * Author: ZRJ
% * Email: happyamyhope@163.com
% * 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
 

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

原文地址:https://www.cnblogs.com/happyamyhope/p/6593454.html