Table of Contents
Vesuvius Project Ideas - Google Summer of Code 2013
Simplify ImageStats Code
Mentor-Provided Section
Background, Spring, 2013
Original Introduction from the Ideas Page
Simplify ImageStats Code
Platform | Vesuvius |
Mentors | Ajay Kanduru |
Preferred communication | TBD |
Brief description/Usage scenario | ImageStats is a Java program that extended the PL web site (NLM's version of Vesuvius). it was used in the recent Google Code In to tag skin color samples and facial boundaries from images. While fairly straightforward in concept, ImageStats was quickly built with many dependencies on third party libraries and functions. Now open-source, ImageStats could be redone to make it simpler, more stand-alone, and easier to maintain. |
Skills needed | Java |
Blueprints | GSoC 2013 - Simplify ImageStats Code |
Other resources | |
Acceptance conditions | |
Comments |
Other Comments
- ImageStats is an image-annotation tool; it will be helpful to read a a description of how was designed to used during Google Code In 2012 to analyze sets of photos of people, thereby gathering data for face detection and skin detection.
- Java source code is available for the web pages involved, which were an extension of NLM's People Locator flavor of Vesuvius. See the README.md for more about the existing system. Two caveats:
- This new project calls for a simplified reimplementation, with fewer library and PL/Vesuvius dependencies, so the existing source code is mainly for reference.
- The existing source code may need changes to function with a Vesuvius instance, rather than PL.
- The GCI use case involved calls to a FaceMatch web service. This is excluded from the use case of the GSoC project.
Existing ImageStats will be put back on line shortly, so that its functionality may be tried out; GSoC students will need passwords.
In the new version, essentially a tool independent of Vesuvius/PL, the images will simply be found in a directory, and the annotation results likewise deposited.
(more to come)
Student-Provided Section
About
The major objective of the project was to implement directory retrieval system in the application. This involved using images for the application from a local directory on the server. The sub-directories of the local directory are the collections and the images inside those sub-directories are shown to the user according to the search options filled by the user.
Tasks completed
The major tasks completed during the course of the project were:
- Removing the dependencies and compile the application
- Switch from MySQL to SQLite and configure database configurations.
- Implement new search methods for directory retrieval system.
- Configure Authentication in application.
- Implement functions for text based search.
- Other Small changes:
- Autosave functionality when clicking Next, Previous, and Close.
- Introducing a different non-PL logo, bigger title, joint NLM/Sahana branding.
- Handle Exceptions on the client side and show the errors to the user.
- Changing label name Event List to Image Collections.
- Ground Truth Status type options reduced to “Not Done” and “Completed”.
Further Work
Some of the tasks that have been identified for further improvement in the application are:
- Resolve Export Annotation Bug
- Show annotations in Thumb Images when showing the result list.
- Update Ground Truth Status Count in the Side bar after editing an image.
- Resolve bug in Cursor Resizing Indication.
User Guide
Annotating Images
Autosave functionality
There is an autosave functionality in the application. This means that if the user makes any changes in the annotations of the image and then clicks Next, Previous or Close then the annotations get saved automatically without the user being required to click Save Button.
Using the Search Box
The following search functionality provided for searchbox:
- *:xxx - searches Image ID, Event Name and Image Name for xxx
- image_id:xxx - searches Image ID for xxx
- event_name:xxx -searches Event Name for xxx
- image_name:xxx - searches Image Name for xxx
- xxx - searches Image ID, Event Name and Image Name for xxx
- xxx OR yyy - Returns true if Image ID, Event Name or Image Name match for either xxx or yyy
- xxx AND yyy - Returns true if Image ID, Event Name or Image Name match for both xxx and yyy
- xxx yyy - Treated as xxx OR yyy
Setup Guide
- Install the code in Eclipse as a new Project.
- Copy all the libraries required in the lib folder of the war folder and build their paths in the project. The libraries required are
- gson-2.2.4.jar
- gwt-graphics-1.0.0.jar
- gwt-servlet.jar
- gxt-3.0.1.jar
- jetty-naming-6.1.12.jar
- jetty-plus-6.1.12.jar
- sqlite-jdbc-3.7.2.jar
- Compile the project.
- Change the paths of the database and the environment variable in the configuration file(context.xml for Tomcat and jetty-web.xml for Jetty) according to the actual location of the database and the path of the image repository.
- Check whether the application is running in Eclipse Jetty.
- Make the war file by zipping the contents of the war folder in imagestats.war file.
- Copy the file in the webapps folder in Tomcat directory.
- Make virtual repository for the image repository by copying imagestats#repo file in $CATALINA_HOME/conf/Catalina/localhost folder from the MISC folder and change the path in the file to the path of the image repository.
- Run the Tomcat Server and go to the appropriate path in the browser to access the application.
Project Source Code
The source code was checked in to a new branch in the original repository of ImageStats in Github.
Master branch for ImageStats code - https://github.com/national-library-of-medicine/imagestats
Simplify branch for the project - https://github.com/national-library-of-medicine/imagestats/tree/simplify
Resource Pages
Project Proposal: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2013/mohit_aggarwal/1
Project BackGround and Original Project Plan: https://docs.google.com/document/d/16CUkdmRUrZwK6yiBg3YLodgNsb2EVXsL1N3rIl8xaqI/edit?usp=sharing
Project Log: https://docs.google.com/document/d/1TGYiUKzGIN_dSRVT4csh4R-aIUcfAw358M9FVfG0Wb8/edit?usp=sharing
Demo Video: https://www.youtube.com/watch?v=Fi9pLTjXnlE
Author: Mohit Aggarwal mohit.829@gmail.com