Object Based Image Analysis Tools for Opticks

Mohit Kumar

Short description: Build Feature/Object Based Image analysis tools for Opticks. These tools will partition remote sensing (RS) imagery into meaningful image-objects, and assess their characteristics through spatial, spectral and temporal scale. At its most fundamental level, OBIA(object based image analysis) requires image segmentation, attribution, classification and the ability to query and link individual objects in space and time.

Name:
Mohit Kumar
_________________________________________________________________________

Country:
India
_________________________________________________________________________

School and degree:
International Institute Of Information Technology, Hyderabad, India
B.tech in Computer Science with MS by research in Spatial Informatics dual degree
_________________________________________________________________________

Email:
mohit[dot]kumarug08[at]students[dot]iiit[dot]ac[dot]in
mohitkharb[at]gmail[dot]com
_________________________________________________________________________

Phone:
+91 - 970 3840 175
_________________________________________________________________________

OSGeo project(s): Opticks

Title:
Object Based Image Analysis Tools for Opticks
_________________________________________________________________________

Describe your idea
 1. Introduction
Build Feature/Object Based Image analysis tools for Opticks. These tools will partition remote sensing (RS) imagery into meaningful image-objects, and assess their characteristics through spatial, spectral and temporal scale.
At its most fundamental level, OBIA(object based image analysis) requires image segmentation, attribution, classification and the ability to query and link individual objects in space and time.
 2. Background
Object-based image analysis (OBIA) involves pixels first being grouped into objects based on either spectral similarity or an external variable such as ownership, soil or geological unit. Many variables may be determined, categorised as spectral, shape and neighbourhood. Examples of spectral variables are mean value and standard deviation of a specific spectral band; shape variables include size, perimeter and compactness; neighbourhood variables indicate, for example, the mean difference of an object compared to darker ones. Each object is also part of a ‘super-object', obtained by combining several neighbouring objects into one larger, and each can be subdivided into smaller objects: ‘sub-objects'.
Using OBIA, knowledge on a landscape may be included by introducing rules. When a group of trees, grass and water is found in the neighborhood of dense housing it is likely to belong to a city park. In contrast, a group of trees surrounded by many others probably belongs to a forest. It is possible to make this distinction with OBIA, but not using traditional spectral image analysis. In general, OBIA provides increased accuracy and detail for classification purposes.
 3. The idea
The idea is to develop Object Based Image Analysis tools for Opticks. The language I will be using is C++.

  1. Preprocessing. Reading the input file, asking user to select R, G, B bands in case of multispectral data or Single band for grayscale. The data these bands will be queried from Opticks and stored in a 3 Dimensional array.
  2. Image Segmentation : Segmentation of the image into various labels. The labels will be marked to each pixel representing the object it belongs.
    For segmentation I am reading about mean shift[1], and will implement it.
  3. Feature Extraction : This will calculate the values for features for each object in the image.
    The features that I suggest to calculate are mean red, mean green, mean blue, std. deviation red, std. deviation green, std. deviation blue, Area, Perimeter,Roundness, Compactness,Centroid,Contrast, Coarseness, Direction, Roughness
  4. Classification : This will classify the various objects as per the training samples given by the user for each class.
    I will implement MLE(maximum likelihood estimation)[2] for the time being. If time is left I will try for SVM[3] or neural networks[4], I have studied about them in Pattern recognition course.
  5. Pruning : This give the user an option to see the objects the user wants and remove the rest. Pruning can be feature based or class based.
  6. Vectorization : This make a vector layer of any image (classification / feature image /pruned image).
    I will use GDAL, OGR vector layer to convert each object into polygons in a shape file.
  7. Change Detection : This module uses the Object based approach to get features of two co-referenced images and then applying image overlay and image differencing.


Testing :
The algorithm can be run on any image, so there is no problem for testing data. I have various remote sensing images with me, I will test the modules on all type of input images. For further imagery I will look up Opticks Sample Data ( http://opticks.org/confluence/display/opticks/ Sample+Data ) or USGS site (glovis.usgs.gov).
If a considerable amount of time is left I would like to do cross platform testing and solve portability issues. Also another task is to implement several other classification methods eg. SVM or neural networks.

References

  1. Mean Shift: A Robust Approach Toward Feature Space Analysis http://courses.csail.mit.edu/6.869/handouts/PAMIMeanshift.pdf
  2. http://statgen.iop.kcl.ac.uk/bgim/mle/sslike_1.html
  3. http://www.cs.ucf.edu/courses/cap6412/fall2009/papers/Berwick2003.pdf
  4. http://www2.econ.iastate.edu/tesfatsi/NeuralNetworks.CheungCannonNotes.pdf


 4. Project plan (detailed timeline: how do you plan to spend your summer?)
Weekly Report format : (report will be updated on the project wiki by every Sunday)

    • Work done in the week.
    • Problems faced.
    • Work to be done next week.
  • April 23rd - May 10
    • Refine project plan.
    • Make wiki page for the project discussion and putting up weekly reports.
    • Make a repository on github for regular upload and easy access of the source code.
    • Familiarize with Opticks plugin development,
  • May 10 - May 21
    • Experimentation with Opticks plugin development.
    • Write few simple GUIs in order to get hold of them.
    • Write down Technical design Document.
  • May 21 - May 27
    • Making a GUI
    • Pre-processing
  • May 28 - June 3
    • Image Segmentation : implementing the algorithm
  • June 4 - June 10
    • Image Segmentation : integrating the algorithm with the GUI.
    • Testing the algorithm for different input data and solving issues that come.
  • June 11 - June 17
    • Feature Extraction
  • June 18 - June 24
    • Checking and verifying the results of feature extraction.
    • Classification based on training samples given by the user.
  • June 25 - July 1
    • Feature Based Pruning
  • July 2 - July 8
    • Documentation
    • Code cleaning and commenting
    • solving bugs
    • class based pruning
  • July 9 - July 15
    • Mid-term evaluation
    • Testing the modules.
    • vectorization
  • July 16 - July 22
    • Change Detection : Two Images (up-to feature Extraction)
  • July 22 - July 29
    • Image Overlay and Image Differencing
    • getting the “change image”, showing the various change classes.
  • July 30 - August 5
    • Change analysis : class / feature based visualization
    • Coding phase ends
  • August 6 - August 12
    • Wrapping up documentation
    • Cleaning up the code
    • Start testing phase
  • August 13 - August 19
    • Testing period
    • solving bugs
    • Buffer zone
  • August 20 - August 24
    • Buffer time
    • work on bugs (if any)
    • 24th is the Final deadline
  • After August 24
    • Become an active member of the community
    • work on further bugs, dependencies ( if any arise)



 5. Future ideas / How can your idea be expanded?
My idea is a basic implementation of OBIA . The Idea can be expanded in two ways:

  1. Developing further tools using these tools viz.segmentation, attribution,classification. The tools that can be made are

River Analysis : OBIA can also provide reliable products where traditional image analysis fails totally; for example, when spectral properties are indistinct. In a river basin OBIA will help as the fossils that accumulate over are characterized by their shape, not by their spectral characteristics.  

  1. Increasing the efficiency of the algorithms that will be implemented. There is always a scope of improvement in efficiency

_________________________________________________________________________
Explain how your SoC task would benefit the OSGeo member
project and more generally the OSGeo Foundation as a whole:
My SOC task aims at implementing Object Based Image analysis tools to partition remote sensing (RS) imagery into meaningful image-objects, and assessing their characteristics through spatial, spectral and temporal scale.
Object based approach is better than conventional per-pixel analysis as it deals with considerably reduced number of units. This approach is not that much sensitive to noise and hence is spatially consistent.
So these tools will help in increasing efficiency in case of very large data sets.
_________________________________________________________________________

Please provide details of general computing experience:
(operating systems you use on a day-to-day basis, languages you
could write a program in, hardware, networking experience, etc.)
C, C++, Java, python, matlab.
APIs : Google maps API, Android API.
Environments : QT, Eclipse, netbeans.
Operating Systems : linux(fedora, debian), windows.
Server side scripting  : jsp.
_________________________________________________________________________

Please provide details of previous GIS experience:
I am quite used to Openjump, ILWIS, GRASS GIS, ENVI, ARCGIS, mapserver.
_________________________________________________________________________

Please provide details of any previous involvement with
GIS programming and other software programming:
I have not done any GIS programming( till now but made a small location based android game.
I have made a C++ based software for Object Based Change Detection and Analysis including the Creation of nested hierarchical classification of the objects to help choose the appropriate level of change detection in these object classes.
I have made MATLAB based automated fire detection software on ASTER data.
A developer of java(applets) based online Optical Remote Sensing Virtual Lab. -- I am a contributor to the online Optical Remote Sensing Virtual Lab in which I have quite a good experience with Java beans.
_________________________________________________________________________

Please tell us why you are interested in GIS and open
source software:
I am a research student in Lab for Spatial Informatics, that is why GIS is my specialization. Also I believe when one develops a software out of a research idea, many new challenges come which enhance the research and learning of the subject.
Open Source software development is a very good way of developing, easy to learn and develop as documentation and community support is easily available
_________________________________________________________________________
Please tell us why you are interested in working for OSGeo
and the software project you have selected:
OSGeo is the biggest organization in field of GIS, and Opticks mainly focus on Remote sensing which is my area of research.
_________________________________________________________________________
Please tell us why you are interested in your specific
coding project:
I have been a part of project somewhat similar to the project I have chosen but didn't code it as an independent tool. I would like to extend my work by developing it as an open source software.

_________________________________________________________________________
Would your application contribute to your ongoing studies/
degree? If so, how?
The GSOC task that I am supposed to implement is a part of my research. My application will be of great importance in my research, because when we are developing on a larger scale, we face new and different problems and its a part of learning to solve those bugs.
_________________________________________________________________________

Please explain how you intend to continue being an active
member of your project and/or OSGeo AFTER the summer is over:
After the summer is over I will become an active contributor of Opticks community. Remote sensing being my topic of research, I will try to implement my research ideas and further add to OSGeo community.
_________________________________________________________________________

Do you understand this is a serious commitment, equivalent
to a full-time paid summer internship or summer job?

Yes I completely understand the seriousness of this task.I have nothing to do in summer except for GSOC. I can easily give 40-50 hours per week to summer of code. I will give all my commitment and dedication to the task.
My current semester will end on 22nd April. After 22nd April I am free completely.