【发布时间】:2015-03-10 07:57:32
【问题描述】:
您好,我有一张深度图像,我想从中提取人(人)剪影。我像这样使用像素阈值:
for i=1:240
for j=1:320
if b(i,j)>2400 || b(i,j)<1900
c(i,j)=5000;
else
c(i,j)=b(i,j);
end
end
end
但还剩下一些。有什么办法可以去掉吗?
原图:
Extracted_silhouette:
【问题讨论】:
-
这是一个广泛的主题领域。但也许有人可以解释为什么这比你希望的要难,或者给出一个有用的下一步。请显示您的像素阈值代码,因为任何人写答案的工作可能会更少。
-
@NeilSlater:这是我的代码
for i=1:240 for j=1:320 if b(i,j)>2400 || b(i,j)<1900 c(i,j)=5000; else c(i,j)=b(i,j); end end end -
您可能会发现this thread 很有用。
-
@Shai:提到的线程有正常的信息,但在我的情况下,深度图像大小是 320x240,我没有正常找到边缘。有没有其他方法可以找出人周围的边缘?
-
您可以从深度粗略估计表面法线。考虑
[dzx dzy] = gradient( depth_map );(深度图的水平和垂直导数),那么表面法线的粗略估计可以是n = cat( 3, dzx, dzy, ones(size(dzx)) )。现在您需要标准化为单位长度n = bsxfun( @rdivide, n, sqrt( sum( n.^2, 3 ) ) );
标签: matlab image-processing kinect matlab-cvst