注册 登录
编程论坛 Matlab

求助matlab边缘检测

gxtwztx 发布于 2013-05-24 22:18, 806 次点击
跪求各路大神,如何用matlab检测出图中最上面亮条纹的上边界,和最下面亮条纹的上下两边界(每张图共三条边界)?诚心跪求

程序代码:
clear all;
       close all;
       I  = imread('PIC.jpg');
       I  = rgb2gray(I); % convert to intensity;
       figure, imshow(I);
       I = imcrop(I,[15,15,480,210]);
       figure, imshow(I);
      
       H = fspecial('gaussian',6,0.55);
        %用图像滤波函数imfilter处理
        I = imfilter(I,H,'replicate');
        I=imadjust(I,[0.3 0.7],[0 1],1);
       I = imfilter(I,H,'replicate');
        I=imadjust(I,[0.3 0.7],[0 1],1);
   
      
        figure, imshow(I);
      
       figure;
       BW = edge(I,'canny');
       [H,T,R] = hough(BW);
       imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');
       xlabel('\theta'), ylabel('\rho');
       axis on, axis normal, hold on;
       P  = houghpeaks(H,4,'threshold',ceil(0.4*max(H(:))));
       x = T(P(:,2));
       y = R(P(:,1));
       plot(x,y,'s','color','white');

       % Find lines and plot them
       lines = houghlines(BW,T,R,P,'FillGap',70,'MinLength',27);
       figure, imshow(I), hold on
       max_len = 0;
       for k = 1:length(lines)
         xy = [lines(k).point1; lines(k).point2];
         plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

         % plot beginnings and ends of lines
         plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
         plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');

         % determine the endpoints of the longest line segment
         len = norm(lines(k).point1 - lines(k).point2);
         if ( len > max_len)
           max_len = len;
           xy_long = xy;
         end
       end

       % highlight the longest line segment
       plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');

 
这是编的代码,结果不行,不知道怎么操作好,求大神们指教




只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
0 回复
1