Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C++

Neural Networks in Digital Photogrammetric Processes

3.88/5 (6 votes)
17 May 2010CPOL3 min read 20.2K  
Introduction...

Introduction


This article is devotetd to digital photogrammetric processes. Mainly to the problem of searching the tie points in the stereo imagery. Goal of photogrammetric process is to obtain the spatial characteristics of objects on the scene using more than one photography of the same scene. Calclulations are based on the optical and projective geometry technics. For getting the spatial properties of object registered on both images it is necessary get know obout intrinsic characteristics of camera - focal lenght, essential matrix, fundamental matrix, distortion, principal point and size of image matrix. This technic is widely used by remote sensing of earth and topographic map creating.


The way is proposed in this article - is to reduce processing time in searching the tie points around the images and the way of digital elevation model extraction using the neural networks. Generally we use correlation function to search tie points on images. We get some sample from one image with size for example 6x6 pixels and try to find the same sample on other image with highest correlation. There are different correlation formulas we can use, one of them:



But when we are searching the suitable sample on other image we are doing the full scaning of image, which coast a lot of processing time. And this also can cause errors, because correlation function can show good result in different places of image.





The way I propose is to reduce the areas where to search tie points using Kohonen SOM (self organizing map). First of all we should classify both images with same classifier learned on one image. The result of classification recorded in matrices.
Then - classification matrices will be the map - showing from where we got sample on one image, and where we have to search the similar sample on another image.



After getting some number of tie points - we can calculate fundamental matrix. Actually I used RANSAC algorithm wich says that it need not less than 8 points. But in practice it is better to have much more points. To elliminate the situation when points are lied on the same line. Even using this technic there will be ways when we have wrong tie points. We can elliminate them calculating the fundamental matrix using RANSAC algorithm. And another criteria is - approximate same angle of movement of all points (no distortion in camera).


Further we can use epipolar geometry to create digital elevation models. Here we can use simple corellation functions, but I used another neural network - to show, that it is easy and simple to create digital elevation model using different technics. Each epipopolar line on the left image is used to learn growing neural tree(GNT - Narynov S.S.). Then this learned network tries to classify correspondent epipolar line on right image. Based on disparity in coordinates on both images we can calculate the depth of each pixel (strictly photogrammetric process).





As addition, in this work I used the optimisation ways of SSE and multithreading. SSE used in neural networks, and multrithreading in many other parts of code where we can divide process on two or more subprocesses.


Background



Article is devoted to digital photogrammetric processes. In article OpenCV library is used and neural networks technics.
So it is neccesary to have backgrounds in:


          • Remote sensing data processing

          • Photogrammetric processing

          • Neural networks ideology

          • Some Assembler knowledges

          • Multrithreading technics

          • OpenCV library

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)