www.gusucode.com > matlab程序语言实现的水准网平差程序,使用于测绘人员 > 一种基于极大值稳定区域的文本定位方法matlab源码程序/毕业设计/代码/conComp_filter.m

    
function [mserStats,mserRegions] =conComp_filter(mserConComp,mserRegions,grayImage)


% 利用regionprops获取MSER区域相关参数存入结构体mserStats
mserStats = regionprops(mserConComp, 'BoundingBox','Eccentricity', 'Solidity', 'Extent', 'Euler', 'Image','Centroid');
%'BoundingBox' 包含相应区域的最小矩形
%'Eccentricity' 与区域具有相同标准二阶中心矩的椭圆的离心率
%'Solidity' 同时在区域和其最小凸多边形中的像素比例
%'Extent' 同时在区域和其最小边界矩形中的像素比例
%'EulerNumber' 几何拓扑中的一个拓扑不变量——欧拉数
%'Image' 与某区域具有相同大小的逻辑矩阵

% %画框 
% broder=[mserStats.BoundingBox];
% figure
% imshow(grayImage)
% hold on;
% for i=1:mserRegions.Count  
%     leftx=broder((i-1)*4+1);
%     lefty=broder((i-1)*4+2);
%     width=broder((i-1)*4+3);
%     height=broder((i-1)*4+4);
%    
%     rectangle('Position',[leftx,lefty,width,height], 'EdgeColor','g');
% end
% hold off;

%计算宽高比
bbox = vertcat(mserStats.BoundingBox);
w = bbox(:,3);
h = bbox(:,4);
aspectRatio = w./h;

% 基本特征过滤
filterIdx = aspectRatio'>10;
filterIdx = filterIdx | aspectRatio'<0.4;
filterIdx = filterIdx | [mserStats.Eccentricity] > .997
filterIdx = filterIdx | [mserStats.Solidity] < .13;
% filterIdx = filterIdx | [mserStats.Extent] < 0.08 | [mserStats.Extent] > 0.8;
filterIdx = filterIdx | [mserStats.EulerNumber] < -5;

mserStats(filterIdx) = [];
mserRegions(filterIdx) = [];

% %画框 
% broder=[mserStats.BoundingBox];
% figure
% imshow(grayImage)
% hold on;
% for i=1:mserRegions.Count  
%     leftx=broder((i-1)*4+1);
%     lefty=broder((i-1)*4+2);
%     width=broder((i-1)*4+3);
%     height=broder((i-1)*4+4);
%    
%     rectangle('Position',[leftx,lefty,width,height], 'EdgeColor','g');
% end
% hold off;
%