www.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