Search code examples
matlabfilteringdepthsmoothingsilhouette

How to smooth and extract an object from depth Image


I am using a dataset which provides depth images of human, I need to extract the object from this image or at least remove the other distortion in the image that not belong to the human body In Matlab.

a sample of images is shown below:

Human Body in RED and noise in black colors

This is the output when I used

I = imread ('39.jpg');
human = sum(I,3)>10+10;

human

Any way to do that please? thanks in Advance


Solution

  • For the image you show, where everything is grayscale but something is red, then just do:

    so=imread('https://i.sstatic.net/hZOQv.jpg');
    human=sum(abs(diff(single(so),1,3)),3)>20;
    

    This essentially compares the difference in RGB values of the pixels, and gets the one above a threshold. If you have proper pngs, then the threshold should just be 1, however with jpg artifacts you may need a higher value, for this image 20 does the job.

    There are some tiny artefacts in the result image, very likely due to jpg. When you do science, you need to store in png. If you have absolutely no other choice than jpg, then you may have artefacts.