我在做边缘检测,我尝试了canny的方法(matlab函数).但是它只检测像素级的边缘,我正在寻找一个高精度的亚像素边缘检测算法/代码。
rqenqsqc1#
AFAIK的最先进边缘检测算法以像素级精度(例如,gPb)操作。如果您想获得亚像素精度,您可以对Canny或gPb获得的像素级结果应用后处理阶段。您可以将参数曲线拟合到检测到的边缘的小邻域,从而获得亚像素精度。
r1zk6ea12#
在原始图像上运行edge()的问题是,返回的白色图像与原始图像大小相同。你能用imresize()函数增加图像的大小并在其上进行边缘检测吗?
edge()
imresize()
aiqt4smr3#
这些子像素边缘检测算法中的大多数简单地涉及通常利用双三次样条插值对图像进行上采样,然后对结果执行边缘检测,然后再次对图像进行下采样到原始分辨率。你测试过这些简单的算法吗?它们适合你的目的吗?matlab重采样和边缘检测算法已经有相当好的文档记录。
q3qa4bjr4#
如果需要子像素检测,可以尝试subpixelEdges()方法in Matlab,在Accurate Subpixel Edge Location Based on Partial Area Effect(Agustin Trujillo-Pino等人)和these Slides中有描述。
subpixelEdges()
4条答案
按热度按时间rqenqsqc1#
AFAIK的最先进边缘检测算法以像素级精度(例如,gPb)操作。
如果您想获得亚像素精度,您可以对Canny或gPb获得的像素级结果应用后处理阶段。
您可以将参数曲线拟合到检测到的边缘的小邻域,从而获得亚像素精度。
r1zk6ea12#
在原始图像上运行
edge()
的问题是,返回的白色图像与原始图像大小相同。你能用imresize()
函数增加图像的大小并在其上进行边缘检测吗?aiqt4smr3#
这些子像素边缘检测算法中的大多数简单地涉及通常利用双三次样条插值对图像进行上采样,然后对结果执行边缘检测,然后再次对图像进行下采样到原始分辨率。
你测试过这些简单的算法吗?它们适合你的目的吗?
matlab重采样和边缘检测算法已经有相当好的文档记录。
q3qa4bjr4#
如果需要子像素检测,可以尝试
subpixelEdges()
方法in Matlab,在Accurate Subpixel Edge Location Based on Partial Area Effect(Agustin Trujillo-Pino等人)和these Slides中有描述。