Difference between revisions of "User:Girlliyanli"

From PanoTools.org Wiki
Jump to navigation Jump to search
Line 19: Line 19:
 
Spherical panoramas which can be viewed through ptviewer are usually stitched from images captured with fisheye cameras. It is inconvenient, expensive and complex. Can we stitch overlapped images taken with hand-hold cameras? Under the guide of this goal, I consulted many articles. [http://www.cs.ubc.ca/~mbrown/autostitch/autostitch.html M.Brown’s recognizing panorama]was recommended by my tutor. He said if I could build a system according to this article, we would make it. The other materials he recommended are [http://hugin.sourceforge.net/ Hugin], panotools ,[http://user.cs.tu-berlin.de/~nowozin/autopano-sift/ autopano-sift], [http://enblend.sourceforge.net/ Enblend],So I began to do it step by step.
 
Spherical panoramas which can be viewed through ptviewer are usually stitched from images captured with fisheye cameras. It is inconvenient, expensive and complex. Can we stitch overlapped images taken with hand-hold cameras? Under the guide of this goal, I consulted many articles. [http://www.cs.ubc.ca/~mbrown/autostitch/autostitch.html M.Brown’s recognizing panorama]was recommended by my tutor. He said if I could build a system according to this article, we would make it. The other materials he recommended are [http://hugin.sourceforge.net/ Hugin], panotools ,[http://user.cs.tu-berlin.de/~nowozin/autopano-sift/ autopano-sift], [http://enblend.sourceforge.net/ Enblend],So I began to do it step by step.
 
*Firstly, we should extract control points(sift) from each image. I read [http://www.cs.ubc.ca/~lowe/keypoints/link Prof.Lown's sift] and autopano-sift's source code carefully and knew clearly how it works. Then I began to port it from c# to c++. It took me more than one month. Later on, the program was modified from time to time, being more efficient and more easily read.  
 
*Firstly, we should extract control points(sift) from each image. I read [http://www.cs.ubc.ca/~lowe/keypoints/link Prof.Lown's sift] and autopano-sift's source code carefully and knew clearly how it works. Then I began to port it from c# to c++. It took me more than one month. Later on, the program was modified from time to time, being more efficient and more easily read.  
*Secondly, key points should been matched. M.Brown matched key points with Best Bin Fast. I download a source code about kd tree from[http://www.cs.umd.edu/~mount/ANN/ ANN] and found it worked well and fast. As for the outliners' removing(unmatched pairs), we made modification on RANSAC to removed them and our experiment verified its efficiency.
+
*Secondly, key points should been matched. M.Brown matched key points with Best Bin Fast. I used kd tree and found it worked well and fast. As for the outliners' removing(unmatched pairs), we made modification on RANSAC to removed them and our experiment verified its efficiency.
*Thirdly, we should calculate parameters, so that we can build relationship among those images with those parameter. M.Brown used bundle-adjustment to calculate parameter. It is hard for me to program it and I did not find available source code. Detaining for a month, I changed my mind and started to build a comparatively easier system. It is limited and partial automatic. One of inputted image should be a central image, that is, other images are all overlapped with it. The system can recognize this central image and stitching them together. The projection we used is 8-parameters matrix which is calculate with [http://www.ics.forth.gr/~lourakis/levmar/ LM].  
+
*Thirdly, we should calculate parameters, so that we can build relationship among those images with those parameter. M.Brown used bundle-adjustment to calculate parameter. It is hard for me to program it and I did not find available source code. Detaining for a month, I changed my mind and started to build a comparatively easier system. It is limited and partial automatic. One of inputted image should be a central image, that is, other images are all overlapped with it. The system can recognize this central image and stitching them together. The projection we used is 8-parameters matrix which is calculate with LM.  
 
*In fact, I have never given up building up a totally automatic system.Thanks to [http://hugin.sourceforge.net/ Hugin], I made it at last. After downloading hugin,vigra and wxwindow. I compiled them successfully on VC.net. I debugged it step by step and gradually realized how it worked. Then I began to extract useful code I needed and found the system was monolithic. So I decided to build my system on it. I removed the wxwindow and built an interface with MSVC, I also integrated sift's code and Enblend'code into this framwork. The interface is simple and the system is totally automatic, after inputting several images, the system can divided them into parts and stitch each part automatically into cylindrical or planar or spherical panorama.
 
*In fact, I have never given up building up a totally automatic system.Thanks to [http://hugin.sourceforge.net/ Hugin], I made it at last. After downloading hugin,vigra and wxwindow. I compiled them successfully on VC.net. I debugged it step by step and gradually realized how it worked. Then I began to extract useful code I needed and found the system was monolithic. So I decided to build my system on it. I removed the wxwindow and built an interface with MSVC, I also integrated sift's code and Enblend'code into this framwork. The interface is simple and the system is totally automatic, after inputting several images, the system can divided them into parts and stitch each part automatically into cylindrical or planar or spherical panorama.
 
I know hugin is a GUI using panotools as core engine, which is a wonderful core code. I have never stop analyzing the principle of it and knows its interface well. I also want to rebuilt it, hoping it more easily used in the future for me.
 
I know hugin is a GUI using panotools as core engine, which is a wonderful core code. I have never stop analyzing the principle of it and knows its interface well. I also want to rebuilt it, hoping it more easily used in the future for me.
 
 
  
 
== Contact ==
 
== Contact ==
 
*msn:girlliyanli@hotmail.com
 
*msn:girlliyanli@hotmail.com
 
*gtalk:girlliyanli@gmail.com
 
*gtalk:girlliyanli@gmail.com

Revision as of 15:44, 18 April 2007

My name is Yanli Li, I'm a chinese student, doing study on panorama.

Education Background

  • 1997.09-2000.07 High school student.
    • No.1 Middle School of KaiFeng County,Henai province, China
  • 2000.09-2004.07 Undergraduate.
  • 2004.09-2007.07 Postgraduate.
    • Human-Computer Interface and Virtual Reality Lab, Department of Computer Science,Shandong University,Jinan, Shandong, China

Programming Experience

  • My main programming language is c/c++. I started to program in it since 2001 and I have never stopped since then. Most of my designs are about image processing. My graduate design which was named System of Text-Image Preprocessing and awarded Shandong University'Excellent Undergraduate Design involved lots of knowledge about image's processing, so I know well about such field.
  • When I enrolled in HCI&VR lab in 2004. I began to do study on panorama. At first, I analyzed ptviewer's java code and bulit a panorama viewer system running on local machine after port the ptviewer's souce code from jave to c++. I also designed a scene-tour system based on panorama viewer. Later, I began to do study on image stitching. After studying the souce code of Hugin, sift, panotools and enblend, I built a panoramic stitching system based on vc.net. It is a totally automatic system: the framework I used is hugin, the control point I used is sift, the matching part is based on kd tree, the blending method I used is Multiresolution Spline, and modification was made on RANSAC so that outliners can been removed more quickly.

Programming experience about panorama viewer

  • The first panorama material I consulted wasBig Ben’s panorama tutorial.The first system about panorama I programmed was about panoramic viewer. As we all know,ptviewerwas used to view panorama, but the source code I could find then was wrote in java which was from a java applet. So it seemed if we wanted to view panorama on local machine, we had to port the ptviewer from java to C++. Then it took me about two month to analyze the interface of the source code and wrote some documents about its structure and built a framework and designed several classes and wrote the detail code and remove small bug. Although my tutor advised me use direct3d to speed up. I found it worked well without the direct3D. So all the source code is c++.The principle of ptviewer I think is as following:what should been inputted is a spherical panorama, what we want to get is a frame on the screen. There is a virtual sphere between them. The frame can be created according three parameter of the virtual sphere: pan angle, tilt angle and hfov angle which can be controlled on VC.NET by mouse event, keyboard event and menu or tool. At first, the panorama are projected on the virtual sphere according to two formula, then the frame are projected to the virtual sphere according to two formula controlled by the three parameters, now the relationship between a frame and panorama are built. With the backward projection, we can get the corresponding pixel from panorama to the frame.
  • One panorama can only cover view from one site, the information is not enough. If we want to tour around a scene, what should to do? Yes, it needs us to do more. Following my tutor's advise, I built a scene-tour system. The scene tour system comprises two parts, one is to build the scene tour, being called scene-tour designer, another is to view the scene tour, being called scene-tour shower. It justly involved interface design without any intricate theory: At first, we should get some material, including the scene's map and several panoramas taken from the scene. Secondly, we input the map and build the relationship between the map's site and corresponding panorama with the scene-tour designer and adjust the directions. Last, we saved and get a file end with ".tour", whose structure we have defined. Now we can open this file on scene-tour shower and tour around the scene.

Programming experience about panoramic stitching

Spherical panoramas which can be viewed through ptviewer are usually stitched from images captured with fisheye cameras. It is inconvenient, expensive and complex. Can we stitch overlapped images taken with hand-hold cameras? Under the guide of this goal, I consulted many articles. M.Brown’s recognizing panoramawas recommended by my tutor. He said if I could build a system according to this article, we would make it. The other materials he recommended are Hugin, panotools ,autopano-sift, Enblend,So I began to do it step by step.

  • Firstly, we should extract control points(sift) from each image. I read Prof.Lown's sift and autopano-sift's source code carefully and knew clearly how it works. Then I began to port it from c# to c++. It took me more than one month. Later on, the program was modified from time to time, being more efficient and more easily read.
  • Secondly, key points should been matched. M.Brown matched key points with Best Bin Fast. I used kd tree and found it worked well and fast. As for the outliners' removing(unmatched pairs), we made modification on RANSAC to removed them and our experiment verified its efficiency.
  • Thirdly, we should calculate parameters, so that we can build relationship among those images with those parameter. M.Brown used bundle-adjustment to calculate parameter. It is hard for me to program it and I did not find available source code. Detaining for a month, I changed my mind and started to build a comparatively easier system. It is limited and partial automatic. One of inputted image should be a central image, that is, other images are all overlapped with it. The system can recognize this central image and stitching them together. The projection we used is 8-parameters matrix which is calculate with LM.
  • In fact, I have never given up building up a totally automatic system.Thanks to Hugin, I made it at last. After downloading hugin,vigra and wxwindow. I compiled them successfully on VC.net. I debugged it step by step and gradually realized how it worked. Then I began to extract useful code I needed and found the system was monolithic. So I decided to build my system on it. I removed the wxwindow and built an interface with MSVC, I also integrated sift's code and Enblend'code into this framwork. The interface is simple and the system is totally automatic, after inputting several images, the system can divided them into parts and stitch each part automatically into cylindrical or planar or spherical panorama.

I know hugin is a GUI using panotools as core engine, which is a wonderful core code. I have never stop analyzing the principle of it and knows its interface well. I also want to rebuilt it, hoping it more easily used in the future for me.

Contact

  • msn:girlliyanli@hotmail.com
  • gtalk:girlliyanli@gmail.com