-------------------------------------------------------------------------------
Surface Defects Analyzer v0.25 Readme
Date: 09.07.2010
Author: Alexander [Stone] Denisov
-------------------------------------------------------------------------------
Content:
1. Description
2. Application installation
3. Source code
4. License information
5. Links
6. Changelog
-------------------------------------------------------------------------------
1. Description
Surface Defects Analyzer is the project of control system implementation which
is used for detecting and measurement of geometric parameters of surface
defects based on stereo images processing.
Project is a cross-platform system that supports plug-ins of different types
for special data processing needed by different types of surfaces.
Processing is split into three main stages:
1) Preprocessing - quality improvements of stereo images;
2) Surface analysis - here the rectified projection is built, defects can be
selected and measured;
3) Defect shape analysis - here all the main measurement are taken, special
plug-in is used to restore the 3D shape of defect, it is used to observe defect
shape itself and to measure its depth. Final summary report can be obtained
on this stage.
Currently implemented surface type is "Road".
Implemented and not implemented features:
[*] Creation of projects and stereo images, saving of configuration;
[*] Preprocessing: swapping of images, median filtering, levels adjustment
using histogram, supports auto-configuration;
[*] Image manipulation (zooming, panning, saving);
[*] 3D preview - scene manipulation, importing/exporting of 3D models;
[*] Additional functionality: logging, configuring, localization support,
plugins management, etc.;
[ ] Rectified projection calculation - currently works only for given example
(placeholder);
[ ] Automated selection ("Mark defect"). The feature should be implemented in
"Surface analysis" plugin type;
[ ] 3D shape restoration. Actually one of the main features but still is not
implemented, now just using placeholder 3D model. The feature should be
implemented in "3D Shape Restoration" plugin.
-------------------------------------------------------------------------------
2. Application installation
To make your application work on any system you should supply it with
additional dynamic link libraries used by application:
* Qt ( QtOpenGL4, QtGui4, QtXml4, QtCore4 );
* OpenCV ( highgui210, cv210, cxcore210 )
Note: make sure to recompile highgui with the changes in its source code
according to files included in the project;
* Intel IPP (if used and linked not statically);
* Microsoft Visual C++ (if compiled on Windows platforms using Microsoft Visual
C++ compiler).
-------------------------------------------------------------------------------
3. Source code
In order to compile the project you should either use Microsoft Visual Studio
and Qt add-in or configure Qt project file (.pro) manually.
When developing the project the following versions of software were used:
* Qt: 4.5.3
* OpenCV: 2.1.0
-------------------------------------------------------------------------------
4. License information
OpenCV license information is given in "opencv_license.txt".
Qt is distributed via LGPL license.
Surface Defects Analyzer is the property of Alexander [Stone] Denisov
(stone33@mail.ru) and is distributed "As is". You can use and modify it on
your own risk. You are also free to use any portions of source code not covered
by licenses above and please if you use it for your projects - just let me know
by email.
Using the application and its source code you confirm the license agreement.
-------------------------------------------------------------------------------
5. Links
Links to useful stuff for better understanding what's going on in the code and
for future development:
1) C. Harris and M. Stephens. A combined corner and edge detection.
// Proceedings of The Fourth Alvey Vision Conference, 1988. P.147-151.
2) Li Zhang, Brian Curless, Steven M. Seitz. Rapid Shape Acquisition Using
Color Structured Light and Multi-pass Dynamic Programming.
// 1st international symposium on 3D data processing, visualization, and
transmission, Padova, Italy, June 19-21, 2002.
(http://grail.cs.washington.edu/pub/papers/Zhang-2002-RSA.pdf).
3) OpenCV Reference Manual, 2010. 1104p.
4) Qt reference (Qt Assistant).
5) M. Kass, A. Witkin, D. Terzopoulos. Snakes: Active Contour Models.
// International Journal of Computer Vision, v.1, 1987. P.321-331.
6) C. Xu, J.L. Prince. Snakes, Shapes, and Gradient Vector Flow.
// IEEE Trans. on Image Processing, v.7, #3, 1998. P.359-369.
7) E.V. Zaugolnova, D.V. Yurin. Algorithm for Refinement of Preliminary
Segmentation of Images with Smooth, Low Contrast 2D Objects Boundaries.
In proc. Graphicon, 2006.
8) H. Christopher Longuet-Higgins. A computer algorithm for reconstructing
a scene from two projections. // Nature, 293, 1981. P.133135.
(http://www.nature.com/doifinder/10.1038/293133a0).
9) Bob Fisher. The Essential Matrix, 1997. (http://homepages.inf.ed.ac.uk/
rbf/CVonline/LOCAL_COPIES/EPSRC_SSAZ/node21.html).
10) A Generic Sparse Bundle Adjustment C/C++ Package Based on the
Levenberg-Marquardt Algorithm. (http://www.ics.forth.gr/~lourakis/sba).
11) Abhijit S. Ogale, Yiannis Aloimonos. Shape and the stereo correspondence
problem // International Journal of Computer Vision, 2005. 65(1).
(http://www.cs.umd.edu/~ogale/papers/ogaleIJCV05shape.pdf).
12) Zhengyou Zhang. Determining the Epipolar Geometry and its Uncertainty:
A Review, 1998.
(http://citeseer.ist.psu.edu/article/zhang96determining.html).
13) Robyn Owens. Epipolar geometry, 1997. (http://homepages.inf.ed.ac.uk/
rbf/CVonline/LOCAL_COPIES/OWENS/LECT10/node3.html).
14) Quang-Tuan Luong. Learning Epipolar Geometry.
(http://www.ai.sri.com/~luong/research/Meta3DViewer/EpipolarGeo.html).
15) Richard Hartley, Andrew Zisserman. Multiple View Geometry in computer
vision, 2003. Cambridge University Press.
(http://books.google.com/books?id=si3R3Pfa98QC&pg=PA153&dq=pinhole+
intitle:%22Multiple+View+Geometry+in+computer+vision%22&lr=&as_brr=0&
ei=nUSqR4WwHqP2iwGn-MiwCg&sig=0_W7ppQQx1zDNlCGYXLySmr4OOU).
16) Ingrid Carlbom, Joseph Paciorek. Planar Geometric Projections and Viewing
Transformations. ACM Computing Surveys 10 (4), 1978. P.465502.
(http://www.cs.uns.edu.ar/cg/clasespdf/p465carlbom.pdf).
17) B. Triggs, P. McLauchlan, R. Hartley, A. Fitzgibbon. Bundle Adjustment
A Modern Synthesis, Vision Algorithms: Theory and Practice, 1999.
(http://lear.inrialpes.fr/pubs/2000/TMHF00/Triggs-va99.pdf).
18) Subhashis Banerjee. How to compute a homography, 2008.
(http://www.cse.iitd.ac.in/~suban/vision/geometry/node24.html).
19) 3D projection. (http://en.wikipedia.org/wiki/3D_projection).
20) 3x4 Projection Matrix. (http://homepages.inf.ed.ac.uk/rbf/CVonline/
LOCAL_COPIES/EPSRC_SSAZ/node3.html).
* Open Computer Vision Library.
(http://sourceforge.net/projects/opencvlibrary).
* Intel® IPP Intel® Software Network.
(http://software.intel.com/en-us/intel-ipp).
* Qt A cross-platform application and UI framework.
(http://qt.nokia.com/products).
-------------------------------------------------------------------------------
6. Changelog
*** 21.06.2010 - v0.25 ***
- Fixed rare bug with defects removal occured when the same
defect was selected in both 2nd and 3rd tabs
- Fixed issue with JPEG files not saving on WinXP platform
- Plenty of GUI fixes
- Accelerators redesigned, added Smart refresh tool
- Ruler tool updated
*** 20.06.2010 - v0.24 ***
- Rectified projection of surface is now calculated
- Fixed bug with ruler tool when it was not visible
- Rescaling measures from mm to cm
*** 20.06.2010 - v0.23 ***
- Fixed issue when not asking for unsaved changes before exit
- Defects selections
- Shortcuts, menu commands for defect commands
- Ruler tool implemented
- Fixed GUI issues
*** 20.06.2010 - v0.22 ***
- Fixed issues when starting application from 'Release'
or 'Debug' folders
- Fixed projects directory parameter changes issue when it
worked not properly after change
- Defects data is cleared right after project is closed
- Fixed issue with double check of unsaved changes when
closing the application window
- Now scale factor is saved within project, so when loaded
rectified projection + scale factor give full information
about projection
*** 19.06.2010 - v0.21 ***
- Fixed file saving issue with line feeds
- Added Shape restoration functionality (interface and
placeholder methods for plugin)
- Rectified projection images are now saved
- Defect lists
- Defect parameters measuring
- Displaying full information about defects
- Generation of reports
*** 18.06.2010 - v0.20 ***
- Added preprocessing parameter for sending images to
configuration widget which greately improved speed
of switching between modifiers
- Fixed bug with updating modifiers information after
switching stereo images
- Updated histogram modifier (single overlapped histogram,
controls, auto values calculated using quantiles)
- Controls state is updated properly, new controls
*** 18.06.2010 - v0.19 ***
- Added main configuration plugins support
- Added preprocessing plugins support
- Added basic filters - median, images swapping, histogram
- Added utility to convert images from QPixmap to IplImage
- Implemented modifiers controls
*** 17.06.2010 - v0.18 ***
- Fixed importing normals
- Improved import of 3D models
- Implemented export of 3D models
- Changed 3D preview light position
*** 15.06.2010 - v0.17 ***
- Fixed bug with zoom icon displayed on graphics scenes
scroll bars
- Imported 3D models are now sored within single mesh
(and also will be exported as single object)
- New comparison methods for SDAPoint3D
- GUI minor changes
*** 14.06.2010 - v0.16 ***
- 3D viewer shading and zoom speed improved
- New features - opening files to import, clearing scene
- Ruler tool added (not yet implemented)
*** 10.06.2010 - v0.15 ***
- 3D viewer implemented
- OBJ importer implemented
- Zoom rectangle replaced by rubber band
- Stereo images views are fully sinchronized now
*** 07.06.2010 - v0.14 ***
- Bugfixes
- Zoom Tool implemented
- Hand Tool is deleted - hand is used by default
*** 05.06.2010 - v0.13 ***
- OpenCV updated to 2.1.0
- User controls for surface analyzing and
defect shape analyzing added
- OpenGL widget and rendering functionality
- Information about Qt, OpenCV, IPP
*** 04.06.2010 - v0.12 ***
- BUGFIX: memory leak issue solved which occured while
setting images to graphics scene and image viewer
- GUI preparation for future features
- Language and JPEG quality options
- Options window (not jet implemented)
*** 03.06.2010 - v0.11 ***
- Working image viewer
- Graphics scenes for processed images display,
additional information is displayed
- Zooming abilities
- Image saving
*** 02.06.2010 - v0.10 ***
- Bug fixes in stereo images handling
- GUI design changes
- SDAGraphicsScene class created
- Log window state tracking
*** 01.06.2010 - v0.09 ***
- Operations with image sets are fully implemented
- Saving and opening of project format v0.3,
all data about image sets is saved
- Image viewer
- Reorganized plugins projects
*** 30.05.2010 - v0.08 ***
- Fixed bugs in plugins unloading procedure
- Implemented project tree, adding and removing of stereo
image sets
*** 29.05.2010 - v0.07 ***
- Added profile selection procedure
- Unnecessary plugins are unloaded after profile selection
- Changes in plugin data structures
*** 28.05.2010 - v0.06 ***
- Added stereo base configuration feature
- Solution structure reorganization
- Added dedicated configuration structures for project and
image sets
- User interface changes
- WIP: project tree implementation
- WIP: plugins support
*** 26.05.2010 - v0.05 ***
- Project name changed to Surface Defects Analyzer in order
to make a step forward to universality
- cvGetImageSize() function added to OpenCV's highgui.dll
in order to provide functionality to get image size
without opening (allocating memory)
- NewImageSetDialog implemented
*** 23.05.2010 - v0.04 ***
- Improved window position saving
- Implemented project file opening
- Added multilanguage support, russian language translation
*** 14.05.2010 - v0.03 ***
- Added window position saving
- Implemented project file saving
including all warnings, creation of subfolders, etc