图像的距离变换
形象已定义作为
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;
对边缘贴图进行预处理以赋值
-inf公司到不包含边缘元素的像素和
o个到这样,图像的距离变换具有每个像素到最近边缘元素的距离,前提是一个人选择的
α=β=1和
v0=u0=0在里面定义。因为这些是VLFeat的默认值实现,结果可由计算
[distanceTransform,neighbors]=vl_imdisttf(单边);
矩阵
邻居包含每个像素
(u,v)像素的索引
(u',v')在距离定义中达到最大值转换。这允许关联每个像素最近的边缘元素,而不仅仅是其距离,如下图:
工具书类