yet another compression idea based on human 3D-viewing

Daniel Arnold <[email protected]> Mon, 22 Jul 2002 13:11:04 +0200
Newsgroups gmane.comp.multimedia.ogg.tarkin.devel
Message-ID <[email protected]>
Hello,

I have read the last posts concerning symbol recognizing and and an enormous
data reduction as a possible result.

As many people have said this before symbol recognizing isn't much more than 
an impressive idea. Although many attemps where and are made into this 
direction none has succeded despite from very special tasks (for example OCR, 
or easy structured rooms where robots find some objects) that need in most 
times supercomputers.

When I read them I remembered an article in german science magazine "Spektrum
der Wissenschaft" (www.wissenschaft-online.de/spektrum related to "Scientific
American") that was also pointing out the "symbol recognition" and the 
"related points" problem and pointed out a very interesting solution to some 
of the aspects (April/2002, page 10 - 16, title: "Stereosehen und das 
zyklopische Auge").

The article was about a new theory of human 3D-viewing and how nature made it
possible that our brain was able to make out of two images from the two eyes a
new one with perfect overlaping of all elements and 3 dimensional view.

The answer is: We don't need symbol recognition for that it is much more
easier:

Beginning with an old fact that we view our environement out of the 
perspective of a virtual third eye (called "zyklopisches Auge" in german) in 
the middle between our two eyes (just try it, close one eye look around open 
it and close the other and compare the perspectives with that from both eyes 
open or look at babies that always take an object in between of their eyes 
instead in front of one eye) there was build up a theory that explained our 
3D-viewing and the middle eye perspective.

But what has this all to do with 2D-Films (I hear someone of you thinking ;-)
):

Imagine a scenery with some objects in foreground and a far away background.
Then take a camera and make a film during moving the camera in the same hight
with constanst speed from the left to the right. The objects in foreground
will have another position in an image after the movement but the far away
ones are still at the same place in images from the beginning and the end. The
same effect can be seen when you close your left eye and the you right one and
watching your fingers in front of the wall. The fingers seem to jump. So a
movement and the two human perspectives are the same despite from the fact
that you have only the first and the last image instead of a plenty of images
if you move the camera. Untill here everything is obvious.

Now imagine all the images the camera has made for the film, think them as
photographs and put them one onto the other in the order they where made. In
the end you have a little tower of photographs. Now lets take one point of the
foreground and one of the background in a horizontal line of the top photo and
take a knife an make a cut through our tower just in the line where our two
points are from the top to the bottom. Now lets take the related points of our
two ones in every image (with our human brain it is no problem here ;-) )and
make on the cut edge with a felt tip or what ever take a line through all
related points from the foregrund point and one line through the related
points of our background point. Now you have two lines. (just read it again if
you can't imagine, if you have the idea one time it is simple). The foreground
point line is diagonal and the background point line is vertical.

Now lets make this for all points and you will recive an image where only
diagonal and vertical lines are crossing.

So now one idea is to take a "cut image" of an image tower and search for our
lines. That way we have reduced 3D viewing and image movements recognition to
a texture recognition. We now need and algorithm to search for lines in our
cut image (each contrast border creates a line) and dependent from how
diagonal our lines are we can determine how far our points are. Now make this
for every scanline (like cutting bread) in our photo tower. And If we have one
time the distance for every point we also knwo much better which points belong
together and which not (so our symbol recognition would be much easier now).
But that's only a sideffect. 

Now there is my idea: If you have all the lines detected you can for example
take the first an the last image and combine all related points (now you know
by our TODO texture algorithm which points are related) with vectors. All
images between can bee thrown away. They only contain information we now can
reconstruct from our two images and our vectors. This idea can be improved if
you only take vectors that are very different and interpolate all the similar
ones in between (that would be a primtive object recognition).

But that's not the way human eye recongizes our nice textures. Since it only
has two images it has to do it another way (our lines would be hard to find):

Let us take one scanline from our images (our cut image) and combine wildly 
all
points from the scanline of the first photo with the ones from last one and
let us calculate a distance. Most of the distances will be wrong, since the
points do not belong together. But our images have a inner structure (we only
don't know that at the moment). So some of the point relations will be right
and cause our object has a certain size there will be other points in the 
neighbourhood with the same (or very similar) calculated distance. So there 
are some coherent calculations and lost of wrong ones. But the wrong ones 
aren't coherent, they are just statistically. Human neurons that are coherent 
are now stopping the statistically ones and make our statistical noise 
smaller and smaller. So we could make an algorithm that finds our coherent 
ones and throws our wrong ones away. That way we know how far object are and 
by the way the perspective of that brain created mix image is exactly the one 
from our virtual middle eye.

My second idea concerning our 2D-Films is, that you take two following images 
out of the image tower and follwo for each followning pair the above 
described steps. That way we get again our related points vectors through our 
image tower that can also be improved (concerning similar vectors) like in 
the first idea.

For now this only works for linear horizontal movements but I'm convinced that 
can be solved by a little bit more complexity of our algorithms. I presume 
that the second idea has much smaller problems with that cause you take two 
subsequent images and between them you can make linear movements. You only 
don't know in which direction. And that way you can aproximate any complex 
movement of the camera. In the first idea our linear lines will be curves in 
3D-space, I don't know if this is a much greater problem.

And by the way, the 3D stereo viewing with coherent points has already been 
solved in hardware (for example as PC card) by "3D-Image-Processing" in 
Augsburg, Germany.

So I hope I didn't explain it to complicated and that these ideas can help you 
on building up a great video codec. 

What do you think of it?

--
happy coding, Daniel Arnold 
 

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to '[email protected]'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.