教程>距离变换

图像的距离变换形象已定义作为

dt(u,v)=最小图像(u',v')+α(u'-uu0)^2+β(v'-v'-v)^2u'v'(u'v)

图像距离变换最常见的用途是传播特征检测器对附近图像位置的响应。这是例如,用于实现某些可变形零件模型或倒角距离的计算。在本教程中,图像距离变换用于计算每个图像像素到边缘贴图中最近的元素,从坎尼边缘探测器。本教程的代码位于中的VLFeat文件夹工具箱/demo/vldemo_imdisttf。.

VLFeat公司实现的快速距离变换算法Felzenszwalb和Huttelnocher[1],具有图像像素数的线性时间复杂度。

考虑MATLAB内置Canny边缘提取的边缘图VLFeat测试图像之一上的探测器:

im=vl _ impattern(“屋顶1”);im=im(1:100,1:100,:);imSize=[尺寸(im,1)尺寸(im2)];边缘=零(imSize)+inf;边缘(边缘(rgb2gray(im),‘canny’))=0;
左侧:源图像的详细信息。正确的:已提取精巧的边缘。图由生成vl _ demo _ imdisttf.

对边缘贴图进行预处理以赋值-inf公司不包含边缘元素的像素和o个这样,图像的距离变换具有每个像素到最近边缘元素的距离,前提是一个人选择的α=β=1v0=u0=0在里面定义。因为这些是VLFeat的默认值实现,结果可由计算

[distanceTransform,neighbors]=vl_imdisttf(单边);

矩阵邻居包含每个像素(u,v)像素的索引(u',v')在距离定义中达到最大值转换。这允许关联每个像素最近的边缘元素,而不仅仅是其距离,如下图:

距离sqrt(距离变换)最接近边缘元素(左)和将像素连接到其最近点的箭头边缘元素(右)。生成的图形通过vl _ demo _ imdisttf.

工具书类

  • [1] P.F.Felzenszwalb和D.P.Huttenlocher博士。采样的距离变换功能。技术报告,康奈尔大学,2004年。