Jäg*_*ger 5 c++ opencv computer-vision edge-detection image-segmentation
我试图从这张深度图像中分割手:
我尝试过分水岭、区域增长、抓取,但都失败了,主要是因为没有明确的边缘。我也尝试锐化图像,但也没有给我带来好的结果。
这可能不是您所希望的答案,但它可能会帮助您向前迈进一步。由于我只提供算法提示,因此我将使用 Matlab 而不是 opencv。
由于这不是普通的强度图像,而是深度图像,因此您应该使用场景的隐含几何形状。在这里可以帮助您的关键假设是手放在一个表面上。如果您可以估计表面方程,则可以更轻松地检测手。
[y x] = ndgrid( linspace(-1,1,size(img,1)), linspace(-1,1,size(img,2)) );
X = [reshape(x(101:140,141:180),[],1), reshape(y(101:140,141:180),[],1), ones(1600,1)];
srf=(X\reshape(img(101:140,141:180),[],1)); %// solving least-squares for the 40x40 central patch
aimg = img - x*srf(1) - y*srf(2) - srf(3); %// subtracting the recovered surface
Run Code Online (Sandbox Code Playgroud)
使用中值滤波器对其进行“清洁”一下,并应用一个简单的阈值
medfilt2(aimg,[3 3]) < -1.5
Run Code Online (Sandbox Code Playgroud)
产量

不完全是您所希望的,但我认为这是向前迈出的一步;)
PS,您可能会发现Alpert、Galun、Nadler 和 Basri
的工作《检测噪声图像中的微弱弯曲边缘》 (ECCV2010)与您的问题相关。
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |