⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 find_center.m

📁 DVD租赁的matlab源程序
💻 M
字号:
for n=1:100
    p0=picture{n};
    for d0=57:62  %寻找图像中最大圆的初始直径
        x=sum(p0,2);
        x=ones(512,1).*512-x;   %计算各行0元的个数
        y=sum(p0);
        y=ones(1,512).*512-y;
        %统计0元>d0的行的区间及列的区间,以缩小圆心搜索范围
        start=0;
        xleg=zeros(1,2);
        for m=1:512
            

            if start==0&x(m)>d0
                start=1;
                xleg(1)=m;
            elseif start==1&x(m)<d0
                xleg(2)=m-1;
                break
            end
        end
        start=0;
  %      yleg=zeros(1,2);
        for m=1:512
             
            if start==0&y(m)>d0
                start=1;
                yleg(1)=m;
            elseif start==1&y(m)<d0
                yleg(2)=m-1;
                break
            end
        end
        clear x y
        % (x-a)^2+(y-b)^2<r^2 其中(x,y)为圆心坐标,(a,b)为圆所包含的点
        r=ceil(d0/2);
        xmin=xleg(1);xmax=xleg(2);ymin=yleg(1);ymax=yleg(2);
        fail=0; %能否找到最大圆的标准变量
        success=0;
        for x=xmin:xmax
            for y=ymin:ymax
                for b=y-r:y+r
                    for a=x-r:x+r %只需判断以(x,y)中心,r0为边长的正方形内元素
                        if (x-a)^2+(y-b)^2<r^2&p0(a,b)
                            fail=1;
                            break
                        end
                    end
                    if  fail==1
                        break
                    end
                end
                if fail==0
                    success=1;
                    break
                else
                    fail=0;
                end
            end
            if success==1
                x0=x;y0=y;
                break
            end
        end
        if success==0
            dmax=d0-1;
            break
        end
    end
    zuobiaox(n)=x0;zuobiaoy(n)=y0;d(n)=dmax;zuobiaoz(n)=n;
end

    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -