gpt4 book ai didi

c++ - MATLAB 或 C、C++ 代码中是否有与 bwmorph(image ,'skel' ) 相反的函数?

转载 作者:搜寻专家 更新时间:2023-10-31 00:19:43 36 4
gpt4 key购买 nike

我想根据物体的形态骨架创建物体的图像。 MATLAB 或 C、C++ 代码中是否有任何函数?提前致谢。

原始图像及其骨架(使用 bwmorph(image,'skel',Inf) 获得):

hand2 handskel2

最佳答案

如上评论所述,bwmorph(..,'skel',Inf)为您提供骨架的二值图像,仅凭它不足以恢复原始图像。

另一方面,如果你有,对于每个 skeleton像素,distance transform 返回的值, 那么你就可以成功地应用反距离变换(如 @belisarius 所建议的那样):

请注意 InverseDistanceTransform 的这个实现相当慢(我基于 previous answer )。它反复使用 POLY2MASK获取指定圆圈内的像素,因此还有改进的空间..

%# get binary image
BW = ~imread('http://img546.imageshack.us/img546/3154/hand2.png');

%# SkeletonTransform[]
skel = bwmorph(BW,'skel',Inf);
DD = double(bwdist(~BW));
D = zeros(size(DD));
D(skel) = DD(skel);

%# zero-centered unit circle
t = linspace(0,2*pi,50);
ct = cos(t);
st = sin(t);

%# InverseDistanceTransform[] : union of all disks centered around each
%# pixel of the distance transform, taking pixel values as radius
[r c] = size(D);
BW2 = false(r,c);
for j=1:c
for i=1:r
if D(i,j)==0, continue; end
mask = poly2mask(D(i,j).*st + j, D(i,j).*ct + i, r, c);
BW2(mask) = true;
end
end

%# plot
figure
subplot(131), imshow(BW), title('original')
subplot(132), imshow(D,[]), title('Skeleton+DistanceTransform')
subplot(133), imshow(BW2), title('InverseDistanceTransform')

结果:

original Skeleton_DistanceTransform InverseDistanceTransform

关于c++ - MATLAB 或 C、C++ 代码中是否有与 bwmorph(image ,'skel' ) 相反的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7648186/

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