gpt4 book ai didi

matlab - 几乎垂直边缘的亚像素边缘检测

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:27 25 4
gpt4 key购买 nike

我想在显示的图像中检测边缘(具有亚像素精度):

enter image description here

分辨率约为 600 X 1000。

我看到了 Mark Ransom 的评论 here ,其中提到了垂直边缘的边缘检测算法。我还没有遇到过。它对我有用吗(因为边缘不是严格意义上的直线)?不过,它始终是垂直边缘。我希望它至少精确到 1/100 像素。我还想访问这些子像素坐标值。

我试过了"Accurate subpixel edge location"奥古斯丁·特鲁希略-皮诺 (Agustin Trujillo-Pino)。但这并没有给我带来连续的优势。

还有其他可用的算法吗?为此,我将使用 MATLAB。

我附上了算法必须处理的另一张类似图像:

enter image description here

任何输入将不胜感激。

谢谢。

编辑:

我想知道我是否可以这样做:在 MATLAB 中应用 Canny/Sobel 并获得此图像的边缘(注意它不会是连续的线)。然后,以某种方式插入这个 Sobel 边缘并获得亚像素坐标。可能吗?

最佳答案

一种简单的方法是垂直投影您的图像并使用适当的函数拟合投影的轮廓。

这是一个尝试,具有 atan 形状:

% Load image
Img = double(imread('bQsu5.png'));

% Project
x = 1:size(Img,2);
y = mean(Img,1);

% Fit
f = fit(x', y', 'a+b*atan((x0-x)/w)', 'Startpoint', [150 50 10 150])

% Display
figure
hold on
plot(x, y);
plot(f);
legend('Projected profile', 'atan fit');

结果:

enter image description here

你的第一张图片我得到 x_0 = 149.6 像素。

但是,我怀疑您是否能够使用这些图像实现 1/100 像素的亚像素精度,原因如下:

  1. 正如您在配置文件中看到的那样,您的白色是饱和的(灰度级为 255)。当您切割真正的 atan 轮廓时,拟合是有偏差的。如果您可以控制实验,我建议您再做一次,例如缩短曝光时间。

  2. transition上没有那么多点,所以关于transition在哪里的信息也没有那么多。通常,您的分辨率将是 atan(或您喜欢的任何形状)宽度的平方根。在您的情况下,这最多会将子像素分辨率限制在像素的 1/5。

最后,你的边缘不是严格垂直的,它们有点倾斜。如果您选择使用这种投影方法,为了提高准确性,您应该在投影前寻找一种方法来纠正这种倾斜。不过,这不会将您的准确性提高几个数量级。

最好的,

关于matlab - 几乎垂直边缘的亚像素边缘检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28674326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com