本周实现和优化了canny边缘检测算法,并将得到的各个连通域相互连接得到了一个近似的剪纸效果。
进行高斯滤波和canny边缘检测。
sigma =1;
gausFilter =fspecial('gaussian',[3,3],sigma);
img =imfilter(I_ray,gausFilter,'replicate');
ed =edge(img,'canny',0.08);
可以得到边缘的信息。
接下来就要进行各个连通域的连接。这里的方法是这样的首先设置了一个阈值,选择一个连通域,对其他所有的连通域进行判断,如果他们的最短距离小于阈值,那么就在中间画一条线将它们连接起来。营造出剪纸的效果。为了减少计算的的时间,先将图片进行了缩放。
for i =1:max
distance=999999;
[x,y] =find(L==i);
size_x =size(x);
for j =1:max
if j~=i
[x1,y1] =find(L==j);
size_x1 =size(x1);