Depth image of a segment with low contrast

I am trying to separate the hand from this depth image:

enter image description here

I tried watershed, region growing, grasping, but they all failed, mainly because there was no clear edge. I also tried to sharpen the image, but that also didn't give me good results.

+3


source to share


1 answer


This may not be the answer you were hoping for, but it might help you move a little forward. Since I only provide algorithmic hints, I will be using Matlab and not opencv.

Since this is not a normal intensity image, but rather a depth image, you must use the implied geometry of the scene. The main assumption that can help you here is that the hand rests on the surface . If you can estimate the equation of the surface, you can easily spot the hand.

[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

      

Using a median filter to "clean up" it a little and apply a simple threshold

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

      



Yield

enter image description here

Not what you were hoping for, but I think this is a step forward;)


PS,
You can find work by Alpert, Galun, Nadler and Basri Detecting Weak Curved Edges in Noisy Images (ECCV2010) related to your problem.

+2


source







All Articles