Editing User:Level zero/proposal

From BRL-CAD

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 23: Line 23:
 
Consolidating and Adding the Image Processing Functions to LIBICV
 
Consolidating and Adding the Image Processing Functions to LIBICV
 
==Brief summary of Project==
 
==Brief summary of Project==
BRL-CAD has a number of image processing tools. Currently all the tools are implemented in a modular fashion where in each tool is accessed as a module. The primitive task of this project is to combine the image processing functionalities of these tools to a library. This task will ensure the re-usability of these functionalities by the application programmer through relevant API calls in the code and thus will be useful for building a proper GUI for BRL-CAD and helpful in other new tools/functions to be added to BRL-CAD in future.  
+
BRL-CAD has a number of image processing tools. Currently all the tools are implemented in a modular fashion where in each tool is accessed as a module. The primitive task of this project is to combine the image processing functionalities of these tools to a library. This task will ensure the reusability of these functionalities by the application programmer through relevant api calls in the code and thus will be useful for building a proper GUI for BRL-CAD and helpful in other new tools/functions to be added to BRL-CAD in future.  
 
==Project Description (Detailed)==
 
==Project Description (Detailed)==
 
===Introduction===
 
===Introduction===
Line 31: Line 31:
 
===BRL-CAD’s IPT(s) Information and Current Status===
 
===BRL-CAD’s IPT(s) Information and Current Status===
 
Currently these tools are implemented as standalone applications where in each tool is a separate program and separate executable are compiled through these programs. To run any tool, currently we pass command line arguments to the executable file (separate for each tool) and the return arguments are received on standard output buffers or it could be done by saving the output at
 
Currently these tools are implemented as standalone applications where in each tool is a separate program and separate executable are compiled through these programs. To run any tool, currently we pass command line arguments to the executable file (separate for each tool) and the return arguments are received on standard output buffers or it could be done by saving the output at
BRL-CAD’s IPT(s) are extensively written for various Image Processing task. Apart from the other formats, it has support for the BRL-CAD pioneered '''.pix''' format and the UNIX plots. Thus BRL-CAD cannot use any other third party library for Image Processing without altering them. Therefore work is underway in strengthening and Consolidating BRL-CAD’s image Processing Library and adding various Image Processing functionalities in it.  
+
BRL-CAD’s IPT(s) are extensively written for various Image Processing task. Apart from the other formats, it has support for the BRL-CAD pioneered '''.pix''' format and the unix plots. Thus BRL-CAD cannot use any other third party library for Image Processing without altering them. Therefore work is underway in strengthening and Consolidating BRL-CAD’s image Processing Library and adding various Image Processing functionalities in it.  
  
 
===Consolidating IPT(s) under LIBICV===
 
===Consolidating IPT(s) under LIBICV===
Line 37: Line 37:
 
library lib_icv. It is possible to create our own library of function by writing the functions as subroutines and compiling them to link to a shared library.  
 
library lib_icv. It is possible to create our own library of function by writing the functions as subroutines and compiling them to link to a shared library.  
  
Any API caller just needs to include the said library and thus has access to the implemented functions of image processing.
+
Any api caller just needs to include the said library and thus has access to the implemented functions of image processing.
  
 
Among the current tools, image processing functions and there common groups will be identified which could enhance the usability of the tools. Proper Documentation will be done as discussed in later sections.
 
Among the current tools, image processing functions and there common groups will be identified which could enhance the usability of the tools. Proper Documentation will be done as discussed in later sections.
Line 43: Line 43:
 
===Formats of Image to be supported===
 
===Formats of Image to be supported===
 
The current status of icv.h defines .PIX,.BW,.ALIAS,.BMP,.CI,.ORLE,.PNG,.PPM,.PS,.RLE,.SPM,.SUN,.YUV and looking at the conversion tools among the IPTs in  
 
The current status of icv.h defines .PIX,.BW,.ALIAS,.BMP,.CI,.ORLE,.PNG,.PPM,.PS,.RLE,.SPM,.SUN,.YUV and looking at the conversion tools among the IPTs in  
src/util folder these seem to be the only relevant formats for BRLCAD. Very few formats among them are currently implemented for loading and saving of the  
+
src/util folder these seem to be the only relavant formats for BRLCAD. Very few formats among them are currently implemented for loading and saving of the  
 
images. This project will create functions for loading and saving of all these formats.
 
images. This project will create functions for loading and saving of all these formats.
  
 
===Categories of Image Processing Functions===
 
===Categories of Image Processing Functions===
 
On analyzing the current status of the IPTs they involve usage of the following categories of image processing functionalities.
 
On analyzing the current status of the IPTs they involve usage of the following categories of image processing functionalities.
 +
*Crop or Rect
 +
*Differences and other arithmetic operations
 +
*Filters,
 +
*Histograms and Equalizations
 +
*Rotate
 +
*Scale or Shrink
 +
*Stats
 +
*Thresh
 +
*Interpolate
 +
*Dimensions and Image Information
 +
*Background
 +
*Borders
 +
*Fading
 +
*Merge or Split
 +
*Saturation
 +
*Morphing
  
*Crop or Rect
+
In this project, I propose to add these functionalities in the icv library.
*Differences and other arithmetic operations
+
Further analysis will be done to identify other functionality. During the initial working stage details of these functions will
*Filters,
+
be worked with to identify the input and output arguments, usability and different methods to be incorporated in the functions.
*Histograms and Equalizations
 
*Rotate
 
*Scale or Shrink
 
*Stats
 
*Thresh
 
*Interpolate
 
*Dimensions and Image Information
 
*Background
 
*Borders
 
*Fading
 
*Merge or Split
 
*Saturation
 
*Morphing
 
  
In this project, I propose to add these functionalities in the ICV library. Further analysis will be done to identify other functionality (enough time is given for this in schedule). During the initial working stage details of these functions will be worked on, to identify the input and output arguments, usability and different methods to be incorporated in the functions.
+
===Implemnetation===
 
+
The current tools present in the /src/util include usage of most of the above mentioned functionalities and the image format. The implemnetation
===Implementation===
+
task will include extractings these functionalities, finding commong attributes to arrange them in common groups, improve usabiltiy and add multiple available methods.
The current tools present in the /src/util include usage of most of the above mentioned functionalities and the image format. The implementation
 
task will include extracting these functionalities, finding common attributes to arrange them in common groups, improve usability and add multiple available methods.
 
  
 
===Use of image containers and structures===
 
===Use of image containers and structures===
Line 82: Line 83:
 
     unsigned char *data;
 
     unsigned char *data;
 
     unsigned long flags;  
 
     unsigned long flags;  
    };
+
};
 
+
Like any other image processing library there will be a need of containers to keep the points, arrays etc. No, judgement is made at this stage about these  
Like any other image processing library there will be a need of containers to keep the points, arrays etc. No, judgment is made at this stage about these  
 
 
structures. In the working schedule special time is devoted for this purpose. On discussion with the mentors and other developers decision will be taken  
 
structures. In the working schedule special time is devoted for this purpose. On discussion with the mentors and other developers decision will be taken  
about deciding the image container and other structures needed for this library.
+
about deciding the image container and other structures needed for this library.
 
 
 
==Sample Codes and Tools==
 
==Sample Codes and Tools==
 
*Code Patch (A code containing functions to load .png, .bw and .pix files). https://sourceforge.net/p/brlcad/patches/176/
 
*Code Patch (A code containing functions to load .png, .bw and .pix files). https://sourceforge.net/p/brlcad/patches/176/
 
*Tools of Image Processing in /src/util.
 
*Tools of Image Processing in /src/util.
 
*gprof for Performance Analysis
 
*gprof for Performance Analysis
===After Application Deadline===
 
Added a more robust patch which uses functions to implemneted load functions and thus converts to files from one format to other.
 
====Details of Patch====
 
https://sourceforge.net/p/brlcad/patches/178/
 
  
 
==Documentation==
 
==Documentation==
Line 126: Line 121:
 
*Witting Documentation of all the structures included. PDF+Wiki  
 
*Witting Documentation of all the structures included. PDF+Wiki  
 
*Creating Patches all together.
 
*Creating Patches all together.
====July 1 - Aug 19 [~7 Week]====
+
====July 1 - July 15 [~2 Week]====
 +
*Implimentation of Import/Export Modules.
 +
*Testing these Modules.
 +
*Documentation of these modules.
 +
====July 16 - Sep 2 [~7 Week]====
 
*Implementation of image processing functionalities focusing on categories identified during project analysis period.
 
*Implementation of image processing functionalities focusing on categories identified during project analysis period.
 
*Enough Time is allotted to this to follow up the implementation as decided during analysis step.
 
*Enough Time is allotted to this to follow up the implementation as decided during analysis step.
 
*Implementation of 3-4 functions a week which includes unit-level testing and code coverage.
 
*Implementation of 3-4 functions a week which includes unit-level testing and code coverage.
 
*Documentation of the functions including input output arguments/methods etc.
 
*Documentation of the functions including input output arguments/methods etc.
 
To implement the image processing functionalities common groups have been identified details of which are given at http://brlcad.org/wiki/User:Level_zero/GSOC13/ImplemnetationDetails-1 .Further these groups have varied implementation load, Thus to balance the load for a particular following weekly plan has been chalked in.
 
=====Sub Division=====
 
*WEEK-1 
 
**Crop or Rect (GROUP#1)
 
**Differences and other arithmetic operations (GROUP#2)             
 
*WEEK-2 
 
**Filters, (GROUP#3) 
 
*WEEK-3 
 
**Histograms and Equalizations (GROUP#4)
 
**Stats (GROUP#6)
 
*WEEK-4 
 
**Scale or Shrink (GROUP#5)
 
**Interpolate/Decimate (GROUP#8)
 
*WEEK-5 
 
**Thresh (GROUP#7)
 
**Background and Border (GROUP#9)
 
*WEEK-6 
 
**Merge or Split (GROUP#10)
 
*WEEK-7 
 
**Morphing and other Misc (GROUP#11)
 
====Aug 19 - Sept 2 [~2 Week]====
 
*Implimentation of Import/Export Modules.
 
*Testing these Modules.
 
*Documentation of these modules
 
  
 
===Sep 2 - Sep 27 (Final Wrap UP and Cleaning)===
 
===Sep 2 - Sep 27 (Final Wrap UP and Cleaning)===
Line 168: Line 142:
 
*Final code submission with Google.
 
*Final code submission with Google.
 
==Time Availability==
 
==Time Availability==
*During summer holidays I am completely free. I like working infront of screens and reading all types of books.
+
*During summer holidays I am completely free. I like working infront of screens.
 
*I can devote 40-50 hrs/week .
 
*I can devote 40-50 hrs/week .
*Besides this I may have to take a weeks off for a meditation seminar and the dates are still not known. Even if this happens I have ability to work for late hours to complete work at hand.
+
*Besides this I may have to take a weeks off for a meditation seminar and the dates are still not known. Even if this happens I have ability
 
+
work for late hours to complete work at hand.
 
==Why BRL-CAD?==
 
==Why BRL-CAD?==
 
In my final year at the university, I am due to work on my Under Graduate thesis. As per my background, my university has assigned me a faculty dealing in graphics and Image Processing.  
 
In my final year at the university, I am due to work on my Under Graduate thesis. As per my background, my university has assigned me a faculty dealing in graphics and Image Processing.  
This motivates me to utilize my summer holidays working with BRLCAD due to their large code base dealing with Image Processing and Graphics and thus becoming a regular contributor with it in my final year which would help me to complete my thesis.  
+
This motivates me to utilise my summer holidays working with BRLCAD due to their large codebase dealing with Image Processing and Graphics and thus becoming a regular contributor with it in my final year which would help me to complete my thesis.  
 
==Why you?==
 
==Why you?==
 
I am good in c, c++. I will not say that I possess excellent coding skills. But I have enough to work on this project. Besides this I am dedicated and have an inquisitiveness to learn new things.
 
I am good in c, c++. I will not say that I possess excellent coding skills. But I have enough to work on this project. Besides this I am dedicated and have an inquisitiveness to learn new things.

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)