如何在canny边缘图像上进行hough变换

时间:2015-12-30 08:56:41

标签: matlab image-processing image-segmentation hough-transform morphological-analysis

经过一些预处理,边缘检测和细化后,得到了下图,图像为双色

enter image description here

并且为了去除区域内的孤立像素,我使用了扩张作为

se90 = strel('line', 2, 90);
se0 = strel('line', 2, 0);
BWsdil = imdilate(Edge, [se90 se0]);

垂直扩张,然后是水平扩张

实际上我想要分割在矩形(椭圆状结构)中标记的对象。 enter image description here 注意到黑色矩形在扩张期间破裂 如果我增加阈值,我将丢失底部矩形中的段。 如果我继续这个结果,我最终会出错,即使没有预处理,基本的分割算法也无法正常工作。请帮忙

你可以建议任何其他技术来改善面膜 如果我在渐变图像上进行连通分量分析。我将得到椭圆的边界而不是如图所示的椭圆

我尝试了hough变换,但我得到了一些糟糕的结果

close all;clear all
I=imread('Sub1.png');
load edge
rotI = imrotate(I,33,'crop');
[H,T,R] = hough(Edge);
imshow(H,[],'XData',T,'YData',R,...
            'InitialMagnification','fit');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
P  = houghpeaks(H,25,'threshold',ceil(0.3*max(H(:))));
x = T(P(:,2)); y = R(P(:,1));
plot(x,y,'s','color','white');
lines = houghlines(Edge,T,R,P,'FillGap',5,'MinLength',7);
figure, imshow(rotI), 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

enter image description here

0 个答案:

没有答案