Saturday, July 28, 2012

Week #10

This week I implemented working version of algorithm for searching feature points in image (based on SURF algorithm, but I omitted some tricky details - original is faster, I'll improve computation speed later).
Code:  https://github.com/migal-drew/SimpleSURF_csharp

Next week I'm planning to write code for finding descriptors and matching of identical points. If I don't come across problems, I'll begin to port methods in GDAL.




Saturday, July 21, 2012

Week #9

This week I didn't have enough free time, so results aren't great.
I tried to improve intial orientation of photos using GPS, but task turned up slightly more complicated than I expected, and I couldn't finish in time for weekly report.
Next week I'm planning continue my previous week goals and achieve more progress.

Sunday, July 15, 2012

Week #8

This week I tried to apply code for initial positioning of photos based on GPS information
Program creates .jgw and .prj files for every input image.
(I use this sample of telemetric information -
But for now I couldn't figure out appropriate camera parameters, so photos aren't aligned properly.
Next week I'm planning solve this ussue and continue work on searching feature points.

 This is current results. As you can see, positions and angles look good, but images don't match with each other (I think that is due to wrong scaling - wrong pixel size).



P.S. In this year I with my friends participate in ICFP contest for the second time. I hope we will reach some good results :)

Saturday, July 7, 2012

Week #7

This week I started to work on SURF algorithm
Also I started to implement initial orientation and geographical positioning using GPS information (C++ with GDAL library). Unfortunately, I've encountered some problems with with GDAL functions and with my programming environment - CodeBlocks and Eclipse CDT.
 I made another example of stitching. The photos are from my proposal, but now with my optimization code (in proposal - Opencv built-in transformer). 

Before and after

For more details read my previous posts.

Friday, July 6, 2012

Working on correlator

I started to work on simplified version of SURF algorithm. It's more complicated than I expected, and I decided to start with C sharp implementation (I hope to quickly port code to C++ using GDAL API).
Also I will need to test algorithm.

For the moment I made computation of integral image:
https://github.com/migal-drew/SimpleSURF_csharp

Next day I'm planning to add wavelets and Hessian computation. Also I have some ideas and I'll verify their. My official weekly report and last results will be in the next post.

Thursday, July 5, 2012

Problems and current results

Recently I added calculation of initial parameters (reverse affine transformation using 3 points). Now algorithm works with parameters which are near to optimum. As I expected, optimization process (gradient descent method) became faster (in previous solution, initial parameters was zeros).
But I still didn't solve problems with my LMA implementation. LMA can't improve initial parameters. It seems to me that I made some difficult to detect mistakes.

I think that I should take a break from optimization and implement simplified version of SURF. I hope that I'll have some code for midterm.

What I have today (in all examples I used gradient descent):

 Example #1

 Initial images
 









Result after initial orientation (using 3 points)

(white dots are feature points, white lines - gaps between similar points)

Result after 900 iterations


Example #2

Initial images  

 






 
 Result after initial orientation (using 3 points)

 


Result


Example #3

Initial images

 







Result


 
So, gradient descent is Ok for 2 images. Of course, it's very slow, nevertheless it works. But I don't know what happens if I apply this approach to several images (more than 2). There is only one way to check out - make implementation. If I have a time, I'll try to code this.