= GmImgProc: Life is better with us = = Framework = * Name: '''GmImgProc''' * SVN: https://svn-batch.grid.pub.ro/svn/PP2009/proiecte/GmImgProc * Team members: '''Alexandru Stefanescu''' - alexandru.stefanescu1708, '''Alexandra Olteanu''' - alexandra.olteanu * Project description: Image processing : binarization with otsu1d, otsu2d, niblack; image color uniformization == Technologies we use == * [http://openmp.org/wp] (OPENMP) * [http://en.wikipedia.org/wiki/OpenMP] (OPENMP) * [http://en.wikipedia.org/wiki/OpenCL] (OPENCL) * Languages: C++ == Goals == Image processing for OCR and content extraction Implies a set of costly operations like: - Binarization – the resulted image is formed by two classes separated by a threshold t : foreground and background - Noise detection - Clustering for creating meta-entities (ex: characters, lines) - Detection and/or classification of page components: line, table, character, frame, image, etc - Skew Detection and correction - Geometrical distortions correction - And the list may continue For this project our aim was to implement and parallelize methods for image binarization and to try different solutions to improve our results and to remove noise: * Otsu 1D * Otsu 2D * Niblack * Color Uniformization == Steps == 1. Play with the framework 2. Otsu1d serial implementation 2.1. For rectangular zones 2.2. Make it work for non-rectangular zones 3. Otsu2d serial implementation 3.1. For rectangular zones 3.2. Make it work for non-rectangular zones 4. Niblack serial implementation 4.1. Just for rectangular zones 5. Image color uniformization 6. Otsu1d parallelization with openMP (for non-rectangular zones version) 7. Otsu2d parallelization with openMP (for non-rectangular zones version) 8. Niblack parallelization with openMP 9. Parallelization of image color uniformization algorithm with openMP 10. Otsu2d parallelization with openCL == Project documentation == Serial implementation results and documentation(steps 1-5): https://docs.google.com/fileview?id=0B_-PCgaqcuLKNzkwODI5NTQtY2MzMi00M2ExLThkZTQtOTNkMGRiMmQyYzMy&hl=en == Results & Profiling == * Otsu 1D [[Image(Slide10.jpg, 500px)]] [[Image(otsu 1d.png, height=375px)]] * Otsu 2D [[Image(Slide13.jpg, 500px)]] [[Image(otsu 2d.png, height=375px)]] * Niblack [[Image(Slide17.jpg, 500px)]] [[Image(niblack.png, height=375px)]] * Color uniformization [[Image(Slide20.2.jpg, 500px)]] [[Image(diff.png, height=375px)]] * Otsu 2D (OpenCL) [[Image(Slide15.jpg, 500px)]] == Code == * compiled with Visual Studio 2005 & Intel C++ (included in Intel Parallel Studio) * we used an existing private image framework == Bibliography == * http://www1.rz.rwth-aachen.de/computing/events/2007/parco_openmp/parco_cpp_openmp.pdf * http://www1.rz.rwth-aachen.de/computing/events/2007/parco_openmp/Larry_ITT3.0.pdf * http://docs.sun.com/app/docs/doc/819-5270/aewcv?a=view * http://72.5.124.69/display/openmp/Tasks+vs+Nested+Parallel+Regions * http://www.cscs.ch/fileadmin/user_upload/customers/CSCS_Application_Data/Files/Presentations/CPW09_OpenMp.pdf * http://vecpar.fe.up.pt/2006/programme/papers/65.pdf