Extracting surface reflectance or lightning intensity from a single image.

Started by
10 comments, last by Mritke 9 years, 6 months ago

So this may not be immediately useful, but just my thoughts based on some image processing I've been working on.

Single photo is a difficult case. There are arbitrarily many edge cases where your reconstruction could be wrong. An extreme example is that you cannot tell from a single photo the difference between rocky ground and a flat photo of that exact same rocky ground. The human eye can screw up just as easily as a computer vision algorithm - the difference is our experience allows us to apply appropriate preconceptions in most cases. For example the knowledge that dirt gets darker when it's wet, so darker != deeper. And the knowledge that some of the substances are the same rock just broken into smaller pieces. And that rock breaks with sharp edges. You see where I'm going. ;)

I think that in general people just do what you've done and then apply some manual tricks, e.g. maybe fix edges themselves, maybe apply a sharpen filter etc. But if you want to get a good result another way, here are some suggestions:

  • Use the multi-image approach. I played with VisualSFM to reconstruct 3D from photos, which is very cool but to be honest is a bit of a pain. It works okay if you do everything right and have good input photos. It works best if surfaces are non-reflective and have good colour variation, it may be worth increasing the contrast before running it. The point cloud can be a bit patchy but will give you a fair idea of the depths to help whatever other algorithm you're using.
  • Manually select some example areas that have different material types. Construct some statistical models of the colour values in each material type. Then you can have some idea when you're moving from one material to another (and therefore the edge should be sharp). Also you would know that if pixels became darker than statistically likely for that material it's probably due to depth.
  • Manually select chunks of particular materials, maybe with some sort of lasso tool. Would work fine for the big chunks, impractically painful for the small stones. Use that as a guide for whether edges should be sharp.
Advertisement

Maybe try to use dilation and erosion for different layers of detail?

What do you mean by erosion?

I mean morphologycal filters, so you can remove some details from image. So you can use it as "big detail" base without blurring it.

http://en.wikipedia.org/wiki/Mathematical_morphology

This topic is closed to new replies.

Advertisement