1 / 6
文档名称:

基于机器视觉的零件平面尺寸测量 (圆检测,直线检测).doc

格式:doc   大小:32KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于机器视觉的零件平面尺寸测量 (圆检测,直线检测).doc

上传人:aena45 2021/6/1 文件大小:32 KB

下载得到文件列表

基于机器视觉的零件平面尺寸测量 (圆检测,直线检测).doc

文档介绍

文档介绍:课题:基于机器视觉的零件平面尺寸测量
检测对象:圆和方形零件
圆形度要求:  
直线度要求:
问题1:目前程序能利用hough变换检测圆,以及标记圆心,但是如何才能得到圆心坐标和半径值呢?
程序:
%主程序如下:
function[I2,center]=FindCircle(I0)    %函数功能
close all                %清除内存
I0=imread('');   %读取图像,实验时为一圆形硬币
I=uint8(I0)
figure,imshow(I)
level = graythresh(I);         %自动阈值二值化
BW = im2bw(I,level);
figure,imshow(BW);
P=3000;           %除去小于一定面积的指定区域
BW2 = bwareaopen(BW,P);
figure,imshow(BW2);
BW3 = bwmorph(BW2,'dilate');  %图像形态学操作
figure,imshow(BW3);
BW4 = bwmorph(BW3,'remove');
figure, imshow(BW4);
[I2,center]=Hughcir(BW4);   %调用Hughcir(img)函数
figure,imshow(I2);
%调用函数如下:
function[I2,center]=Hughcir(I)
[r c]=size(I);
%defining max &min values for radius
rmax=272;
rmin=271;
PL=zeros(r,c,rmax-rmin+1);
for rad=rmin:rmax
   
    k=1;
   
    % creating a circle for given radius
    for theta=1:360
        x=rad*cosd(theta);
        y=rad*sind(theta);
        X(k)=floor(x+.5);
        Y(k)=floor(y+.5);
        k=k+1;
    end
   
    for i=1:3:r
        for j=1:3:c
            
            if(I(i,j)==1)
                Xi=X+i;
                Yj=Y+j;
               
                index=find((Xi>=rad)&(Yj>=rad)&(Xi<=r-rad)&(Yj<=c-rad));
               
                [rr cc]=size(index);
                P1=logical(zeros(r,c));   
                for l=1:cc
                    P