gusucode.com > matlab程序语言实现的水准网平差程序,使用于测绘人员 > 一种基于极大值稳定区域的文本定位方法matlab源码程序/毕业设计/代码/define.m
function [newmserboxes]=define(mserStats,mserboxes,grayImage) broder=[mserboxes.BoundingBox]; for i=1:numel(mserStats) leftx=broder((i-1)*4+1); lefty=broder((i-1)*4+2); width=broder((i-1)*4+3); height=broder((i-1)*4+4); newmserboxes(i).BoundingBox=[leftx,lefty,width,height]; newmserboxes(i).Count=1; newmserboxes(i).idx=i; end for i=1:numel(mserStats) for j=(i+1):numel(mserStats) broder=[mserboxes.BoundingBox]; ax=broder((i-1)*4+1); ay=broder((i-1)*4+2); width1=broder((i-1)*4+3); height1=broder((i-1)*4+4); centerx1=ax+width1/2; centery1=ay+height1/2 bx=ax+width1; by=ay+height1; mx=broder((j-1)*4+1); my=broder((j-1)*4+2); width2=broder((j-1)*4+3); height2=broder((j-1)*4+4); centerx2=mx+width2/2; centery2=my+height2/2 nx=mx+width2; ny=my+height2; dc=abs(centery1-centery2); if dc<20 height=ny-ay; maxx=max([ax bx mx nx]); minx=min([ax bx mx nx]); width=abs(maxx-minx); newmserboxes(i).BoundingBox=[minx,ay,width,height]; newmserboxes(i).Count=1; newmserboxes(j).BoundingBox=[0,0,0,0]; newmserboxes(j).Count=0; end end end for i=1:numel(mserStats) if newmserboxes(i).BoundingBox==[0,0,0,0]; newmserboxes(i).Count=0; end end [newmserboxes]=re_define(mserStats,newmserboxes,grayImage); % broder=[newmserboxes.BoundingBox]; % figure % imshow(grayImage) % hold on; % for i=1:numel(mserStats) % if newmserboxes(i).BoundingBox==[0,0,0,0] % else % 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 % end % hold off; end