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 11: | Line 11: | ||
|'''Phone Number'''||+91 9783582684 | |'''Phone Number'''||+91 9783582684 | ||
|- | |- | ||
− | |'''Mailing Address'''|| E#221 Ram Path, Shyam Nagar, Jaipur – 302019.(IN) | + | |'''Mailing Address'''|| E#221 Ram Path, Shyam Nagar, Jaipur – 302019.(IN) |
|- | |- | ||
|'''Time Zone'''||UTC +0530 | |'''Time Zone'''||UTC +0530 | ||
|} | |} | ||
− | ==Brief Background== | + | ==Brief Background=== |
I am an Undergraduate Student in Computer and Communication Engineering. Currently in my pre-final year, I have done diverse range of projects varying from Computer Systems, graphics, Image Processing and Learning. | I am an Undergraduate Student in Computer and Communication Engineering. Currently in my pre-final year, I have done diverse range of projects varying from Computer Systems, graphics, Image Processing and Learning. | ||
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 | + | 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 | + | 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 | + | 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 | + | Among the current tools, image functions and there groups will be identified which could enhance the usability of the tools. |
+ | Proper Documentation will be done as discussed in later sections. | ||
===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 | + | src/util folder these seem to be the only relavant formats for BRLCAD. Very few formats among them are currently implemneted 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 | + | On analysing the current status of the IPTs they involve usage of the following categories of image processing functionalities. |
− | |||
*Crop or Rect | *Crop or Rect | ||
− | * | + | *Differeces and other airthmetic operations |
*Filters, | *Filters, | ||
*Histograms and Equalizations | *Histograms and Equalizations | ||
Line 66: | Line 66: | ||
*Morphing | *Morphing | ||
− | In this project, I propose to add these functionalities in the | + | In this project, I propose to add these functionalities in the icv library. Further analysis will be done to identify other functionality. During the intial |
− | + | working stage details of these functions will be worked with to identify the input and output arguments, usability and different methods to be incorporated | |
− | + | in the functions. | |
− | |||
− | |||
===Use of image containers and structures=== | ===Use of image containers and structures=== | ||
The current structure for used in the icv library, for image details is as follows: | The current structure for used in the icv library, for image details is as follows: | ||
− | + | struct icv_image_file { | |
uint32_t magic; | uint32_t magic; | ||
char *filename; | char *filename; | ||
Line 81: | Line 79: | ||
int width, height, depth; /* pixel, pixel, byte */ | int width, height, depth; /* pixel, pixel, byte */ | ||
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, | + | structures. In the working schedule special time is devoted for this purpose. On discussion with the mentors and other developers dicision will be taken |
− | structures. In the working schedule special time is devoted for this purpose. On discussion with the mentors and other developers | + | about deciding the image container and other structures needed for this library. |
− | about deciding the image container and other structures needed for this library. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ==Documentation== | + | ===Documentation=== |
− | + | Complete documentation will be built for all the functions. This will include the input, output arguments. Details of the various methods in the functions. | |
− | |||
− | |||
− | |||
==Working Schedule== | ==Working Schedule== | ||
− | === | + | ===June 15 (Analysis and Design Period)=== |
*Exploring the code. | *Exploring the code. | ||
*Make a short rough bio about each tool - ''the way they work''. | *Make a short rough bio about each tool - ''the way they work''. | ||
Line 118: | Line 103: | ||
At the end of this period : '''A finalized plan to proceed for the development of the library'''. | At the end of this period : '''A finalized plan to proceed for the development of the library'''. | ||
− | ===June 17 - | + | ===June 17 - Aug 19 (Development Phase)=== |
− | ====June 17 - | + | ====June 17 - June 24==== |
*Implementation of various Structures of the new library | *Implementation of various Structures of the new library | ||
*Deciding about the functions to be included in different files based on categories. | *Deciding about the functions to be included in different files based on categories. | ||
Line 126: | Line 111: | ||
*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. | ||
− | ==== | + | ====June 24 - Aug 16==== |
− | *Implementation of image processing functionalities | + | *Implementation of image processing functionalities. |
− | * | + | *Witting Documentation for each functionalities. PDF+Wiki |
− | * | + | *Perform Unit Level Testing of all the implemented functionalities as soon as they are implemented. |
− | + | ====July 29 - Aug 2==== | |
− | + | *Mid Term Report | |
− | |||
− | ==== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | * | ||
− | |||
− | |||
− | === | + | At the end of this period : '''A complete library with all functionalities and all of them having been tested at unit level'''. |
− | ==== | + | |
+ | ===Aug 19 - Sept 27 (Testing Cleaning and WrapUp)=== | ||
+ | ====Aug 19 - Sept 2==== | ||
*Code Cleaning | *Code Cleaning | ||
− | *System Level testing for the library. | + | *System Level testing for the library at multiple platforms. |
*Giving final structure to the documentation. | *Giving final structure to the documentation. | ||
− | ==== | + | ====Sep 2 - Sep 9==== |
*Creating Demos For each functionality and Final cleaning | *Creating Demos For each functionality and Final cleaning | ||
− | ==== | + | ====Sep9 - Sep16==== |
− | * | + | *Reserve Week. |
+ | :(If everything goes right some performance analysis using gprof for different data.) | ||
+ | ====Sep 16 - Sep 27==== | ||
*Final code submission with Google. | *Final code submission with Google. | ||
− | |||
− | |||
− | |||
− | |||
− | ==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 | + | 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. | ||
+ | Anything else? |