User:Daniel: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
No edit summary
Line 8: Line 8:
I have known about GSoC program since 2010 or 2011 from the maintainer/help mailing list. Initially in 2007 for image processing purposes, when I was searching Matlab alternatives for Linux system, I found Octave, so I started to subscribe Octave mailing lists started reading the contributor communication seeing passionate and serious discussion, hoping someday I also have an @octave.org email account. Until one day, I found people discussing topics regarding GSoC, four or five years ago. So I have been having this idea of contributing to the Octave community for a long time.
I have known about GSoC program since 2010 or 2011 from the maintainer/help mailing list. Initially in 2007 for image processing purposes, when I was searching Matlab alternatives for Linux system, I found Octave, so I started to subscribe Octave mailing lists started reading the contributor communication seeing passionate and serious discussion, hoping someday I also have an @octave.org email account. Until one day, I found people discussing topics regarding GSoC, four or five years ago. So I have been having this idea of contributing to the Octave community for a long time.


Contributing to open-source is a great way to improve myself, and has always been my plan to get to know how the work in real life is done. Participating Google Summer Code is going to enable me get an in-depth understanding of Google's spirit and culture. Work and communication with other software engineers and scientific computing scientist in the open-source community in an corporative way will allow me grow up fast.
Contributing to open-source is a great way to improve myself, and has always been my plan to get to know how the work in real life is done. Participating Google Summer Code is going to enable me get an in-depth understanding of Google's spirit and culture. Work and communication with other software engineers and scientific computing scientist in the open-source community in a collaborative way will allow me grow up fast.


It will be an exciting and fruitful experience for me to code through the summer, with the purpose also directly related to my own research. My peer-review publication manuscripts will include much image processing/analysis, which will employ modules related to Octave Image packages and topics about Image IO. Therefore, the GSoC project will directly benefit my research project and this motivate myself highly.
It will be an exciting and fruitful experience for me to code through the summer, with the purpose also directly related to my own research. My peer-review publication manuscripts will include much image processing/analysis, which will employ modules related to Octave Image packages and topics about Image IO. Therefore, the GSoC project will directly benefit my research project and this motivate myself highly.
Line 36: Line 36:
I worked in a development team during an business competition during undergrad. I was responsible for the database design and implementation.
I worked in a development team during an business competition during undergrad. I was responsible for the database design and implementation.


My current PhD thesis work is the my biggest project so far. It's written in C++. I got to learn to get source code organized and its design pattern, even just the documentations plays very important role in maintenance and debugging efficiency.
My current PhD thesis work is my biggest project so far. It's written in C++. I got to learn to get source code organized and its design pattern, even just the documentations plays very important role in maintenance and debugging efficiency.


Other related courses I took include Fundamental Algorithm, C programming, Java programming, Computer Network, Database Management, and Big Data Programming (Hadoop ecosystem).
Other related courses I took include Fundamental Algorithm, C programming, Java programming, Computer Network, Database Management, and Big Data Programming (Hadoop ecosystem).
Line 46: Line 46:
I was trying to install the image package on Octave 4.0.0, found out the one of the dependency package --- control package has yet to work on Octave 4.0.0. So I may have to use 3.8.2 to test it and start implementing the imtranslate possessing both 2D and 3D processing capability and being compatible with Matlab.
I was trying to install the image package on Octave 4.0.0, found out the one of the dependency package --- control package has yet to work on Octave 4.0.0. So I may have to use 3.8.2 to test it and start implementing the imtranslate possessing both 2D and 3D processing capability and being compatible with Matlab.


I consider this a very basic exercise to warm me up before the dive into my real work on Image IO GNU/Octave GSoC 2015 project.
I consider this a very basic exercise to warm me up before delving into my real work on Image IO GNU/Octave GSoC 2015 project.


==== Experience with Open-Source Software/GNU products ====
==== Experience with Open-Source Software/GNU products ====
I am an aficionado of any OSS.
I am an aficionado of any OSS.


I started using Linux twelve years ago. My desktop evolves from Redhat, Federo, Gentoo, Ubuntu, Archlinux, Mint, until now I have two laptops, one is for normal work on Ubuntu, the other has Archlinux just for fun.
I started using Linux twelve years ago. My desktop evolves from Redhat, Fedora, Gentoo, Ubuntu, Archlinux, Mint, until now I have two laptops, one is for normal work on Ubuntu, the other has Archlinux just for fun.


I am familiar with most of the popular utilities/tools on Unix/Linux, including gcc, gdb, make, bash, perl, sed, awk, grep, cut, tr, ed, ldd, vim, ctag, tmux, screen....I have some experience with SDL, OpenCV and OpenGL.
I am familiar with most of the popular utilities/tools on Unix/Linux, including gcc, gdb, make, bash, perl, sed, awk, grep, cut, tr, ed, ldd, vim, ctag, tmux, screen....I have some experience with SDL, OpenCV and OpenGL.
Line 81: Line 81:
I have to say I am very self-motivated. But I need guidance to avoid unnecessary mistakes.
I have to say I am very self-motivated. But I need guidance to avoid unnecessary mistakes.


** Do you like to discuss changes intensively and not start coding until you know what you want to do?
* Do you like to discuss changes intensively and not start coding until you know what you want to do?


Yes, I tend to gather enough information. Sometimes, more than enough.
Yes, I tend to gather enough information. Sometimes, more than enough, maybe too much.
** Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?
* Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?
Yes. But I think it is not about like or not, it has to be in the workflow, not to mention that I am learning.
Yes. But I think it is not about like or not, it has to be in the workflow, not to mention that I am learning.


Line 93: Line 93:
My GSoC2015 project is all about to improve or even replace it with a better image IO. A whole new implementation of image IO in C++ will implemented during the summer with extensive testing and code review, aiming to provide a robust image module with quality code.  
My GSoC2015 project is all about to improve or even replace it with a better image IO. A whole new implementation of image IO in C++ will implemented during the summer with extensive testing and code review, aiming to provide a robust image module with quality code.  


An enhanced image IO will be implemented in this GNU/Octave GSoC project. Most of the popular scientific image file formats will be adapted. TIFF (Tagged Image File Format)[1] as the de factor standard for scientific images, in many areas including biomedical imaging, astronomy and industry application, will be used as the sample data during the initial implementation.
An enhanced image IO will be implemented in this GNU/Octave GSoC project. Most of the popular scientific image file formats will be adapted. TIFF (Tagged Image File Format)[1] as the ''de factor'' standard for scientific images, in many areas including biomedical imaging, astronomy and industry application, will be used as the sample data during the initial implementation.


Beyond TIFF, there are a lot of image formats. To handle this, Octave[2] traditionally uses GraphicsMagic (GM)[3], a library capable of handling many of them via a single C++ interface. However, GM still has its limitations. The most important are:
Beyond TIFF, there are a lot of image formats. To handle this, Octave[2] traditionally uses GraphicsMagic (GM)[3], a library capable of handling many of them via a single C++ interface. However, GM still has its limitations. The most important are:


*Many of the scientific images are encoded of 32 or higher bit of depth, that need to compile GM specifying quantum option, priori to compiling Octave, which per se could be an obstacle for general user to apply to their research for production/research publication purposes. With thus compilation, the high bit depth memory allocation is a waste for other smaller bit-depth image processing task. Building GM with high quantum means that images of smaller bit-depth will take a lot more memory when reading, but building it too low will make it impossible to read images of higher bit-depth. It also means that the image needs to always be rescaled to the correct range.
*Many of the scientific images or processing intermediates have to be encoded in 16 or higher bit of depth, that need to compile GM specifying quantum option "--with-quantum-depth=", priori to compiling Octave, which ''per se'' could be an obstacle for general user to apply to their research for production/research publication purposes. With thus compilation, the high bit depth memory allocation is a waste for other smaller bit-depth image processing task. Building GM with high quantum means that images of smaller bit-depth will take a lot more memory when reading, but building it too low will make it impossible to read images of higher bit-depth. It also means that the image needs to always be rescaled to the correct range.
*GM supports unsigned integers only thus incorrectly reading files such as TIFF with floating point data.
*GM supports unsigned integers only thus incorrectly reading files such as TIFF with floating point data.
*GM hides away details of the image such as whether the image file is indexed. This makes it hard to access the real data stored on file.
*GM hides away details of the image such as whether the image file is indexed. This makes it hard to access the real data stored on file.
This project would implement better image IO for scientific file formats while leaving GM handle the others. Since TIFF is the de facto standard for scientific images, this should be done first. Among the targets for the project given in a timeframe manner are described below.
This project would implement better image IO for scientific file formats while leaving GM handle the others. Since TIFF is the ''de facto'' standard for scientific images, this should be done first. Among the targets for the project given in a timeframe manner are described below.


== Detail Project Timeline ==
== Detail Project Timeline ==
Line 121: Line 121:
2nd week (06/01/- 06/07)
2nd week (06/01/- 06/07)


         Based on what I learn and continue learning to implement the Tiff class which is a wrap around libtiff, using classdef. To avoid creating too many private __oct functions, this project could also create a C++ interface to declare new Octave classdef functions.
         Based on what I learn and continue learning to implement the Tiff class which is a wrap around libtiff, using classdef.
        To avoid creating too many private __oct functions, this project could also create a C++ interface to declare new Octave classdef functions.


3rd week (06/08-06/14)
3rd week (06/08-06/14)
Line 149: Line 150:
9-10th week (07/20 - 08/02)
9-10th week (07/20 - 08/02)


         Flexible. Depending on progress and performance, could add test modules for all previous work, fix bugs, or make significant changes and utilize new ideas if necessary.
         Flexible. Depending on progress and performance, could add test modules for all previous work, fix bugs,  
        or make significant changes and utilize new ideas if necessary.


11th and 12th week(08/03 -08/16)
11th and 12th week(08/03 -08/16)
Anonymous user

Navigation menu