View Full Version : Remove specularity from multiple textures
tmr232 11-16-2009, 03:00 PM Hi,
I want to be able to automatically remove the specularities and other types of annoying data from photographs in order to use them as textures. I have multiple photos of the same object, from different directions, and I need to get textures from it.
I remember seeing some papers about this kinda stuff a while ago, but I can't seem to find it.
Any help?
tmr232.
|
|
rendermaniac
11-16-2009, 04:47 PM
Do you know your light positions? If so you can use inverse rendering. This is where you recreate the scene digitally, match the material, and then take it away from the photo. I don't know any easy or automated way of doing this.
A better way is to take the photos using a polarising filter on the light source, cross polarised with a filter on the camera lens. This is a very good way to supress reflections.
Simon
tmr232
11-16-2009, 07:16 PM
Thanks, but the thing is that I need this to work automatically on naturally taken images. So I can't build the scene, and I can't polarize the light.
Tamir.
martinB
11-17-2009, 09:00 AM
I want to be able to automatically remove the specularities and other types of annoying data from photographs in order to use them as textures. I have multiple photos of the same object, from different directions, and I need to get textures from it.
Sounds like a difficult problem if you want a general solution.
I guess this strongly depends on what kind of object you're taking photographs off?
Do you know the precise light direction for each picture? How many pictures do you have?
Can you post an example picture set?
Never tried this, but maybe you could just take something like the mean of all pictures, assuming the speculars are relative small and keep changing with each picture?
Also, assuming that the only pure white in your picture is caused by specular highlights, and knowing the light direction, you could use that to estimate the surface normals, which then could be used to build a 3D surface model, which then could be used to do inverse lighting, assuming some known BRDF?
Maybe this is a point to start: http://en.wikipedia.org/wiki/Photometric_Stereo
-- MartinB
tmr232
11-17-2009, 11:33 AM
Sorry for not mentioning it, but I can get accurate camera movement between each two frames. The thing is - I don't know anything at all about the light sources.
Assuming I don't know the anything about the light sources, but can get accurate camera movement and perhaps even a 3d model which roughly represents the object, any ideas?
Thanks a lot again.
Tamir.
martinB
11-18-2009, 09:51 PM
Assuming I don't know the anything about the light sources, but can get accurate camera movement and perhaps even a 3d model which roughly represents the object, any ideas?
Maybe you could estimate the light source (one or more?) direction, using the surface orientation of the 3D model and the highlights available in the images? Without seeing a typical image, it is very hard to suggest a strategy.
Have you considered to simply detect the highlights, and then fill them in (http://en.wikipedia.org/wiki/Inpainting)?
-- MartinB
Ian Jones
11-18-2009, 10:42 PM
On a basic level a filter such as high-pass will help you remove the broad low-frequency lighting shifts... isolating the detail (high frequency). It is likely that you'll have to interpolate as suggested for areas of high specularity. It sounds like a very complicated problem, is it absolutely beyond your means to get a better source of textures?
CGTalk Moderation
11-18-2009, 10:42 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.
vBulletin v3.0.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.