【发布时间】:2016-09-28 20:45:34
【问题描述】:
我正在尝试设计一种方法来检测此管道的曲率。我尝试应用霍夫变换并发现检测到的线,但它们不位于管道表面,因此平滑它以适应贝泽曲线不起作用。请建议一些好的方法来开始这样的图像。[
hough变换检测线条得到的图像如下 [ 我正在使用标准 Matlab 代码进行概率霍夫变换线检测,该代码生成围绕结构的线段。本质上,管道的形状类似于抛物线,但对于霍夫抛物线检测,我需要在检测之前提供点的偏心率。请提出一种沿着可以拟合抛物线的曲率找到离散点的好方法。我已经给opencv和ITK打了标签,所以如果有可以在这张特定图片上实现的功能,请提出这个功能,我会尝试看看结果。
img = imread('test2.jpg');
rawimg = rgb2gray(img);
[accum, axis_rho, axis_theta, lineprm, lineseg] = Hough_Grd(bwtu, 8, 0.01);
figure(1); imagesc(axis_theta*(180/pi), axis_rho, accum); axis xy;
xlabel('Theta (degree)'); ylabel('Pho (pixels)');
title('Accumulation Array from Hough Transform');
figure(2); imagesc(bwtu); colormap('gray'); axis image;
DrawLines_2Ends(lineseg);
title('Raw Image with Line Segments Detected');
图像的边缘图如下,对边缘图应用霍夫变换后生成的结果也不好。我在想一个像这条曲线一样进行一般参数形状检测的解决方案可以表示为抛物线族,因此我们进行曲线拟合以估计其弯曲时的系数以分析其曲率。我需要设计一个实时程序,所以请在这个方向提出任何建议。
【问题讨论】:
-
嗯,只是猜测:如果您先将原件通过精巧的边缘检测器会怎样?
-
我尝试将霍夫变换应用于边缘图,但并没有从霍夫变换中得到更好的线检测。
-
我明白了。直线的结果要差得多,但抛物线的结果可能更好。也许您可以在第一种方法中使用线的交点获得可靠的点:似乎管道边缘的交叉点密度更高,但我不知道这是否能很好地推广到其他图片。我是CV新手,如果这里没有人回复,我只能建议在
dsp.或cv.StackExchange站点提问。 -
虽然,边缘贴图实际上似乎更好的材料,但霍夫可能会失败,因为直线少得多。如果您尝试使用多个偏心率值检测抛物线,并选择最适合的那一个呢?
-
我也进行了过滤以消除噪音,但您的建议是正确的,即 line fit 无法正确估计 curve 。我会尝试不同偏心的建议,并使用最合适的并再次更新图片。非常感谢您的建议,它们真的很有帮助..
标签: algorithm matlab opencv image-processing convex-hull