1

I am trying to build an application called virtual wardrobe where I am planning to capture the image of a human and then allow him to select different clothing and instantly see his virtual image wearing that clothing.

I do not have much knowledge of how to go about this idea. I read a few materials and found out a few edge detecting algorithms.

Sobel seems to be fast but not very efficient while Canny is better but slow. There are a few other algorithms like Gradient based, Laplacian, etc but I don't have much idea about those.

Are there good course materials available to understand these algorithms in details? Also, will it be better to have an algorithm that is faster but less efficient or slower but more efficient for this application?

I do not have much knowledge about this so, any help is appreciated.

Thank you in advance.

skaffman
  • 398,947
  • 96
  • 818
  • 769
Anil Tulsi
  • 392
  • 1
  • 10
  • People usually consider that Canny is very fast. What kind of speed do you want? Also Sobel is usually used as a corner detector. Are you ok with that? – Oli Jan 07 '12 at 11:06
  • The application that I am trying to build requires more accuracy than speed. I am trying project the human body and allow they human to try out different clothing virtually (When he selects certain type of outfit and color, he will see his virtual image in that outfit). – Anil Tulsi Jan 08 '12 at 14:03
  • 1
    So from the photo of the person you want to identify which part of the photo is a person and then fit a garment onto that part of the image? I think you'll need more than edge detection. As a start, if the person looks different enough from the background "image segmentation" will work. However, if they are photographed in a more complicated room then you might need more sophisticated. Maybe this: http://stackoverflow.com/questions/2188646/how-can-i-detect-and-track-people-using-opencv – dranxo Feb 25 '12 at 06:57

2 Answers2

0

Not sure if you have all other components, but I think using edge detection alone might not work well in many cases. Here are possible directions / techniques that you might find them useful:

  • foreground detection: detection which part of image is the user, this might work better than pure edge detection if your background is not simple.
  • face detection: detect which part of image is the user's face. This allows the cloth better fit to the user, esp. for sunglasses or hats.
  • skin color model: can be used as a basic alternative for face detection.
  • object tracking: if your input is a video, then you can also utilize object tracking technique to speed up the other detection processes.

And you might also consider other techniques such as human posture recognition or eye-tracking, but they are more complicated than the above items.

keelar
  • 5,814
  • 7
  • 40
  • 79
0

I can suggest you one solution. If you have images of various outfits then assume them as target images and replace the face of the target image with the face of the source image i.e user. For that you kinda have to built a face replacement app.If you want to detect face in the source image then go for face detection first then retrieve face boundaries from the source image. For this you can use various algorithms, of which I am suggesting few:

  • Canny Edge Detection followed by longest edge detection.
  • Skin Color Thresholding followed by shrinking and growing algorithm.
  • Adaptive Active Contour Model(Snake Algorithm)

Canny is bit slow, if you want the result fast go for skin color thresholding. For accurate result you can use Snake Algorithm. Snake algorithm is useful for detecting the face boundary even if the face has shadows in it.

Read detecting face boundary using Canny Edge Detection

user1234
  • 128
  • 4