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

📄 circlerecog.m

📁 基于圆形比的圆的识别程序
💻 M
字号:
function circleRecog

input=imread('another.jpg');%anothernewcircles.jpg
input=im2bw(input);

% subplot(2,2,1);
% imshow(input,[]);

input = bwmorph(bwmorph(bwmorph(input,'spur'),'clean'),'fill');
[numbers,features] = bwlabel(input);
count_circles = 0; centers = [0 0]; radius = []; 
cnt=0;

sita=0:pi/20:2*pi;
for i = 1:features
    t=zeros(size(input));%balack imgage
    t(numbers==i)=1;%copy sub-image
    f=imfeature(t,'all');
    
    if(f.FilledArea<20)%排除噪声
        continue;
    end
    %再万一的话可以用周长平方与面积的比判定 园最小为 4×pi
%     (bwarea(bwperim(t))^2/f.Area);
    
    %pi*(f.EquivDiameter/2)^2==f.Area 始终相等,因为它的半径是该面积所对应的椭圆半径
    %所以用 bound面积和本身面积的系数 Extent 判定
    if(abs(f.Extent)>0.9)
        continue;
    end

    cnt=cnt+1; 
%     subplot(2,2,cnt+1),imshow(t);
%     figure,imshow(t);
    
    center(cnt,:)= [f.Centroid f.EquivDiameter/2];
end

display(center);

sita=0:pi/20:2*pi;
imshow(input);
hold on
for i=1:size(center,1)
    %园的参数方程数学手册 P346 
    %plot(a*cos(sita+fi),b *sin(sita+fi)); %斜椭圆
    plot(center(i,1)+center(i,3)*cos(sita),center(i,2)+center(i,3)*sin(sita),'r'); %半径为r的圆
end   

⌨️ 快捷键说明

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