-------------------------------------------------------------------------------
Surface Defects Analyzer v0.25 Readme
Äàòà: 09.07.2010
Àâòîð: Àëåêñàíäð [Stone] Äåíèñîâ
-------------------------------------------------------------------------------
Ñîäåðæàíèå:
1. Îïèñàíèå
2. Óñòàíîâêà ïðèëîæåíèÿ
3. Èñõîäíûé êîä
4. Èíôîðìàöèÿ î ëèöåíçèè
5. Ññûëêè
6. Ñïèñîê èçìåíåíèé
-------------------------------------------------------------------------------
1. Îïèñàíèå
Surface Defects Analyzer - ïðîåêò, ðåàëèçóþùèé ñèñòåìó óïðàâëåíèÿ îáíàðóæåíèåì
è èçìåðåíèåì ãåîìåòðè÷åñêèõ ïàðàìåòðîâ ïîâåðõíîñòè ñ èñïîëüçîâàíèåì îáðàáîòêè
ñòåðåîèçîáðàæåíèé.
Ïðîåêò ÿâëÿåòñÿ êðîññ-ïëàòôîðìåííîé ñèñòåìîé, êîòîðàÿ ïîääåðæèâàåò ïîäêëþ÷àåìûå
ìîäóëè ðàçëè÷íûõ òèïîâ äëÿ ñïåöèàëüíîé îáðàáîòêè äàííûõ, òðåáóåìîé ðàçëè÷íûìè
òèïàìè ïîâåðõíîñòåé.
Îáðàáîòêà ðàçäåëåíà íà òðè îñíîâíûõ ýòàïà:
1) Ïðåäîáðàáîòêà - óëó÷øåíèå êà÷åñòâà ñòåðåîèçîáðàæåíèé;
2) Àíàëèç ïîâåðõíîñòè - ñòðîèòñÿ ðåêòèôèöèðîâàííàÿ ðàçâåðòêà ïîâåðõíîñòè,
âûäåëÿþòñÿ äåôåêòû, ïðîèçâîäÿòñÿ èçìåðåíèÿ ðàçìåðîâ;
3) Àíàëèç ôîðìû äåôåêòîâ - ïðîâîäÿòñÿ îñíîâíûå èçìåðåíèÿ, ñïåöèàëèçèðîâàííûé
ïîäêëþ÷àåìûé ìîäóëü îñóùåñòâëÿåò âîññòàíîâëåíèå òðåõìåðíîé ôîðìû äåôåêòà,
êîòîðàÿ èñïîëüçóåòñÿ äëÿ îòîáðàæåíèÿ âíåøíåãî âèäà äåôåêòà è èçìåðåíèÿ åãî
ãëóáèíû. Íà äàííîì ýòàïå ìîæåò áûòü ïîëó÷åí îò÷åò ïî ðåçóëüòàòàì èçìåðåíèé.
Íà äàííûé ìîìåíò ðåàëèçîâàí òèï ïîâåðõíîñòè "Road" (äîðîæíàÿ ïîâåðõíîñòü).
Ñïèñîê îñíîâíûõ ôóíêöèé (è ðåàëèçîâàííûõ, è íå ðåàëèçîâàííûõ):
[*] Ñîçäàíèå ïðîåêòîâ è ñòåðåîèçîáðàæåíèé, ñîõðàíåíèå íàñòðîåê;
[*] Ïðåäîáðàáîòêà: âîçìîæíîñòü ïîìåíÿòü èçîáðàæåíèÿ ìåñòàìè, ìåäèàííàÿ
ôèëüòðàöèÿ, óïðàâëåíèå óðîâíÿìè ïî ãèñòîãðàììå (àâòîìàòè÷åñêè ïðåäëàãàþòñÿ
ïàðàìåòðû äëÿ óëó÷øåíèÿ êà÷åñòâà èçîáðàæåíèÿ);
[*] Ìàíèïóëÿöèÿ èçîáðàæåíèÿìè (óâåëè÷åíèå, ïðîêðóòêà, ñîõðàíåíèå);
[*] Îòîáðàæåíèå òðåõìåðíûõ ìîäåëåé: óïðàâëåíèå ñöåíîé, èìïîðò/ýêñïîðò
òðåõìåðíûõ ìîäåëåé;
[*] Äîïîëíèòåëüíàÿ ôóíêöèîíàëüíîñòü: âåäåíèå æóðíàëà ðàáîòû ïðîãðàììû,
íàñòðîéêà, ïîääåðæêà ëîêàëèçàöèè, óïðàâëåíèå ïîäêëþ÷àåìûìè ìîäóëÿìè è ò.ï.;
[ ] Ñîçäàíèå ðåêòèôèöèðîâàííîé ðàçâåðòêè ïîâåðõíîñòè â äàííûõ ìîìåíò ðàáîòàåò
êîððåêòíî èñêëþ÷èòåëüíî äëÿ ïðèëàãàåìîãî ïðèìåðà (çàãëóøêà);
[ ] Àâòîìàòèçèðîâàííîå âûäåëåíèå («Ïîìåòèòü äåôåêò»). Äàííàÿ ôóíêöèÿ äîëæíà
áûòü ðåàëèçîâàíà â ïîäêëþ÷àåìûõ ìîäóëÿõ òèïà «Àíàëèç ïîâåðõíîñòè» (Surface
analysis);
[ ] Âîññòàíîâëåíèå òðåõìåðíîé ôîðìû. Îäíà èç íàèáîëåå âàæíûõ ôóíêöèé, íà äàííûé
ìîìåíò íå ðåàëèçîâàíà, èñïîëüçóåòñÿ òðåõìåðíàÿ ìîäåëü-çàãëóøêà. Ôóíêöèÿ
äîëæíà áûòü ðåàëèçîâàíà â ïîäêëþ÷àåìûõ ìîäóëÿõ òèïà «Âîññòàíîâëåíèå
òðåõìåðíîé ôîðìû» (3D Shape Restoration ).
-------------------------------------------------------------------------------
2. Óñòàíîâêà ïðèëîæåíèÿ
Äëÿ îáåñïå÷åíèÿ ðàáîòîñïîñîáíîñòè ïðèëîæåíèÿ ñëåäóåò ïðåäîñòàâèòü
äîïîëíèòåëüíûå äèíàìè÷åñêèå áèáëèîòåêè, èñïîëüçóåìûå ïðèëîæåíèåì:
* Qt ( QtOpenGL4, QtGui4, QtXml4, QtCore4 );
* OpenCV ( highgui210, cv210, cxcore210 )
Ïðèìå÷àíèå: òðåáóåòñÿ ïåðåñîáðàòü ìîäóëü highgui, âíåñÿ èçìåíåíèÿ â
ñîîòâåòñòâèè ñ ôàéëàìè, ïðèëàãàåìûìè ê ïðîåêòó;
* Intel IPP (åñëè èñïîëüçóåòñÿ, è ïðè ýòîì ñáîðêà íå ñòàòè÷åñêàÿ);
* Microsoft Visual C++ (åñëè ïðîåêò ñîáèðàåòñÿ íà Windows-ïëàòôîðìå ñ
èñïîëüçîâàíèåì êîìïèëÿòîðà Microsoft Visual C++).
-------------------------------------------------------------------------------
3. Èñõîäíûé êîä
Äëÿ êîìïèëÿöèè ïðîåêòà ìîæåò èñïîëüçîâàòüñÿ Microsoft Visual Studio è
Qt add-in, âòîðûì âàðèàíòîì ÿâëÿåòñÿ èñïîëüçîâàíèå äðóãèõ êîìïèëÿòîðîâ è ðó÷íàÿ
íàñòðîéêà ôàéëà ïðîåêòà Qt (.pro).
 ïðîöåññå ðàçðàáîòêè áûëè èñïîëüçîâàíû ñëåäóþùèå âåðñèè áèáëèîòåê:
* Qt: 4.5.3
* OpenCV: 2.1.0
-------------------------------------------------------------------------------
4. Èíôîðìàöèÿ î ëèöåíçèè
Ëèöåíçèîííàÿ èíôîðìàöèÿ áèáëèîòåêè OpenCV ïðèâåäåíà â ôàéëå
"opencv_license.txt". Qt ðàñïðîñòðàíÿåòñÿ ïî ëèöåíçèè LGPL.
Surface Defects Analyzer ÿâëÿåòñÿ ñîáñòâåííîñòüþ Àëåêñàíäðà [Stone] Äåíèñîâà
(stone33@mail.ru) è ðàñïðîñòðàíÿåòñÿ "Êàê åñòü". Âû ìîæåòå èñïîëüçîâàòü è
ìîäèôèöèðîâàòü ïðèëîæåíèå è ïðîãðàììíûé êîä íà ñâîé ñòðàõ è ðèñê. Òàêæå ìîæíî
ñâîáîäíî èñïîëüçîâàòü ëþáûå ôðàãìåíòû êîäà, íå îãðàíè÷åííûå ïðèâåäåííûìè âûøå
ëèöåíçèîííûìè ñîãëàøåíèÿìè. Ïðîñüáà ïðè èñïîëüçîâàíèè êîäà â ñâîèõ ïðîåêòàõ
ñîîáùèòü îá ýòîì ïî email.
Èñïîëüçóÿ ïðèëîæåíèå èëè èñõîäíîé êîä, Âû òåì ñàìûì ïðèíèìàåòå äàííîå
ëèöåíçèîííîå ñîãëàøåíèå.
-------------------------------------------------------------------------------
5. Ññûëêè
Ññûëêè íà èñòî÷íèêè, ïîëåçíûå äëÿ ïîíèìàíèÿ èñõîäíîãî êîäà è äàëüíåéøåé
ðàçðàáîòêè:
1) C. Harris and M. Stephens. A combined corner and edge detection.
// Proceedings of The Fourth Alvey Vision Conference, 1988. Ñ.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. 1104ñ.
4) Qt reference (Qt Assistant).
5) M. Kass, A. Witkin, D. Terzopoulos. Snakes: Active Contour Models.
// International Journal of Computer Vision, ò.1, 1987. Ñ.321-331.
6) C. Xu, J.L. Prince. Snakes, Shapes, and Gradient Vector Flow.
// IEEE Trans. on Image Processing, ò.7, ¹3, 1998. Ñ.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. Ñ.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. Ñ.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. Ñïèñîê èçìåíåíèé
*** 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