分割低对比度的深度图像

Posted

技术标签:

【中文标题】分割低对比度的深度图像【英文标题】:Segment depth image with low contrast 【发布时间】:2015-08-05 12:14:51 【问题描述】:

我正在尝试从这个 depth 图像中分割手:

我尝试了分水岭、区域增长、grabcut,但都失败了,主要是因为没有清晰的边缘。我也尝试过锐化图像,但效果也不理想。

【问题讨论】:

这是您的原始分辨率和色深吗?如果没有,请提供原始示例图像,以便在提出方法之前对其进行测试。 @Micka 我已更新为原始颜色深度(这是我的 DS325 相机的原始分辨率)。唯一的问题是输入从浮点数(从-1 到 0.6 不等)转换为 uchar 以保存为 jpg。如果您认为以浮点格式发送更好,我可以链接一个 txt 文件。 @Micka 它的here(大小为 320x240)。顺便感谢您的帮助! 根据一些先验知识,可能(仍然很难)分割大部分手,但我完全不知道如何获得拇指...... 可能你的大脑增强了拇指轮廓,因为你的大脑已经检测到手的其余部分;)使用人类大脑作为分割算法的参考是相当具有挑战性的! 【参考方案1】:

这可能不是您希望的答案,但它可能会帮助您向前迈进一点。由于我只提供算法提示,我将使用 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

使用中值过滤器“清理”一下,并应用一个简单的阈值

 medfilt2(aimg,[3 3]) < -1.5

产量

不完全是您所希望的,但我认为这是向前迈出的一步;)


PS, 您可能会发现Alpert, Galun, Nadler and Basri Detecting faint curved edges in noisy images (ECCV2010) 的工作与您的问题相关。

【讨论】:

感谢您的回答!其实我也有同样的想法。使用 RANSAC,我很好地提取了飞机,但我仍然错过了指尖(这是我正在寻找的)。感谢您指出论文,我会研究一下。

以上是关于分割低对比度的深度图像的主要内容,如果未能解决你的问题,请参考以下文章

圆的低对比度分割

深度学习语义分割网络介绍对比-FCN,SegNet,U-net DeconvNet

LesionNet 医疗图像分割网络模型实现皮肤病灶分割

OpenCV实用:C++实现低对比度图像脏污区域检测

图像处理MATLAB应用实战系列(九十七)-基于对比度限制自适应直方图均衡化和分水岭变换实现细胞图像分割

计算机视觉基础MATLAB程序绘制空间内的彩色图像像素变化曲面等值线图生成子图像,显示该子图像的直方图与茎干图子图像进行自适应阈值分割和对比度拉伸,彩色图像处理