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

📄 最大半径及圆心坐标.m

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

    

⌨️ 快捷键说明

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