標(biāo)題: 掃描圖像測(cè)距離看工件是否合格 求大神幫忙看看代碼哪里錯(cuò)了 [打印本頁(yè)]

作者: shuo932695342    時(shí)間: 2018-5-5 23:27
標(biāo)題: 掃描圖像測(cè)距離看工件是否合格 求大神幫忙看看代碼哪里錯(cuò)了
%%%%%%%%%絕緣紙平行豎直測(cè)量%%%%%%%
I=imread('C:\Users\weixing\Desktop\17AM\11.10\59.png');
I= imcrop(I,[410 243 55 217]);%分割出第一個(gè)溫控器
I=im2bw(I,0.7);%圖像二值化
h=fspecial('gaussian',3,1.8);%sigma=1.8的3*3高斯模板
I=imfilter(I,h);%進(jìn)行高斯平滑濾波
BW=edge(I,'canny');
%執(zhí)行Hough變換并顯示Hough矩陣
[H,T,R]=hough(BW);
%在Hough矩陣中尋找前8個(gè)大于Hough矩陣中最大值0.3倍的峰值
P=houghpeaks(H,2,'threshold',ceil(0.3*max(H(:))));
x=T(P(:,2));y=R(P(:,1));%由行、列索引轉(zhuǎn)換成實(shí)際坐標(biāo)
%找到并繪制直線
lines=houghlines(BW,T,R,P,'FillGap',100,'MinLength',20);%合并距離小于5的線段,丟棄所有長(zhǎng)度小于7的直線段
for k=1:length(lines)%依次標(biāo)出各條直線段
    xy=[lines(k).point1;lines(k).point2];
end
if (k==2)
   
%獲得兩條線段端點(diǎn)的坐標(biāo)
x1y1=[lines(1).point1;lines(1).point2];
x2y2=[lines(2).point1;lines(2).point2];
%判斷絕緣紙是否豎直
if(abs(x1y1(1,1)-x1y1(2,1))<=10&&abs(x2y2(1,1)-x2y2(2,1))<=10)
    jyz1=1;
else
    jyz1=0;
end
else
    jyz1=0;
end

%%%%%%%%%%%管腳長(zhǎng)度和絕緣紙長(zhǎng)度測(cè)量%%%%%%%%%%%
I=imread('C:\Users\weixing\Desktop\17AM\11.10\59.png');
I1= imcrop(I,[360 190 150 290]);
A1=zeros(8,2);
B1=zeros(2,2);
i=1;
x=46;
     for y=1:80
         if(I1(y,x)>=I1(y+1,x))
           m=I1(y,x)-I1(y+1,x);
         else
           m=I1(y+1,x)-I1(y,x);  
         end
           if(m>25)
             B1(1,1)=x;
             B1(1,2)=y;
             if( abs(B1(2,2)-B1(1,2))>10)
                 B1(2,1)=x;
                 B1(2,2)=y;
                 A1(i,1)=x;
                 A1(i,2)=y;
                 i=i+1;
             end   
           end
     end
   
     A1(i,1)=x;
     A1(i,2)=A1(i-1,2)+167;
      i=i+1;
     
     for y=250:290
          if(I1(y,x)>=I1(y+1,x))
           m=I1(y,x)-I1(y+1,x);
         else
           m=I1(y+1,x)-I1(y,x);  
         end
           if(m>25)
             B1(1,1)=x;
             B1(1,2)=y;
             if(abs(B1(2,2)-B1(1,2))>10)
           
                 B1(2,1)=x;
                B1(2,2)=y;
                  A1(i,1)=x;
                 A1(i,2)=y;
                i=i+1;
             end   
           end
     end
  x=116;
     for y=1:60
           if(I1(y,x)>=I1(y+1,x))
           m=I1(y,x)-I1(y+1,x);
           else
           m=I1(y+1,x)-I1(y,x);  
           end
           if(m>25)
             B1(1,1)=x;
             B1(1,2)=y;
             if( abs(B1(2,2)-B1(1,2))>10)
           
                 B1(2,1)=x;
                 B1(2,2)=y;
                  A1(i,1)=x;
                 A1(i,2)=y;
                i=i+1;
              end
            
               
           end
     end
     for y=250:290
          if(I1(y,x)>=I1(y+1,x))
           m=I1(y,x)-I1(y+1,x);
         else
           m=I1(y+1,x)-I1(y,x);  
         end
           if(m>25)
             B1(1,1)=x;
             B1(1,2)=y;
             if(abs(B1(2,2)-B1(1,2))>10)
           
                 B1(2,1)=x;
                B1(2,2)=y;
                  A1(i,1)=x;
                 A1(i,2)=y;
                i=i+1;
             end   
           end
     end
   j=1;
     for i=1:8
         if(A1(i,1)==46)
            j=j+1 ;
         end
     end
if(abs(A1(1,2)-A1(j,2))<10)
    gjcd1=1;
else
    gjcd1=0;
end
if(abs(A1(3,2)-A1(2,2))>16&&abs(A1(3,2)-A1(7,2))>16&&abs(A1(4,2)-A1(5,2))>16&&abs(A1(4,2)-A1(8,2))>16)
    jyzcd1=1;
else
    jyzcd1=0;
end

0.png (472.93 KB, 下載次數(shù): 53)

圖片0

圖片0





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1