https://brlcad.org/w/api.php?action=feedcontributions&user=Level+zero&feedformat=atomBRL-CAD - User contributions [en]2024-03-28T12:58:09ZUser contributionsMediaWiki 1.32.2https://brlcad.org/w/index.php?title=Non-vacuum_gravity_simulator&diff=7897Non-vacuum gravity simulator2015-03-04T18:45:59Z<p>Level zero: Add Past Efforts</p>
<hr />
<div>BRL-CAD provides facilities for representing geometry, but limited capability for simulating effects on that geometry, such as gravity. There are basic forward-kinematic animation facilities and rudimentary joint rigging systems that can be used to simulate connectivity, but they were predominantly designed for animations.<br />
<br />
This task minimally involves integrating or implementing a simple rigid body dynamics system that can be used for simulating gravity and basic newtonian physics. We want to be able to "turn on" the system and have a simulation take over. For example, you might model a scene with an ambient gravity force, model a firm ground plane, model a box up in the air, then turn on the simulation and watch the box fall to the ground plane onto a flat face. The system will need to be driven from a single time parameter so that frames can be rendered for animation and other visualization purposes.<br />
<br />
A third-party physics system (such as [http://www.ode.org/ the Open Dynamics Engine (ODE)] or [http://bulletphysics.org/ the Bullet Physics Library]) can and should be used for this project in leu of implementing one, but selection of such a system will need to be discussed beforehand to ensure compatibility and maintainability. MIT/BSD license is ideal.<br />
<br />
=References=<br />
<br />
* src/archer<br />
* src/librt<br />
<br />
=Requirements=<br />
<br />
* Strong familiarity with C/C++<br />
<br />
=Past Efforts=<br />
* [http://brlcad.org/wiki/Google_Summer_of_Code/2012 GSoC12]</div>Level zerohttps://brlcad.org/w/index.php?title=New_Cross-Platform_3D_Display_Manager&diff=7896New Cross-Platform 3D Display Manager2015-03-04T18:44:47Z<p>Level zero: Add Past Efforts</p>
<hr />
<div>This project involves implementing a new cross-platform display manager for BRL-CAD's LIBDM display manager library using an API toolkit such as OGRE or Qt that abstract platform-specific implementation detail. <br />
<br />
BRL-CAD's primary means to interact graphically with geometry is provided by '''''display managers''''', which handle drawing geometric wireframes, text, (sometimes) shaded triangle mesh geometry, and other visualization elements. It's the 3D graphics window. Currently BRL-CAD has specific display managers for X11 Opengl (ogl), Windows OpenGL (wgl), and raw X11 (X), in addition to a variety of other special purpose and experimental display managers. Consequentially, our existing display managers are all platform-specific and a burden to maintain.<br />
<br />
Either OGRE or Qt could be utilized to implement a new display manager interface<br />
<br />
The steps for this task would be:<br />
<br />
# Review current display manager code to identify features a new display manager needs to support<br />
# Get OGRE or Qt running and embedded within a Tk window (this will be necessary for Archer/MGED to use the display manager). Bear in mind that one of the primary goals is to use this display manager on multiple platforms.<br />
# Identify how to perform the basic operations needed for a display manager, including<br />
#*line drawing<br />
#*text display<br />
#*keyboard and mouse input integration between OGRE or Qt and Tk<br />
#*embedding a framebuffer window (see overlay/interlay/underlay settings in the MGED raytrace control panel)<br />
# Writing routines to perform tasks needed (the display manager functionality) and hooking it into libdm<br />
# Testing (ideally cross platform) -- load a .g model and display it in the display manager<br />
<br />
A good proposal for this task would demonstrate a good understanding of what approaches would be taken to embed OGRE or Qt into Tk and what functionality would be utilized to perform wireframe drawing, text drawing, etc.<br />
<br />
=References=<br />
* src/libdm<br />
* include/dm*.h<br />
<br />
* http://www.ogre3d.org/<br />
** OGRE is a cross platform, open source 3D graphics engine that provides the features needed to implement a display manager for BRL-CAD, while abstracting many of the low level platform specific details. OGRE has the added benefit of having built-in support for scene graph management allowing for accelerated 3D windows. <br />
<br />
* http://qt.nokia.com/<br />
** Qt is a cross-platform application and UI framework of interest for new GUI development work in BRL-CAD. It similarly has support for creating OpenGL-based display contexts that could serve as the implementation detail for a new display manager. Qt has the added benefit of being able to use drawing canvases not reliant upon OpenGL or hardware acceleration.<br />
<br />
=Requirements=<br />
*Familiarity with C and C++ <br />
*(optional) Familiarity with OGRE<br />
*(optional) Familiarity with Qt<br />
<br />
=Past Efforts=<br />
[http://brlcad.org/wiki/User:Mesut/Reports | GSoC12]</div>Level zerohttps://brlcad.org/w/index.php?title=MGED_to_Archer_Command_Migration&diff=7895MGED to Archer Command Migration2015-03-04T18:43:08Z<p>Level zero: add Past Efforts</p>
<hr />
<div><br />
Archer is the next iteration of BRL-CAD's MGED model editing tool. We are currently in the process of migrating functionality from MGED to Archer, and there are many command-line commands that are currently not supported in Archer but should be. Proposals for this task should identify those commands, how to migrate them, how to test them, and any features needed but not implemented in Archer to support running them. The work over the course of the summer would be to perform the migrations, verify the results, and fix issues as needed along the way.<br />
<br />
A good proposal for this topic would include details on what commands would be migrated and how (not per command, some general techniques are in place), identify specifics needed to achieve full functionality in Archer, and factor in time required for testing - if it don't work it ain't migrated! Should also be looking to consolidate functionality where it is duplicated and clean up, rather than blindly copying - if there is a cleaner solution than the current setup for a particular task the preferred way forward is to implement the "right" way and support older commands as specific invocations of newer commands - for example, dbfind should be a call to the more powerful search command, and the graphical pattern tool in MGED needs to have its functionality merged into the command line tool clone. A student looking to submit a proposal for this task should do their homework and know what they're dealing with.<br />
<br />
=References=<br />
<br />
* src/mged<br />
* src/libged<br />
* src/libtclcad<br />
* src/tclscripts/mged<br />
* src/tclscripts/archer<br />
* src/librt<br />
<br />
=Requirements=<br />
<br />
* Familiarity with C<br />
* Familiarity with Tcl/Tk<br />
* Knowledge of command handling in MGED, Archer, libged and possibly librt - scope of libraries and where functionality should live.<br />
* Background knowledge of BRL-CAD will make a major difference!<br />
<br />
=Past Efforts=<br />
*[http://brlcad.org/wiki/User:Bhinesley GSoC11,GSoC12]</div>Level zerohttps://brlcad.org/w/index.php?title=Shader_Enhancements&diff=7894Shader Enhancements2015-03-04T18:40:58Z<p>Level zero: Add Past Efforts</p>
<hr />
<div>BRL-CAD's shader system is custom developed for the librt raytracer. Shaders are currently coded in C and explicitly added to the active shader list. A question of interest is whether we can utilize work being done for other open source raytracing shader systems to improve the flexibility of BRL-CAD's shader system and take advantage of shaders developed for other systems.<br />
<br />
A proposal should outline what changes are proposed to BRL-CAD's current shaders. Initial stages would involve either writing the shader bridge in liboptical or designing a new approach (remember though, all existing shader functionality in the current system must be preserved, even if it is re-implemented in some fashion. Be careful about biting off more than you can achieve in a summer.)<br />
<br />
=References=<br />
<br />
This task will require a fair bit of background research in order to put together a compelling proposal - interested students should study BRL-CAD's shader system to determine how it works, and then look at other open source, license compatible systems to see what they may offer. Candidates include:<br />
<br />
* http://en.wikipedia.org/wiki/Shading<br />
* http://en.wikipedia.org/wiki/Shader<br />
* http://en.wikipedia.org/wiki/Shading_language<br />
* Sony's Open Shader Language (OSL): http://opensource.imageworks.com/?p=osl<br />
* Pixie: http://www.renderpixie.com/<br />
* Yafaray: http://www.yafaray.org/<br />
<br />
OSL is of particular interest because it is developed specifically for raytracing systems.<br />
<br />
Code of relevance:<br />
<br />
* src/liboptical<br />
* include/optical.h<br />
<br />
Documentation of relevance:<br />
<br />
* {{pdf|Introduction to MGED|Introduction to MGED}}<br />
** Do lessons 1-7 minimum<br />
* {{pdf|Principles of Effective Modeling|Principles of Effective Modeling}}<br />
** Read Appendix B<br />
* {{pdf|Optical Shaders|BRL-CAD's optical shaders}}<br />
** Provides a broad survey from a developer's perspective<br />
<br />
=Requirements=<br />
<br />
*Familiarity with C/C++<br />
<br />
=Past Efforts=<br />
[http://brlcad.org/wiki/User:Kunigami/GSoc2011/Proposal GSoC11]</div>Level zerohttps://brlcad.org/w/index.php?title=Code_Reduction&diff=7893Code Reduction2015-03-04T18:37:05Z<p>Level zero: Add Past Efforts</p>
<hr />
<div>BRL-CAD is a large code base with more than a million lines of code across hundreds of binaries and dozens of libraries. Improving maintainability is an active requirement which includes identifying code duplication and refactoring accordingly.<br />
<br />
This project entails identifying common patterns of duplication throughout the code (there are tools that can help automate this). Once identified, the code can be carefully refactored into new routines, common functionality, library code, etc.<br />
<br />
Testing is required to make sure refactoring was correct and functionality was not changed. Test-driven development would be helpful here.<br />
<br />
=References=<br />
<br />
* run the sh/enumerate.sh script to see current line count statistics<br />
* http://en.wikipedia.org/wiki/Duplicate_code<br />
* http://www.harukizaemon.com/simian/index.html<br />
* http://checkstyle.sourceforge.net/config_duplicates.html<br />
<br />
= Requirements=<br />
<br />
* Ability to write regression tests<br />
* Ability to refactor C/C++<br />
<br />
=Past Efforts=<br />
*[http://brlcad.org/wiki/User:Ksuzee/Reports GSOC12]</div>Level zerohttps://brlcad.org/w/index.php?title=Visualizing_Constructive_Solid_Geometry_(CSG)&diff=7892Visualizing Constructive Solid Geometry (CSG)2015-03-04T18:35:15Z<p>Level zero: Add Past Efforts</p>
<hr />
<div>In recent years, tools like graphviz have made automatic graphical layout of graph structures in images both practical and useful. Traditionally, geometric hierarchies in BRL-CAD databases have been visualized either as lists or trees, and those methods continue to be the primary geometry browsing methods.<br />
<br />
This task would follow up on work from 2012 using automatic graph layout libraries to produce a graph based visualization of the structure of .g databases:<br />
<br />
http://brlcad.org/wiki/User:Cprecup/GSoC2012_progress<br />
<br />
The task is not simply to generate images of graphical geometry hierarchies - that is relatively straightforward and can be done with scripts - but to design graphical, interactive widgets that utilize graph algorithms to interactively display geometry structure in useful, intuitive and interactive ways (tying changes in wireframe 3D renderings to selection or de-selection of nodes in a graph display of .g geometry, for example). Some progress was made in 2012, but there is a lot more that can be done.<br />
<br />
Our current interfaces use the Tk toolkit, but Qt would also make an interesting toolkit for this sort of work.<br />
<br />
Proposals should include specific ideas (mockups and example layouts are a good way to convey graphical ideas).<br />
<br />
=References=<br />
<br />
* src/tclscripts<br />
* src/tclscripts/mged<br />
* src/tclscripts/archer<br />
* src/libtclcad<br />
<br />
Potentially useful libraries must be under a compatible (BSD, MIT, LGPL2) license - (work so far has been done using the Adaptagrams library):<br />
<br />
*Adaptagrams: http://adaptagrams.sourceforge.net/<br />
<br />
=Requirements=<br />
<br />
*Familiarity with Tcl/Tk and/or Qt<br />
*Familiarity with C/C++<br />
*Comfortable understanding of graphs (will be working with graph libraries)<br />
<br />
=Past Efforts=<br />
*[http://brlcad.org/wiki/User:Cprecup/GSoC2012_progress GSoC12 ]</div>Level zerohttps://brlcad.org/w/index.php?title=Benchmark_Performance_Database&diff=7891Benchmark Performance Database2015-03-04T18:32:56Z<p>Level zero: Add past efforts</p>
<hr />
<div>The BRL-CAD Benchmark Suite is a system performance analysis benchmark that tests the performance of a given system's CPU, memory, cache coherency, kernel context switching, and compiler optimization capabilities. The benchmark provides a linearly comparable metric of overall system performance that may be used to quantitatively evaluate the relative performance of a given system, particular compilers, compilation options, and hardware architecture designs. This performance test is based on a real-world CPU intensive application of ray-tracing, providing a reliable metric of actual system performance that may be compared across more than two decades of computing.<br />
<br />
After a benchmark run, a log file is generated with performance metrics and platform information. A database will need to be designed for indexing all of the information in the log file. A parser will need to be developed for reading the information from the log file during import as well.<br />
<br />
The website should offer multiple mechanisms for adding new performance run data into the database. The website should provide multiple graphical and non-graphical visualizations of aggregate performance data (i.e., graphs, charts, tables, etc).<br />
<br />
=References=<br />
<br />
* bench<br />
** directory in any source tarball<br />
* benchmark<br />
** the performance tool front-end, available in any binary distribution or source distribution after compilation<br />
<br />
=Requirements=<br />
<br />
* Ability to run shell scripts<br />
* Ability to navigate a UNIX/Linux command-prompt<br />
* Familiarity with web development technologies<br />
<br />
=Past Efforts=<br />
* [http://brlcad.org/wiki/User:Ankeshanand/GSoC14/logs GSoC14]<br />
* [http://brlcad.org/wiki/User:Stattrav/GSoC2012_log GSoC12]</div>Level zerohttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas&diff=7890Google Summer of Code/Project Ideas2015-03-04T18:28:25Z<p>Level zero: /* add daga's name for projects */</p>
<hr />
<div>If you want to work on '''computer-aided design (CAD), geometry, or graphics''', you've come to the right place! Help us improve open source CAD.<br />
<br />
Well prepared proposals have an ''outstanding'' chance here. We consider proposals for all skill levels ranging from simple to crazy hard and everything in between. [https://lists.sourceforge.net/lists/listinfo/brlcad-devel Introduce yourself], and we'll help you plan one right for you.<br />
<br />
We plan on selecting 6-12 students to work on web projects, C/C++ projects, and more. This year, BRL-CAD is coordinating with three other communities that will get 1-2 students each to help bridge our work and encourage collaboration. Projects that help exchange data or share code are desired!<br />
<br />
{|align="center" width="62%"<br />
|align="center" |[http://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas#BRL-CAD_Projects http://brlcad.org/images/logo/BRL-CAD_gear_logo_w_name_256.png]<br />
|colspan=2 align="center" |Under development for 30+ years, it's big, it's complicated, it's powerful. BRL-CAD will consider just about any project that relates to computer graphics or existing infrastructure.<br />
|}<br />
{|align="center" width="95%"<br />
|align="center" width="25%"|[http://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas#OpenSCAD_Projects http://www.openscad.org/assets/img/logo.png]<br />
|align="center" width="25%"|[http://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas#LibreCAD_Projects http://librecad.org/files/live/sites/lc/files/WebImages/LogoLibrecad_logo.png]<br />
|align="center" width="25%"|[http://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas#STEPcode_Projects http://stepcode.org/STEPcode_logo_sm.png]<br />
|align="center" width="25%"|[http://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas#LinuxCNC_Projects http://wiki.linuxcnc.org/chips.gif]<br />
|-<br />
|align="center"|'''OpenSCAD''': rich syntax, programmable geometry. Lots of possibilities to make it interoperate with BRL-CAD and LibreCAD.<br />
|align="center"|'''LibreCAD''': specializes in 2D CAD modeling, drafting, drawings. Help build a bridge to BRL-CAD or add STEP support.<br />
|align="center"|'''STEPcode''': file format on steroids, STEP is a complex standard for geometry used by nearly every pro CAD system.<br />
|align="center"|'''LinuxCNC''': software for computer control of machine tools such as milling machines and lathes, 3d printers, robot arms, and more.<br />
|}<br />
<br />
'''Unless there isn't a quality proposal, we intend to select at least one student for each of BRL-CAD's main categories as well as at least one student each for OpenSCAD, LibreCAD, and STEPcode.'''<br />
<br />
Remember that project descriptions are just ''initial ideas''. You must expand with [[Summer_of_Code/Application_Guidelines|considerably more detail]]. Change the goals to fit your experience and interests. See our '''[[Summer_of_Code/Checklist|checklist]]''' to get started.<br />
<br />
'''Project titles link to a page with more details.'''<br />
<br />
= BRL-CAD Projects =<br />
<br />
== Web Development ==<br />
<br />
{| bgcolor=#fff<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|width=62%|'''[[Benchmark Performance Database]]:''' BRL-CAD's Benchmark has been used for two decades to compare performance across configurations. Build a database website. <br />
|Depends (likely PHP or Python)<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Synchronize Wiki with Docbook]]:''' We use Docbook for most of our user documentation but find editing a wiki page much easier to use. Set up a system so the two are always in sync.<br />
|Depends (likely PHP or Python)<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|-<br />
|width=62%|'''[[Online Geometry Viewer Interface]]:''' Continuation of existing work, improve our interface for viewing geometry online. Focus on the front-end usability.<br />
|Depends (likely PHP or Python)<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Online Geometry Viewer Back-end]]:''' Continuation of existing work, improve our interface for viewing geometry online. Focus on the back-end infrastructure.<br />
|Depends (likely PHP or Python)<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Mediawiki 3D Geometry Extension]]:''' Write an extension for Mediawiki that will visualize our .g files. Maybe leverage LLVM C->Javascript translation. <br />
|Depends (likely PHP or Python)<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Materials Database]]:''' Create a Materials Database web site for collecting, managing, and providing programmatic interfaces to material properties.<br />
|Depends (likely PHP or Python)<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Yapp]]<br />
|}<br />
<br />
== Geometry ==<br />
<br />
{| bgcolor=#fff width=100%<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|align=left width=62%|'''[[NURBS Editing Support]]:''' BRL-CAD doesn't currently have support for editing NURBS primitives. Fix that.<br />
|align=center|C/Tcl<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|-<br />
|width=62%|'''[[Overlap tool]]:''' Resolving geometric interferences (aka overlaps) is a common geometry editing activity. Design an awesome GUI for resolving conflicts.<br />
|align=center|Tcl<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Morrison, Greenwald]]<br />
|-<br />
|align=left width=62%|'''[[Vector Drawings from NURBS]]:''' Huge impact here if you can update one or more of our raytracers to provide vector output instead of raster. Perhaps render directly to PDF or SVG.<br />
|align=center|C and/or C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Rossberg]]<br />
|-<br />
|width=62%|'''[[NMG Editing]]:''' Our structured polygonal mesh geometry (N-Manifold Geometry = NMG) is a common export format, but our NMG edit support is non-existent. We need something.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Rossberg]]<br />
|-<br />
|width=62%|'''[[Visualizing Constructive Solid Geometry (CSG)]]:''' CSG forms a directed acyclic graph. Tree view widgets show a simple hierarchical representation, but we need something better.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|align=left width=62%|'''[[Plate Mode NURBS raytracing]]:''' Imported NURBS geometry often does NOT enclose space (i.e., not solid), so add support for specifying an implicit thickness.<br />
|align=center|C/C++<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[STEP exporter]]:''' We have an importer, we need a comprehensive exporter with support for implicit CSG, NURBS, or polygonal mesh geometry.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Morrison]]<br />
|-<br />
|width=62%|'''[[STEP importer improvements]]:''' We have an importer, but it's preliminary. Add support for importing hierarchy information, polygonal geometry, and implicit geometry.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|- <br />
|width=62%|'''[[STEP AP 242 Parser]]:''' We already parse a subset of AP203, but the new kid on the block is AP242. Make AP242 work with BRL-CAD's step-g importer. <br />
|align=center|C++<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie, Yapp]]<br />
|-<br />
|width=62%|'''[[Convert BoT to Pipe]]:''' Command line interface to convert facetted fluid/electrical line geometry into BRL-CAD native pipe solids.<br />
|align=center|C/C++/Tcl<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[IGES import improvements]]:''' We have extensive support for the International Geometry Exchange Standard (IGES) with our g-iges and iges-g converters, but they need updating.<br />
|align=center|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Geometry Conversion Library]]:''' Probably our biggest open source asset is our extensive collection of importers and exporters. Turn them all into a universal conversion library. <br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison, Rossberg]]<br />
|-<br />
|width=62%|'''[[Voxelize]] command:''' Convert geometry into voxel data sets by shooting a grid of rays. The finite element analysis and volumetric rendering folks will love you.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison, Rossberg]]<br />
|-<br />
|width=62%|'''[[COLLADA Importer]]:''' Create an importer for the COLLADA file format.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[X3D Importer]]:''' Create an importer for the X3D file format.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[OpenSCAD Importer]]:''' Create an importer for OpenSCAD's format.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[OpenSCAD Exporter]]:''' Create an exporter for OpenSCAD's format.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Python Geometry]]:''' Wrap BRL-CAD's primitives in Python, make it easier to script geometry creation. <br />
|align=center|Python<br />
|align=center|Easy<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Perl Geometry]]:''' Wrap BRL-CAD's primitives in Perl, make it easier to script geometry creation. <br />
|align=center|Perl<br />
|align=center|Easy<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Browder]]<br />
|}<br />
<br />
== Performance & Quality ==<br />
<br />
{| bgcolor=#fff<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|align=left width=62%|'''[[OpenCL GPGPU Raytracing]]:''' We have about two dozen primitives that need to have a ray-object intersection function converted from C to OpenCL.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Rossberg]]<br />
|-<br />
|align=left width=62%|'''[[Coherent Raytracing]]:''' Our current raytrace pipeline dispatches and processes one ray at a time. Send bundles and convert the pipeline into phases. <br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Rossberg]]<br />
|-<br />
|align=left width=62%|'''[[NURBS Booleans]]:''' We have NURBS surface-surface intersections working. Now we're using them to create evaluated forms of our CSG geometry. Make it more robust and faster.<br />
|align=center|C/C++<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Rossberg]]<br />
|-<br />
|align=left width=62%|'''[[NURBS Optimization and Cleanup]]:''' We have a fantastic implementation of NURBS evaluation but haven't gone back to clean up or speed it up. Make it pretty and fast.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Morrison]]<br />
|-<br />
|width=62%|'''[[Fix Bugs]]:''' We take pride in our breadth of functionality and time-tested stability. We still have bugs. Identify some and fix them!<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Browder]]<br />
|-<br />
|width=62%|'''[[NMG Raytracing Performance Improvement]]:''' BRL-CAD's structured mesh geometry (N-Manifold Geometry = NMG) needs some time in a profiler. Malloc during raytracing is bad.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Greenwald]]<br />
|-<br />
|width=62%|'''[[Mesh library cleanup]]:''' BRL-CAD has an extensive n-manifold polygonal mesh library that needs some refactoring, testing, and optimization rework.<br />
|align=center|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Rossberg]]<br />
|-<br />
|width=62%|'''[[Space Partitioning for Tessellation]]:''' Technically an optimization task, make our geometry converters run an order of magnitude faster by using spatial partitioning during tessellation.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Yapp, Morrison]]<br />
|-<br />
|width=62%|'''[[Code Reduction]]:''' BRL-CAD is more than 1M lines of code. Approximately 10% of that is duplication. Help reduce that percentage.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison]]<br />
|-<br />
|width=62%|'''[[Header Restructuring]]:''' BRL-CAD has about two dozen libraries with a single header declaring the entire public API. Break up those monster headers into modular sub-headers.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison]]<br />
|}<br />
<br />
== Infrastructure ==<br />
<br />
{| bgcolor=#fff<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|width=62%|'''[[New Cross-Platform 3D Display Manager]]:''' BRL-CAD uses '''''display managers''''' for visualizing 3D geometry in a window. We want one that uses a cross-platform toolkit such as Qt + OGRE.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[New Cross-Platform 2D Framebuffer]]:''' BRL-CAD uses '''''framebuffers''''' to display 2D imagery. The merits of having a single interface for most platforms is self-evident.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Yapp]]<br />
|-<br />
|width=62%|'''[[Advanced Sketch Primitive Editor]]:''' BRL-CAD has a 2D sketch primitive, but our handling of editing sketches doesn't incorporate parametric constraints. There are potentially applicable codes in the open source community we can leverage for this, or we can roll our own solution.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|-<br />
|width=62%|'''[[Geometric Constraint Solver]]:''' Our LIBPC parametric constraint library is the work-in-progress foundation of being able to validate and describe geometry relationships.<br />
|align=center|C/C++<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[MGED to Archer Command Migration]]:''' Our next-generation editor (Archer) needs to have the same (700+) commands that are in MGED. Help make our next CAD interface awesome.<br />
|align=center|C and Tcl<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|-<br />
|width=62%|'''[[General Tree Walker]]:''' We have a half dozen or more functions that will traverse a geometry hierarchy in different ways. There only needs to be one.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Yapp, Morrison]]<br />
|-<br />
|width=62%|'''[[Rework of libbu/libbn to not require Tcl]]:''' Tcl's '''''C API''''' is used throughout BRL-CAD providing great abstractions, but we want our basic utility and numeric libraries (LIBBU & LIBBN) to stand alone.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Yapp, Greenwald]]<br />
|-<br />
|width=62%|'''[[Consolidate image processing]]:''' We have 100+ image processing tools that independently read and write file data. Needs much reuse love.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Daga]]<br />
|-<br />
|width=62%|'''[[GED Transactions]]:''' Migrating functionality from our MGED geometry editor into our LIBGED library provided excellent code reuse, but now we need transactions so that actions can be undone.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Daga]]<br />
|-<br />
|width=62%|'''[[Add exec option to search]]:''' Our LIBGED library provides a ''search'' command very similar to the UNIX ''find'' command for scanning through geometry. Implement the -exec option.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Daga]]<br />
|-<br />
|width=62%|'''[[Geometry Selection Functionality]]:''' Implement a new selection command that lets you temporarily group objects based on spatial, attribute, or geometric properties.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Astronomical units]]:''' We already go "big", but accurately modeling at a galactic scale redefines that notion...<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Greenwald, Daga]]<br />
|-<br />
|width=62%|'''[[Object-oriented interfaces|Object-oriented C++ Geometry API]]:''' Extend our C++ library which provides a simple interface to BRL-CAD's core functionality. Kickstart start a new geometry kernel.<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Rossberg]]<br />
|-<br />
|width=62%|'''[[Point Clouds]]:''' BRL-CAD has a basic point cloud primitive. Beef it up, make it faster, maybe integrate with the Point Cloud Library (PCL) for evaluation.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Browder]]<br />
|-<br />
|width=62%|'''[[Annotations]]:''' Implement support for 2D annotations, labels that can be added to geometry.<br />
|align=center|Perl<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Browder]]<br />
|-<br />
|width=62%|'''[[Python Bindings]]:''' With or without SWIG, wrap BRL-CAD's command library API so you can issue our creation and editing commands from Python.<br />
|align=center|Python<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Perl Bindings]]:''' With SWIG, wrap BRL-CAD's ray-tracing library API so you can issue calls to librt ray-tracing functions from Perl.<br />
|align=center|Perl<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Browder, Daga]]<br />
|}<br />
<br />
== Rendering & Scientific Analysis ==<br />
<br />
{| bgcolor=#fff<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|width=62%|'''[[Shader Enhancements]]:''' We have a functioning custom shader system in BRL-CAD, but there are now folks that specialize and there's lot of room for improvements.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Greenwald]]<br />
|-<br />
|width=62%|'''[[Material and Shader Objects]]:''' This one is a biggie but easy. Implement new object entities for describing shaders and material properties, use them during ray tracing.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[GUI Integration of Analysis Tools]]:''' There are a ''lot'' of visualization tools in BRL-CAD, but most aren't integrated with the GUI. Visualizing directly within the GUI would improve usability.<br />
|align=center|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Rossberg]]<br />
|-<br />
|width=62%|'''[[Generalized abstracted spacial partitioning capability]]:''' Need more be said? If you're familiar with BSPs, KD trees, and grid structures, then this one is for you.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison]]<br />
|-<br />
|width=62%|'''[[High Dynamic Range Support]]:''' We don't have displays supporting this yet, but that's never stopped us before. Implement support for images with more than 8-bits per channel.<br />
|align=center|C and/or C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Yapp]]<br />
|-<br />
|width=62%|'''[[Analysis Library]]:''' There are various tools in BRL-CAD for calculating weights, moments of inertia, and more. They're stand-alone applications. Turn them into a library.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Morrison]]<br />
|-<br />
|width=62%|'''[[Celestial mechanics particle system]]:''' Simulate solar systems and galaxies.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald]]<br />
|-<br />
|width=62%|'''[[Non-vacuum gravity simulator]]:''' Simulate falling to earth.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison, Yapp]]<br />
|-<br />
|width=62%|'''[[Polarization]]:''' We already do multispectral ray tracing, but don't simulate polarization effects. Implement ray splitting and filtering.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Rossberg]]<br />
|-<br />
|width=62%|'''[[Density functions]]:''' Accurately represent everything from atmosphere to bone. Implement support for parametric density functions for homogenous materials.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Rossberg, Morrison]]<br />
|-<br />
|width=62%|'''[[Bending light]]:''' Think gravity wells and satellite cameras.<br />
|align=center|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Appleseed renderer integration]]:''' Appleseed is rendering infrastructure used by the film industry to make pretty pictures. Make it shoot rays at our native geometry with our ray trace library.<br />
|align=center|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|}<br />
<br />
== <An Idea of Your Own> ==<br />
<br />
Do you have an idea of your own? Maybe you need [http://brlcad.org/~sean/ideas.html more ideas] to inspire you? We're very open to areas of academic research, industry applications, and ideas that get you hooked on open source CAD development.<br />
<br />
Requirements:<br />
<br />
* Passion for the task being suggested<br />
<br />
<br />
= OpenSCAD Projects =<br />
<br />
[http://openscad.org OpenSCAD] is a parametric solid 3D modeling tool which uses a Domain Specific Language to specify designs as plain text. It is specifically designed with 3D printing in mind.<br />
<br />
{| bgcolor=#fff width=100%<br />
!<br />
!align=center|Languages/Tools<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Project%3A-Form-based-script-parameterization Form-based Customization]:''' Declaration and auto-generation of GUI for driving parametrization.<br />
|align=center|C++<br />
|align=center|EASY-MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Torsten]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Project%3A-Improve-DXF-import-and-export Improve DXF Import and Export]:''' Look into using an external library for DXF import (and export?).<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Ideas-for-Development-Tasks#openscad-standard-library OpenSCAD Standard Library]:''' Create a standard user-space OpenSCAD library.<br />
|align=center|OpenSCAD<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Project%3A-Improve-OpenGL-rendering OpenGL framework]:''' Rewrite the OpenGL rendering code to use a rendering framework. Focus on compatibility with OpenGL ES2 and rendering performance.<br />
|align=center|C++ OpenGL<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Ideas-for-Development-Tasks#persistant-caching Persistent Caching]:''' Implement a disk-based version of the internal memory caches<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Project%3A-Multi-threaded-geometry-rendering Multi-threaded Geometry Evaluation]:''' Implement multi-threaded evaluation of geometry.<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Project%3A-Survey-of-CSG-algorithms Survey of CSG algorithms]:''' Review existing research, evaluate and prototype algorithms.<br />
|align=center|C++<br />
|align=center|MEDIUM-HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Ideas-for-Development-Tasks#issue-handling Issue Handling]:''' Day-to day issue and community management, fix incoming and existin issues. Good place to get started.<br />
|align=center|C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Ideas-for-Development-Tasks#test-framework-improvements Test Framework Improvements]:''' Improve tests and test framework. Good place to get started.<br />
|align=center|C++<br />
|align=center|EASY-MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Ideas-for-Development-Tasks#larger-tasks-for-particularly-experienced-people Larger tasks for particularly experienced people]:''' Various harder tasks which are not fully specified and requires significant effort to design and implement.<br />
|align=center|C++<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|}<br />
<br />
The OpenSCAD team is also open to new ideas. Please [http://www.openscad.org/community.html get in touch] to discuss your ideas and convince a mentor to back it.<br />
<br />
= LibreCAD Projects =<br />
<br />
LibreCAD is a free Open Source CAD application for Windows, Apple and Linux. Support and documentation is free from our large, dedicated community of users, contributors and developers.<br />
Please refer to [http://wiki.librecad.org/index.php/GSoC_2015#LibreCAD_Projects_Ideas LibreCAD GSoC 2015 ideas] for more detailed description.<br />
<br />
<br />
{| bgcolor=#fff<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[LibreCAD 3 UI Phase 1]]:''' Add GUI support for drawing and editing actions to start exposing it to end users.<br />
|align=center|C++,Math<br />
|align=center|MEDIUM TO HIGH<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >, R. van Twisk <LibreCAD@rvt.dds.nl>]]<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[Improve Spline/Bézier Support]]''' <br />
|align=center|C++,Math<br />
|align=center|MEDIUM TO HIGH<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >, R. van Twisk <LibreCAD@rvt.dds.nl>]]<br />
|-<br />
<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[Improve contour topology support]]:''' Hatching and area enclosed in a contour<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[Improve precision and robustness of equation solvers]]''' <br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[Conic curve support]]''' <br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
<br />
|- bgcolor=#fafafa<br />
|width=62%|'''[[SmartSnap]]:''' Adding and improve snap features for drawing<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[LibreCAD on mobile]]:''' Qt5 support for mobile (Android and iOS, see [http://doc.qt.digia.com/qtcreator-2.1/creator-mobile-example.html Qt mobile]).<br />
|align=center|Qt Android iOS<br />
|align=center|MEDIUM<br />
|align=center|[[dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[Support for multiple units upon data entry]]''' <br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|R. van Twisk <gsoc_2014@rvt.dds.nl>,dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
|}<br />
<br />
= STEPcode Projects =<br />
<br />
{| bgcolor=#fff width=100%<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|width=62%|'''[[STEP Coverage Test]]:''' Write a program that links against STEPcode and generates a STEP output instantiating every entity for a given schema. Goal is a comprehensive program and data file for testing STEP import/export.<br />
|ANY (C/C++, Python, Java, Perl, ...)<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|- <br />
|width=62%|'''[[STEP Incremental Loading]]:''' Basically take a work-in-progress to the next level. Modify the STEP parser to only read what it needs when it needs it, test, clean up, profile, and optimize.<br />
|align=center|C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|- <br />
|width=62%|'''[[STEP Minimal Examples]]:''' Create minimal examples for various schemas - such as AP214 or AP242 - in the style of [http://github.com/stepcode/stepcode/blob/master/example/ap203min/ap203min.cpp ap203min]<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|- <br />
|width=62%|'''[[STEP Multiple Protocol Parsing]]:''' Currently creates a parser that works with a specific application protocol (e.g., AP203, AP214). Make it work with multiple simultaneously. <br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|- <br />
|width=62%|'''[[STEP Source Code Documentation]]:''' We already use doxygen, but could do much better. Improve code documentation and utilize additional doxygen features such as topic pages. Add a 'make doxygen' target to invoke doxygen.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|-<br />
|width=62%|'''[[STEP EXPRESS Documentation]]:''' Write 'exp2html', similar to exp2py or exp2cxx (python and C++ generators) but outputs graphs and hyperlinked documentation with JavaScript search. Output will include EXPRESS comments (this requires modifying the parser).<br />
|align=center|C/C++, JavaScript<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|-<br />
|width=62%|'''[[STEP Viewer]]:''' STEP is a common CAD file format supported by just about every major CAD system. Given we have an importer and an interface for displaying geometry, a stand-alone STEP file viewer has some great potential.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|-<br />
|width=62%|'''[[STEP Code Refactoring]]:''' Split large files and functions, add unit tests, move contents of LISTdo loops into separate functions.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|-<br />
|width=62%|'''[[STEP Thread Safety and Performance]]:''' Modify the libraries to improve thread safety, increase performance using hotspot analysis<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|}<br />
<br />
= LinuxCNC Projects =<br />
<br />
[http://linuxcnc.org LinuxCNC] is software for computer control of machine tools such as milling machines and lathes, 3d printers, robot arms, and more.<br />
<br />
{| bgcolor=#fff width=100%<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|width=62%|'''StepConf improvements ([https://sourceforge.net/p/emc/feature-requests/60/], [https://sourceforge.net/p/emc/feature-requests/58/], [https://sourceforge.net/p/emc/feature-requests/57/]):''' [http://linuxcnc.org/docs/html/config/stepconf.html StepConf] is a gui that helps people configure LinuxCNC for many kinds of common machines. It has some missing features that should be easy to add.<br />
|Python<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|SebKuzminsky]]<br />
|- <br />
|width=62%|'''Add flow control to halstreamer ([https://sourceforge.net/p/emc/feature-requests/125/]):''' The userspace program [http://linuxcnc.org/docs/html/man/man1/halstreamer.1.html halstreamer] and its realtime companion [http://linuxcnc.org/docs/html/man/man9/streamer.9.html streamer] make up a utility for moving arbitrary data into the realtime core of LinuxCNC. It currently streams data at maximum rate, and it would be good to add flow control.<br />
|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|SebKuzminsky]]<br />
|-<br />
|width=62%|'''New realtime kernels ([http://thread.gmane.org/gmane.linux.distributions.emc.user/56252]):''' LinuxCNC supports two realtime kernels: [https://www.rtai.org/ RTAI] and [https://rt.wiki.kernel.org/ Preempt-RT]. We target a variety of Debian-based distributions, and we provide debian packages of the realtime kernels we need. The goal of this project is to expand [https://github.com/SebKuzminsky/linux-rtai-build existing packaging infrastructure] to build newer versions of RTAI and Preempt-RT, for [https://www.debian.org/releases/jessie/ Debian Jessie] and [http://releases.ubuntu.com/14.04/ Ubuntu Trusty].<br />
|Shell, make, debian packaging tools<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|SebKuzminsky]]<br />
|-<br />
|width=62%|'''Add peck to rigid tapping ([https://sourceforge.net/p/emc/feature-requests/78/]):''' Given adequate feedback from the machine, LinuxCNC supports [https://www.youtube.com/watch?v=Ja2LbAAJmls rigid tapping] via [http://linuxcnc.org/docs/html/gcode/gcode.html#sec:G33_1-Rigid-Tapping G33.1] G-code. Some kinds of taps and materials benefit from "peck tapping", where the tap is backed out from the work piece periodically. Peck tapping currently has to be done "by hand", by programming one G33.1 move for each peck. This task is to add support for a "peck depth" parameter to the G33.1 command, analogous to peck drilling in [http://linuxcnc.org/docs/html/gcode/gcode.html#sec:G83-Drilling-Peck G83].<br />
|C, C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|SebKuzminsky]]<br />
|}<br />
<br />
<br />
= Mentors =<br />
<br />
BRL-CAD operates under group mentorship. That means you can contact anyone, not just the person assigned to you, for assistance. The mailing list and IRC channel are the preferred communication methods.<br />
<br />
* Christopher Sean Morrison<br />
** brlcad on irc.freenode.net<br />
** Org admin, BRL-CAD open source project lead<br />
<br />
* Erik Greenwald<br />
** ``Erik on irc.freenode.net<br />
** Org admin, BRL-CAD core dev<br />
<br />
* Cliff Yapp<br />
** starseeker on irc.freenode.net<br />
** BRL-CAD Mentor, core dev<br />
<br />
* Daniel Rossberg<br />
** d_rossberg on irc.freenode.net<br />
** BRL-CAD Mentor, core dev, math expert<br />
<br />
* H.S. Rai<br />
** hsrai on irc.freenode.net<br />
** BRL-CAD Mentor, math expert<br />
<br />
* Tom Browder<br />
** BRL-CAD Mentor, analysis expert<br />
<br />
* Bryan Bishop<br />
** BRL-CAD Mentor, python guru<br />
<br />
* Isaac Kamga<br />
** Izakey on irc.freenode.net<br />
** BRL-CAD Mentor, C/C++ Programmer<br />
<br />
* Mohit Daga<br />
** zero_level irc.freenode.net<br />
** BRL-CAD Mentor, Computer Science Engineer<br />
<br />
* Mark Pictor<br />
** mpictor on irc.freenode.net<br />
** STEPcode Mentor<br />
<br />
* Charlie Stirk<br />
** cstirk<br />
** STEPcode Mentor<br />
<br />
* Marius Kintel<br />
** kintel on irc.freenode.net<br />
** OpenSCAD Mentor<br />
<br />
* Torsten Paul<br />
** teepee on irc.freenode.net<br />
** OpenSCAD Mentor<br />
<br />
* Dongxu Li<br />
** dli on irc.freenode.net<br />
** LibreCAD Mentor<br />
<br />
* Jose Rallaz<br />
** rallazz on irc.freenode.net<br />
** LibreCAD Mentor<br />
<br />
* Ries van Twisk<br />
** ries on irc.freenode.net<br />
** LibreCAD Mentor<br />
<br />
* Jasleen Kaur<br />
** jasleen on irc.freenode.net<br />
** LibreCAD Mentor<br />
<br />
* Armin Stebich<br />
** LordOfBikes on irc.freenode.net<br />
** LibreCAD Mentor<br />
<br />
* Sebastian Kuzminsky<br />
** seb_kuzminsky on irc.freenode.net<br />
** LinuxCNC Mentor</div>Level zerohttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas&diff=7889Google Summer of Code/Project Ideas2015-03-04T18:22:25Z<p>Level zero: /* Add mohit's name for image processing project*/</p>
<hr />
<div>If you want to work on '''computer-aided design (CAD), geometry, or graphics''', you've come to the right place! Help us improve open source CAD.<br />
<br />
Well prepared proposals have an ''outstanding'' chance here. We consider proposals for all skill levels ranging from simple to crazy hard and everything in between. [https://lists.sourceforge.net/lists/listinfo/brlcad-devel Introduce yourself], and we'll help you plan one right for you.<br />
<br />
We plan on selecting 6-12 students to work on web projects, C/C++ projects, and more. This year, BRL-CAD is coordinating with three other communities that will get 1-2 students each to help bridge our work and encourage collaboration. Projects that help exchange data or share code are desired!<br />
<br />
{|align="center" width="62%"<br />
|align="center" |[http://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas#BRL-CAD_Projects http://brlcad.org/images/logo/BRL-CAD_gear_logo_w_name_256.png]<br />
|colspan=2 align="center" |Under development for 30+ years, it's big, it's complicated, it's powerful. BRL-CAD will consider just about any project that relates to computer graphics or existing infrastructure.<br />
|}<br />
{|align="center" width="95%"<br />
|align="center" width="25%"|[http://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas#OpenSCAD_Projects http://www.openscad.org/assets/img/logo.png]<br />
|align="center" width="25%"|[http://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas#LibreCAD_Projects http://librecad.org/files/live/sites/lc/files/WebImages/LogoLibrecad_logo.png]<br />
|align="center" width="25%"|[http://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas#STEPcode_Projects http://stepcode.org/STEPcode_logo_sm.png]<br />
|align="center" width="25%"|[http://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas#LinuxCNC_Projects http://wiki.linuxcnc.org/chips.gif]<br />
|-<br />
|align="center"|'''OpenSCAD''': rich syntax, programmable geometry. Lots of possibilities to make it interoperate with BRL-CAD and LibreCAD.<br />
|align="center"|'''LibreCAD''': specializes in 2D CAD modeling, drafting, drawings. Help build a bridge to BRL-CAD or add STEP support.<br />
|align="center"|'''STEPcode''': file format on steroids, STEP is a complex standard for geometry used by nearly every pro CAD system.<br />
|align="center"|'''LinuxCNC''': software for computer control of machine tools such as milling machines and lathes, 3d printers, robot arms, and more.<br />
|}<br />
<br />
'''Unless there isn't a quality proposal, we intend to select at least one student for each of BRL-CAD's main categories as well as at least one student each for OpenSCAD, LibreCAD, and STEPcode.'''<br />
<br />
Remember that project descriptions are just ''initial ideas''. You must expand with [[Summer_of_Code/Application_Guidelines|considerably more detail]]. Change the goals to fit your experience and interests. See our '''[[Summer_of_Code/Checklist|checklist]]''' to get started.<br />
<br />
'''Project titles link to a page with more details.'''<br />
<br />
= BRL-CAD Projects =<br />
<br />
== Web Development ==<br />
<br />
{| bgcolor=#fff<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|width=62%|'''[[Benchmark Performance Database]]:''' BRL-CAD's Benchmark has been used for two decades to compare performance across configurations. Build a database website. <br />
|Depends (likely PHP or Python)<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Synchronize Wiki with Docbook]]:''' We use Docbook for most of our user documentation but find editing a wiki page much easier to use. Set up a system so the two are always in sync.<br />
|Depends (likely PHP or Python)<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|-<br />
|width=62%|'''[[Online Geometry Viewer Interface]]:''' Continuation of existing work, improve our interface for viewing geometry online. Focus on the front-end usability.<br />
|Depends (likely PHP or Python)<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Online Geometry Viewer Back-end]]:''' Continuation of existing work, improve our interface for viewing geometry online. Focus on the back-end infrastructure.<br />
|Depends (likely PHP or Python)<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Mediawiki 3D Geometry Extension]]:''' Write an extension for Mediawiki that will visualize our .g files. Maybe leverage LLVM C->Javascript translation. <br />
|Depends (likely PHP or Python)<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Materials Database]]:''' Create a Materials Database web site for collecting, managing, and providing programmatic interfaces to material properties.<br />
|Depends (likely PHP or Python)<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Yapp]]<br />
|}<br />
<br />
== Geometry ==<br />
<br />
{| bgcolor=#fff width=100%<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|align=left width=62%|'''[[NURBS Editing Support]]:''' BRL-CAD doesn't currently have support for editing NURBS primitives. Fix that.<br />
|align=center|C/Tcl<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|-<br />
|width=62%|'''[[Overlap tool]]:''' Resolving geometric interferences (aka overlaps) is a common geometry editing activity. Design an awesome GUI for resolving conflicts.<br />
|align=center|Tcl<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Morrison, Greenwald]]<br />
|-<br />
|align=left width=62%|'''[[Vector Drawings from NURBS]]:''' Huge impact here if you can update one or more of our raytracers to provide vector output instead of raster. Perhaps render directly to PDF or SVG.<br />
|align=center|C and/or C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Rossberg]]<br />
|-<br />
|width=62%|'''[[NMG Editing]]:''' Our structured polygonal mesh geometry (N-Manifold Geometry = NMG) is a common export format, but our NMG edit support is non-existent. We need something.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Rossberg]]<br />
|-<br />
|width=62%|'''[[Visualizing Constructive Solid Geometry (CSG)]]:''' CSG forms a directed acyclic graph. Tree view widgets show a simple hierarchical representation, but we need something better.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|align=left width=62%|'''[[Plate Mode NURBS raytracing]]:''' Imported NURBS geometry often does NOT enclose space (i.e., not solid), so add support for specifying an implicit thickness.<br />
|align=center|C/C++<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[STEP exporter]]:''' We have an importer, we need a comprehensive exporter with support for implicit CSG, NURBS, or polygonal mesh geometry.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Morrison]]<br />
|-<br />
|width=62%|'''[[STEP importer improvements]]:''' We have an importer, but it's preliminary. Add support for importing hierarchy information, polygonal geometry, and implicit geometry.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|- <br />
|width=62%|'''[[STEP AP 242 Parser]]:''' We already parse a subset of AP203, but the new kid on the block is AP242. Make AP242 work with BRL-CAD's step-g importer. <br />
|align=center|C++<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie, Yapp]]<br />
|-<br />
|width=62%|'''[[Convert BoT to Pipe]]:''' Command line interface to convert facetted fluid/electrical line geometry into BRL-CAD native pipe solids.<br />
|align=center|C/C++/Tcl<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[IGES import improvements]]:''' We have extensive support for the International Geometry Exchange Standard (IGES) with our g-iges and iges-g converters, but they need updating.<br />
|align=center|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Geometry Conversion Library]]:''' Probably our biggest open source asset is our extensive collection of importers and exporters. Turn them all into a universal conversion library. <br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison, Rossberg]]<br />
|-<br />
|width=62%|'''[[Voxelize]] command:''' Convert geometry into voxel data sets by shooting a grid of rays. The finite element analysis and volumetric rendering folks will love you.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison, Rossberg]]<br />
|-<br />
|width=62%|'''[[COLLADA Importer]]:''' Create an importer for the COLLADA file format.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[X3D Importer]]:''' Create an importer for the X3D file format.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[OpenSCAD Importer]]:''' Create an importer for OpenSCAD's format.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[OpenSCAD Exporter]]:''' Create an exporter for OpenSCAD's format.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Python Geometry]]:''' Wrap BRL-CAD's primitives in Python, make it easier to script geometry creation. <br />
|align=center|Python<br />
|align=center|Easy<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Perl Geometry]]:''' Wrap BRL-CAD's primitives in Perl, make it easier to script geometry creation. <br />
|align=center|Perl<br />
|align=center|Easy<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Browder]]<br />
|}<br />
<br />
== Performance & Quality ==<br />
<br />
{| bgcolor=#fff<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|align=left width=62%|'''[[OpenCL GPGPU Raytracing]]:''' We have about two dozen primitives that need to have a ray-object intersection function converted from C to OpenCL.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Rossberg]]<br />
|-<br />
|align=left width=62%|'''[[Coherent Raytracing]]:''' Our current raytrace pipeline dispatches and processes one ray at a time. Send bundles and convert the pipeline into phases. <br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Rossberg]]<br />
|-<br />
|align=left width=62%|'''[[NURBS Booleans]]:''' We have NURBS surface-surface intersections working. Now we're using them to create evaluated forms of our CSG geometry. Make it more robust and faster.<br />
|align=center|C/C++<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Rossberg]]<br />
|-<br />
|align=left width=62%|'''[[NURBS Optimization and Cleanup]]:''' We have a fantastic implementation of NURBS evaluation but haven't gone back to clean up or speed it up. Make it pretty and fast.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Morrison]]<br />
|-<br />
|width=62%|'''[[Fix Bugs]]:''' We take pride in our breadth of functionality and time-tested stability. We still have bugs. Identify some and fix them!<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Browder]]<br />
|-<br />
|width=62%|'''[[NMG Raytracing Performance Improvement]]:''' BRL-CAD's structured mesh geometry (N-Manifold Geometry = NMG) needs some time in a profiler. Malloc during raytracing is bad.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Greenwald]]<br />
|-<br />
|width=62%|'''[[Mesh library cleanup]]:''' BRL-CAD has an extensive n-manifold polygonal mesh library that needs some refactoring, testing, and optimization rework.<br />
|align=center|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Rossberg]]<br />
|-<br />
|width=62%|'''[[Space Partitioning for Tessellation]]:''' Technically an optimization task, make our geometry converters run an order of magnitude faster by using spatial partitioning during tessellation.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Yapp, Morrison]]<br />
|-<br />
|width=62%|'''[[Code Reduction]]:''' BRL-CAD is more than 1M lines of code. Approximately 10% of that is duplication. Help reduce that percentage.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison]]<br />
|-<br />
|width=62%|'''[[Header Restructuring]]:''' BRL-CAD has about two dozen libraries with a single header declaring the entire public API. Break up those monster headers into modular sub-headers.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison]]<br />
|}<br />
<br />
== Infrastructure ==<br />
<br />
{| bgcolor=#fff<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|width=62%|'''[[New Cross-Platform 3D Display Manager]]:''' BRL-CAD uses '''''display managers''''' for visualizing 3D geometry in a window. We want one that uses a cross-platform toolkit such as Qt + OGRE.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[New Cross-Platform 2D Framebuffer]]:''' BRL-CAD uses '''''framebuffers''''' to display 2D imagery. The merits of having a single interface for most platforms is self-evident.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Yapp]]<br />
|-<br />
|width=62%|'''[[Advanced Sketch Primitive Editor]]:''' BRL-CAD has a 2D sketch primitive, but our handling of editing sketches doesn't incorporate parametric constraints. There are potentially applicable codes in the open source community we can leverage for this, or we can roll our own solution.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|-<br />
|width=62%|'''[[Geometric Constraint Solver]]:''' Our LIBPC parametric constraint library is the work-in-progress foundation of being able to validate and describe geometry relationships.<br />
|align=center|C/C++<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[MGED to Archer Command Migration]]:''' Our next-generation editor (Archer) needs to have the same (700+) commands that are in MGED. Help make our next CAD interface awesome.<br />
|align=center|C and Tcl<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|-<br />
|width=62%|'''[[General Tree Walker]]:''' We have a half dozen or more functions that will traverse a geometry hierarchy in different ways. There only needs to be one.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Yapp, Morrison]]<br />
|-<br />
|width=62%|'''[[Rework of libbu/libbn to not require Tcl]]:''' Tcl's '''''C API''''' is used throughout BRL-CAD providing great abstractions, but we want our basic utility and numeric libraries (LIBBU & LIBBN) to stand alone.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Yapp, Greenwald]]<br />
|-<br />
|width=62%|'''[[Consolidate image processing]]:''' We have 100+ image processing tools that independently read and write file data. Needs much reuse love.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald|Daga]]<br />
|-<br />
|width=62%|'''[[GED Transactions]]:''' Migrating functionality from our MGED geometry editor into our LIBGED library provided excellent code reuse, but now we need transactions so that actions can be undone.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Add exec option to search]]:''' Our LIBGED library provides a ''search'' command very similar to the UNIX ''find'' command for scanning through geometry. Implement the -exec option.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp]]<br />
|-<br />
|width=62%|'''[[Geometry Selection Functionality]]:''' Implement a new selection command that lets you temporarily group objects based on spatial, attribute, or geometric properties.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Astronomical units]]:''' We already go "big", but accurately modeling at a galactic scale redefines that notion...<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Greenwald]]<br />
|-<br />
|width=62%|'''[[Object-oriented interfaces|Object-oriented C++ Geometry API]]:''' Extend our C++ library which provides a simple interface to BRL-CAD's core functionality. Kickstart start a new geometry kernel.<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Rossberg]]<br />
|-<br />
|width=62%|'''[[Point Clouds]]:''' BRL-CAD has a basic point cloud primitive. Beef it up, make it faster, maybe integrate with the Point Cloud Library (PCL) for evaluation.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Browder]]<br />
|-<br />
|width=62%|'''[[Annotations]]:''' Implement support for 2D annotations, labels that can be added to geometry.<br />
|align=center|Perl<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Browder]]<br />
|-<br />
|width=62%|'''[[Python Bindings]]:''' With or without SWIG, wrap BRL-CAD's command library API so you can issue our creation and editing commands from Python.<br />
|align=center|Python<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Perl Bindings]]:''' With SWIG, wrap BRL-CAD's ray-tracing library API so you can issue calls to librt ray-tracing functions from Perl.<br />
|align=center|Perl<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Browder]]<br />
|}<br />
<br />
== Rendering & Scientific Analysis ==<br />
<br />
{| bgcolor=#fff<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|width=62%|'''[[Shader Enhancements]]:''' We have a functioning custom shader system in BRL-CAD, but there are now folks that specialize and there's lot of room for improvements.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Greenwald]]<br />
|-<br />
|width=62%|'''[[Material and Shader Objects]]:''' This one is a biggie but easy. Implement new object entities for describing shaders and material properties, use them during ray tracing.<br />
|align=center|C<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[GUI Integration of Analysis Tools]]:''' There are a ''lot'' of visualization tools in BRL-CAD, but most aren't integrated with the GUI. Visualizing directly within the GUI would improve usability.<br />
|align=center|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Rossberg]]<br />
|-<br />
|width=62%|'''[[Generalized abstracted spacial partitioning capability]]:''' Need more be said? If you're familiar with BSPs, KD trees, and grid structures, then this one is for you.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison]]<br />
|-<br />
|width=62%|'''[[High Dynamic Range Support]]:''' We don't have displays supporting this yet, but that's never stopped us before. Implement support for images with more than 8-bits per channel.<br />
|align=center|C and/or C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Yapp]]<br />
|-<br />
|width=62%|'''[[Analysis Library]]:''' There are various tools in BRL-CAD for calculating weights, moments of inertia, and more. They're stand-alone applications. Turn them into a library.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Yapp, Morrison]]<br />
|-<br />
|width=62%|'''[[Celestial mechanics particle system]]:''' Simulate solar systems and galaxies.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald]]<br />
|-<br />
|width=62%|'''[[Non-vacuum gravity simulator]]:''' Simulate falling to earth.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Greenwald, Morrison, Yapp]]<br />
|-<br />
|width=62%|'''[[Polarization]]:''' We already do multispectral ray tracing, but don't simulate polarization effects. Implement ray splitting and filtering.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison, Rossberg]]<br />
|-<br />
|width=62%|'''[[Density functions]]:''' Accurately represent everything from atmosphere to bone. Implement support for parametric density functions for homogenous materials.<br />
|align=center|C<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Rossberg, Morrison]]<br />
|-<br />
|width=62%|'''[[Bending light]]:''' Think gravity wells and satellite cameras.<br />
|align=center|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|-<br />
|width=62%|'''[[Appleseed renderer integration]]:''' Appleseed is rendering infrastructure used by the film industry to make pretty pictures. Make it shoot rays at our native geometry with our ray trace library.<br />
|align=center|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Morrison]]<br />
|}<br />
<br />
== <An Idea of Your Own> ==<br />
<br />
Do you have an idea of your own? Maybe you need [http://brlcad.org/~sean/ideas.html more ideas] to inspire you? We're very open to areas of academic research, industry applications, and ideas that get you hooked on open source CAD development.<br />
<br />
Requirements:<br />
<br />
* Passion for the task being suggested<br />
<br />
<br />
= OpenSCAD Projects =<br />
<br />
[http://openscad.org OpenSCAD] is a parametric solid 3D modeling tool which uses a Domain Specific Language to specify designs as plain text. It is specifically designed with 3D printing in mind.<br />
<br />
{| bgcolor=#fff width=100%<br />
!<br />
!align=center|Languages/Tools<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Project%3A-Form-based-script-parameterization Form-based Customization]:''' Declaration and auto-generation of GUI for driving parametrization.<br />
|align=center|C++<br />
|align=center|EASY-MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Torsten]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Project%3A-Improve-DXF-import-and-export Improve DXF Import and Export]:''' Look into using an external library for DXF import (and export?).<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Ideas-for-Development-Tasks#openscad-standard-library OpenSCAD Standard Library]:''' Create a standard user-space OpenSCAD library.<br />
|align=center|OpenSCAD<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Project%3A-Improve-OpenGL-rendering OpenGL framework]:''' Rewrite the OpenGL rendering code to use a rendering framework. Focus on compatibility with OpenGL ES2 and rendering performance.<br />
|align=center|C++ OpenGL<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Ideas-for-Development-Tasks#persistant-caching Persistent Caching]:''' Implement a disk-based version of the internal memory caches<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Project%3A-Multi-threaded-geometry-rendering Multi-threaded Geometry Evaluation]:''' Implement multi-threaded evaluation of geometry.<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Project%3A-Survey-of-CSG-algorithms Survey of CSG algorithms]:''' Review existing research, evaluate and prototype algorithms.<br />
|align=center|C++<br />
|align=center|MEDIUM-HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Ideas-for-Development-Tasks#issue-handling Issue Handling]:''' Day-to day issue and community management, fix incoming and existin issues. Good place to get started.<br />
|align=center|C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Ideas-for-Development-Tasks#test-framework-improvements Test Framework Improvements]:''' Improve tests and test framework. Good place to get started.<br />
|align=center|C++<br />
|align=center|EASY-MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|-<br />
|align=left width=62%|'''[https://github.com/openscad/openscad/wiki/Ideas-for-Development-Tasks#larger-tasks-for-particularly-experienced-people Larger tasks for particularly experienced people]:''' Various harder tasks which are not fully specified and requires significant effort to design and implement.<br />
|align=center|C++<br />
|align=center|HARD<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Marius]]<br />
|}<br />
<br />
The OpenSCAD team is also open to new ideas. Please [http://www.openscad.org/community.html get in touch] to discuss your ideas and convince a mentor to back it.<br />
<br />
= LibreCAD Projects =<br />
<br />
LibreCAD is a free Open Source CAD application for Windows, Apple and Linux. Support and documentation is free from our large, dedicated community of users, contributors and developers.<br />
Please refer to [http://wiki.librecad.org/index.php/GSoC_2015#LibreCAD_Projects_Ideas LibreCAD GSoC 2015 ideas] for more detailed description.<br />
<br />
<br />
{| bgcolor=#fff<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[LibreCAD 3 UI Phase 1]]:''' Add GUI support for drawing and editing actions to start exposing it to end users.<br />
|align=center|C++,Math<br />
|align=center|MEDIUM TO HIGH<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >, R. van Twisk <LibreCAD@rvt.dds.nl>]]<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[Improve Spline/Bézier Support]]''' <br />
|align=center|C++,Math<br />
|align=center|MEDIUM TO HIGH<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >, R. van Twisk <LibreCAD@rvt.dds.nl>]]<br />
|-<br />
<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[Improve contour topology support]]:''' Hatching and area enclosed in a contour<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[Improve precision and robustness of equation solvers]]''' <br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[Conic curve support]]''' <br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
<br />
|- bgcolor=#fafafa<br />
|width=62%|'''[[SmartSnap]]:''' Adding and improve snap features for drawing<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[LibreCAD on mobile]]:''' Qt5 support for mobile (Android and iOS, see [http://doc.qt.digia.com/qtcreator-2.1/creator-mobile-example.html Qt mobile]).<br />
|align=center|Qt Android iOS<br />
|align=center|MEDIUM<br />
|align=center|[[dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
<br />
|- bgcolor=#ffffff<br />
|width=62%|'''[[Support for multiple units upon data entry]]''' <br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|R. van Twisk <gsoc_2014@rvt.dds.nl>,dli (Dongxu Li < dongxuli2011 at gmail >]]<br />
|-<br />
|}<br />
<br />
= STEPcode Projects =<br />
<br />
{| bgcolor=#fff width=100%<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|width=62%|'''[[STEP Coverage Test]]:''' Write a program that links against STEPcode and generates a STEP output instantiating every entity for a given schema. Goal is a comprehensive program and data file for testing STEP import/export.<br />
|ANY (C/C++, Python, Java, Perl, ...)<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|- <br />
|width=62%|'''[[STEP Incremental Loading]]:''' Basically take a work-in-progress to the next level. Modify the STEP parser to only read what it needs when it needs it, test, clean up, profile, and optimize.<br />
|align=center|C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|- <br />
|width=62%|'''[[STEP Minimal Examples]]:''' Create minimal examples for various schemas - such as AP214 or AP242 - in the style of [http://github.com/stepcode/stepcode/blob/master/example/ap203min/ap203min.cpp ap203min]<br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|- <br />
|width=62%|'''[[STEP Multiple Protocol Parsing]]:''' Currently creates a parser that works with a specific application protocol (e.g., AP203, AP214). Make it work with multiple simultaneously. <br />
|align=center|C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|- <br />
|width=62%|'''[[STEP Source Code Documentation]]:''' We already use doxygen, but could do much better. Improve code documentation and utilize additional doxygen features such as topic pages. Add a 'make doxygen' target to invoke doxygen.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|-<br />
|width=62%|'''[[STEP EXPRESS Documentation]]:''' Write 'exp2html', similar to exp2py or exp2cxx (python and C++ generators) but outputs graphs and hyperlinked documentation with JavaScript search. Output will include EXPRESS comments (this requires modifying the parser).<br />
|align=center|C/C++, JavaScript<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|-<br />
|width=62%|'''[[STEP Viewer]]:''' STEP is a common CAD file format supported by just about every major CAD system. Given we have an importer and an interface for displaying geometry, a stand-alone STEP file viewer has some great potential.<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|-<br />
|width=62%|'''[[STEP Code Refactoring]]:''' Split large files and functions, add unit tests, move contents of LISTdo loops into separate functions.<br />
|align=center|C/C++<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|-<br />
|width=62%|'''[[STEP Thread Safety and Performance]]:''' Modify the libraries to improve thread safety, increase performance using hotspot analysis<br />
|align=center|C/C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|Mark, Charlie]]<br />
|}<br />
<br />
= LinuxCNC Projects =<br />
<br />
[http://linuxcnc.org LinuxCNC] is software for computer control of machine tools such as milling machines and lathes, 3d printers, robot arms, and more.<br />
<br />
{| bgcolor=#fff width=100%<br />
!<br />
!align=center|Languages<br />
!align=center|Difficulty<br />
!align=center|Contacts<br />
|-<br />
|width=62%|'''StepConf improvements ([https://sourceforge.net/p/emc/feature-requests/60/], [https://sourceforge.net/p/emc/feature-requests/58/], [https://sourceforge.net/p/emc/feature-requests/57/]):''' [http://linuxcnc.org/docs/html/config/stepconf.html StepConf] is a gui that helps people configure LinuxCNC for many kinds of common machines. It has some missing features that should be easy to add.<br />
|Python<br />
|align=center|EASY<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|SebKuzminsky]]<br />
|- <br />
|width=62%|'''Add flow control to halstreamer ([https://sourceforge.net/p/emc/feature-requests/125/]):''' The userspace program [http://linuxcnc.org/docs/html/man/man1/halstreamer.1.html halstreamer] and its realtime companion [http://linuxcnc.org/docs/html/man/man9/streamer.9.html streamer] make up a utility for moving arbitrary data into the realtime core of LinuxCNC. It currently streams data at maximum rate, and it would be good to add flow control.<br />
|C<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|SebKuzminsky]]<br />
|-<br />
|width=62%|'''New realtime kernels ([http://thread.gmane.org/gmane.linux.distributions.emc.user/56252]):''' LinuxCNC supports two realtime kernels: [https://www.rtai.org/ RTAI] and [https://rt.wiki.kernel.org/ Preempt-RT]. We target a variety of Debian-based distributions, and we provide debian packages of the realtime kernels we need. The goal of this project is to expand [https://github.com/SebKuzminsky/linux-rtai-build existing packaging infrastructure] to build newer versions of RTAI and Preempt-RT, for [https://www.debian.org/releases/jessie/ Debian Jessie] and [http://releases.ubuntu.com/14.04/ Ubuntu Trusty].<br />
|Shell, make, debian packaging tools<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|SebKuzminsky]]<br />
|-<br />
|width=62%|'''Add peck to rigid tapping ([https://sourceforge.net/p/emc/feature-requests/78/]):''' Given adequate feedback from the machine, LinuxCNC supports [https://www.youtube.com/watch?v=Ja2LbAAJmls rigid tapping] via [http://linuxcnc.org/docs/html/gcode/gcode.html#sec:G33_1-Rigid-Tapping G33.1] G-code. Some kinds of taps and materials benefit from "peck tapping", where the tap is backed out from the work piece periodically. Peck tapping currently has to be done "by hand", by programming one G33.1 move for each peck. This task is to add support for a "peck depth" parameter to the G33.1 command, analogous to peck drilling in [http://linuxcnc.org/docs/html/gcode/gcode.html#sec:G83-Drilling-Peck G83].<br />
|C, C++<br />
|align=center|MEDIUM<br />
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|SebKuzminsky]]<br />
|}<br />
<br />
<br />
= Mentors =<br />
<br />
BRL-CAD operates under group mentorship. That means you can contact anyone, not just the person assigned to you, for assistance. The mailing list and IRC channel are the preferred communication methods.<br />
<br />
* Christopher Sean Morrison<br />
** brlcad on irc.freenode.net<br />
** Org admin, BRL-CAD open source project lead<br />
<br />
* Erik Greenwald<br />
** ``Erik on irc.freenode.net<br />
** Org admin, BRL-CAD core dev<br />
<br />
* Cliff Yapp<br />
** starseeker on irc.freenode.net<br />
** BRL-CAD Mentor, core dev<br />
<br />
* Daniel Rossberg<br />
** d_rossberg on irc.freenode.net<br />
** BRL-CAD Mentor, core dev, math expert<br />
<br />
* H.S. Rai<br />
** hsrai on irc.freenode.net<br />
** BRL-CAD Mentor, math expert<br />
<br />
* Tom Browder<br />
** BRL-CAD Mentor, analysis expert<br />
<br />
* Bryan Bishop<br />
** BRL-CAD Mentor, python guru<br />
<br />
* Isaac Kamga<br />
** Izakey on irc.freenode.net<br />
** BRL-CAD Mentor, C/C++ Programmer<br />
<br />
* Mohit Daga<br />
** zero_level irc.freenode.net<br />
** BRL-CAD Mentor, Computer Science Engineer<br />
<br />
* Mark Pictor<br />
** mpictor on irc.freenode.net<br />
** STEPcode Mentor<br />
<br />
* Charlie Stirk<br />
** cstirk<br />
** STEPcode Mentor<br />
<br />
* Marius Kintel<br />
** kintel on irc.freenode.net<br />
** OpenSCAD Mentor<br />
<br />
* Torsten Paul<br />
** teepee on irc.freenode.net<br />
** OpenSCAD Mentor<br />
<br />
* Dongxu Li<br />
** dli on irc.freenode.net<br />
** LibreCAD Mentor<br />
<br />
* Jose Rallaz<br />
** rallazz on irc.freenode.net<br />
** LibreCAD Mentor<br />
<br />
* Ries van Twisk<br />
** ries on irc.freenode.net<br />
** LibreCAD Mentor<br />
<br />
* Jasleen Kaur<br />
** jasleen on irc.freenode.net<br />
** LibreCAD Mentor<br />
<br />
* Armin Stebich<br />
** LordOfBikes on irc.freenode.net<br />
** LibreCAD Mentor<br />
<br />
* Sebastian Kuzminsky<br />
** seb_kuzminsky on irc.freenode.net<br />
** LinuxCNC Mentor</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/index&diff=6189User:Level zero/index2013-09-27T09:07:14Z<p>Level zero: /* Add summary page to index page. */</p>
<hr />
<div>This page will serve as an index page for my development activities with BRL-CAD.<br />
<br />
=Personel Informtion=<br />
{| class="wikitable"<br />
|-<br />
|'''Name''' || Mohit Daga<br />
|-<br />
|'''Email Address'''||[mailto:mohit.daga@ieee.org mohit.daga@ieee.org]<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
|'''Mailing Address'''|| E#221 Ram Path, Shyam Nagar, Jaipur – 302019.(IN) <br />
|-<br />
|'''Time Zone'''||UTC +0530<br />
|}<br />
<br />
=GSOC 13=<br />
<br />
*My summary page is [[User:Level_zero/GSOC13/summary|here]]<br />
*My proposal page is [[User:Level_zero/proposal|here]].<br />
*My updated timeline is [[User:Level_zero/GSOC13/timeline|here]]. <br />
*My Logs page is here [[User:Level_zero/GSOC13/logs|here]].<br />
*Information regarding my patches are [[User:Level_zero/patches|here]]<br />
*API design and structure definitions are [[User:Level_zero/GSOC13/api|here]]<br />
<br />
==Pre Application Refinements==<br />
These pages are [[User:Level_zero/GSOC13/Refinements|here]].</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/summary&diff=6188User:Level zero/GSOC13/summary2013-09-27T09:05:54Z<p>Level zero: summary</p>
<hr />
<div><br />
I am Mohit, a GSoC student participant with BRL-CAD for the year 2013. My GSoC-13 project was aimed to consolidate and develop an image processing and conversion library. <br />
<br />
To start my work, I adopted BRL-CAD's standard coding style, grasped functions related to its utility library (libbu) and focused on the status of image processing library previously in place (LIBICV). After which I worked on the various tools of Image Processing in BRL-CAD and listed and grouped them as per the processing they are involved in. Prior to my application period and during very initial phase of coding period, I created few patches to earn my commit rights. And was successfully granted one on 26th July.<br />
<br />
My first challenge was to decide on the image containers. After discussions on mails and IRC. And writing some testing codes I along with my mentors decided on the current image processing container. This included changing the data type of the image data. Included new entries for number of channels and other image rules. And the most important scrapping the file descriptor used in the image containers. Thus the name also changed from icv_image_file to icv_image. The data was no longer associated to a file but rather an image.<br />
<br />
Even bigger challenge was to incorporate these changes in the existing use of the image processing library in the BRL-CAD utilities like rt and libraries like ged and all. Also, I was strictly guided to adopt sequential and minimal change during commits. This required exploring code base of rt and other places where LIBICV was used. Later I completed the task with few modifications and reiterations. This was challenging because rt follows RTUIF (Ray-Tracing User Interface Framework ) involving many files different functions and different privileges to use image reading/writing. With few complications I was later successful in implementing the changes.<br />
<br />
After coming to a standard implementation and setting the game rules right other tasks were both easy and smooth. I wrote APIs for image processing of functions including but not limited to convolution (also special convolution including three images [icv_filter3] ), cropping (a special cropping with any four points of a quadrilateral [icv_crop]), resizing (with two ways to interpolate and two to decimate).<br />
<br />
I also used these APIs in BRL-CAD's image processing tools and modified there documentation pages when required.<br />
<br />
Later I wrote the reading and writting plugin for different image formats. Currently ICV has capibility to read/write images from/to both pipes and files. Also In the case of BRL-CAD raw data of BW, PIX and DPIX the library has an added capability to read without the size being specified. Other implemented format is ppm.<br />
<br />
Sean and Erik were great mentors. They would always guide and insist me on adopting standard practices whose importance I realize now. Really maintaining large and old code-bases is both fun and learning.<br />
<br />
It was my first time in Open-Source Coding. I enjoyed and believe this summer will be cherishable.<br />
<br />
=Future Work=<br />
In future I will be working on other formats. The whole point on adopting the new image container was to use rt's capacities to render high quality images and get an ability to store images of high definition format like OpenEXR in BRL-CAD. Therefore I will be working on it.<br />
<br />
'''''P.S. This summary is the copy of the mail posted on brlcad-devel list.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=6106User:Level zero/GSOC13/logs2013-09-08T12:33:30Z<p>Level zero: LOGS</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
===Pre Coding Period===<br />
'''''From 1st to 5th June<br />
<br />
Will be unavailable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details regarding SVN.<br />
'''''5th June to 9th June<br />
<br />
* Read Codes of the utilities from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
'''''10th June to 12th June<br />
<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
'''''12th June - 14th June<br />
<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api definitions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high definition images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed coordinates). Although these have to be re modified with the new structure definitions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its correctness. I checked and tested it on artificially uniform grad images, two color images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
'''''24th June<br />
<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro definitions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
'''''25th June<br />
<br />
*Tested three different structure definitions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
'''''26th and 27th June<br />
<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
<br />
'''''28th June<br />
<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unsigned char type.<br />
<br />
'''''29th June<br />
<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
<br />
'''''30th June<br />
<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
'''''1 July<br />
<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
'''''2 July<br />
<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
'''''3 July<br />
<br />
*Instead of going further with Designing new functions. reiterated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
'''''4 July<br />
<br />
*Wrote testing function and programs similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
'''''5 July<br />
<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
'''''6 July<br />
<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadrilateral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestones Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
'''''Monday (8th July)<br />
<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writing(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace change to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
<br />
'''''Tuesday (9th July)<br />
<br />
Implemented and tested splitting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
<br />
'''''Wednesday (10th July)<br />
<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
<br />
'''''Thursday (11th July)<br />
<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some commonalities.<br />
<br />
'''''Friday (12th June)<br />
<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
<br />
'''''Saturday (13th June)<br />
<br />
'''Took a break : Invited friends for Iftikhar party''' <br />
<br />
'''''Sunday(14th July)<br />
<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
'''''Monday (15th July)<br />
<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
<br />
'''''Tuesday (16th July)<br />
<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
<br />
'''''Wednesday (17th July)<br />
<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
<br />
'''''Thursday (18th July)<br />
<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
<br />
'''''Friday (19th July)<br />
<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
<br />
'''''Saturday (20th July)<br />
<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
'''''Monday (22 July)<br />
<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
<br />
'''''Tuesday (23 July)<br />
<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
<br />
'''''Wednesday (24 July)<br />
<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
<br />
'''''Thursday (25 July)<br />
<br />
Tested icv_scale and icv_shrink. Corrected the anomalies.<br />
<br />
'''''Friday (26 July)<br />
<br />
Committed the new icv structure. Incrementally Committing all the functions and api's. Also working on a bug that crept in rt during commit.<br />
<br />
'''''Saturday (27 July)<br />
<br />
Tried Fixing issue related to rtedge. <br />
<br />
'''''Sunday (28 July)<br />
<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
'''''Monday (29 July)<br />
<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went through large part of code in rt. Also got acquainted to multi threaded process in brl-cad.<br />
<br />
'''''Tuesday (30 July)<br />
<br />
Tested and committed rect, crop, filter, filter3, fade api functions. My local tree was sort of mismanaged.<br />
<br />
'''''Wednesday (31 July)<br />
<br />
Was planning to work on merging my tree in the source code, But Apparently Benchmark Error showed up. :-(<br />
Wrote icv_writeline such that now it doesn't allocate memory. This helps in putting in place the semaphores again. Even Putting semaphore didn't help resolve the benchmark issue.<br />
I took help of fellow gsoc students to get errors from benchmark, And it turned out there was issue with fractions in double data.<br />
Did some internal tests. And corrected the code.<br />
<br />
'''''Thursday (1 Aug)<br />
<br />
Segregated pix, bw from fileformat.c file.<br />
Added new flags and thus modified my previous work on operations and icv_math.h<br />
Completed source tree syncing.<br />
<br />
'''''Friday (2 Aug)<br />
<br />
Revisited to scale and shrink. Corrected pixshrink and bwshrink utilities. Went out for TAX registration. Could not do much work. Will make up on sunday. <br />
<br />
'''''Saturday (3 Aug)<br />
<br />
Implemented bilinear [binterep(..)] and nearest neighbour interpolation [ninterep(..)] in sync with current format. Also added BOX Average shrinking [shrink_image(..)] and under sampler [under_sample()]<br />
<br />
=== Week 8 ===<br />
'''''Monday & TUESDAY (5th and 6th Aug)<br />
<br />
*Did Code cleaning. Visited my university regarding final year thesis. Now everything is set. <br />
<br />
*Will Start working at a better pace from tomorrow. Targeting this week's deadline of groups.<br />
'''''Wednesday to Sat (7th to 10th Aug)<br />
*'''bw_save and pix_save''' :- Modified such that now they can write to stdout or pipes refering to them<br />
*'''bw_load and pix_load''' :- modified such that now they can read from stdin or pipes.<br />
*'''pixscale and bwcale''' :- Doesnt show ioctl error now.<br />
*'''bwrect''' :- Converted a model for using libicv in the utilities.<br />
*'''decimate''' :- created a wrapper function namely icv_resize to handle the resizing functionality.<br />
*'''stat''' :- implemented mode, median, skew and variance functionalities.<br />
<br />
=== Week 9 ===<br />
'''''Monday (August 10)<br />
*modified bw_read and pix_read such that it can read from stdin and <br />
*Modified bw_read and pix_read such that it could save to stdout.<br />
*These two modiciations are useful for writting and reading images to/from pipes<br />
*Did some codecleaning by correcting messages.<br />
<br />
'''''Tuesday (August 11)<br />
* Started converting utilities to use icv library. <br />
* Converted bwrect to use icv library.<br />
* Also leart bu_getopt and other function to handle the operators<br />
<br />
'''''Wednesday (August 12)<br />
* Improved the nomenclature of icv library as per the mentor's advice<br />
#icv_save -> icv_write<br />
#icv_load -> icv_read<br />
#icv_free -> icV_destroy<br />
<br />
'''''Wednesday (August 13)<br />
* Had discussions on IRC regarding the fate of the utiities. And other utilities option.<br />
<br />
'''''Thrudsay (August 14)<br />
* corrected the documentation of bwrect as per the new modification.<br />
* Incorporated the use of icv in pixrect.<br />
* Wrote the docs for pixrect for icv.<br />
<br />
'''''Thrudsay (August 15)<br />
* Added routines to read/write dpix images.<br />
* Also created icv_normalize function to handle the dpix images.<br />
<br />
'''''(August 16 - August 22) <br />
* Taken a break for holidays. Independence day and RakshaBandhan<br />
<br />
=== Week 10 ===<br />
'''''August 23<br />
* Made provision for bw-pix to use libicv.<br />
* Pixfade also uses libicv.<br />
<br />
'''''August 24<br />
* Reduced parameters of rgb2gray. This now takes the weights and the color combinations.<br />
* Added few macros for icv to covert rgb images into gray images using the standard weights.<br />
* Put some brain on the error related to sextic polynomials. Helped Izak_ (on IRC) to correct it.<br />
<br />
=== Week 11 ===<br />
<br />
'''''August 25 & August 26<br />
* icv_filter didnt take care of the boundaries till now. Finding a solution to correct this behaviour.<br />
* Also had a discussion related to minimal changes.<br />
<br />
'''''August 27<br />
* Modified icv_filter to preserve boundary condition.<br />
* Incorporated libicv in bwfilter app. This now has an option to output to a specified file name. Also pipes can be handled.<br />
<br />
'''''August 28<br />
* Encountered error in regress due to the latest changes in pix-bw utility.<br />
* Looking at regress and trying to study its functionality.<br />
<br />
'''''August 29<br />
* Updated the man page of bwfilter with recent changes in libicv.<br />
* Added verbose in bwfilter as per the previous usage.<br />
* Added offset and kerndivision flag options in bwfilter.<br />
* Wored out the regress error. Also there was an error with expr in the regress. Helped in finding that out.<br />
<br />
'''''August 30 and August 31 <br />
* Improved bw_read and pix_read to read images without specifying the image size. Also updated the docs.<br />
* Used this improvement in pix-bw. Also changed at the instances pix-bw is used.<br />
* did some code cleaning in color_space utilities, bw-pix.<br />
<br />
=== Week 12 ===<br />
(Exam Week at home institute.)<br />
<br />
* Updated and restructured the mannual page for pix-bw<br />
<br />
* Created a list of doubts in development of libicv. Had an informative discussion with Sean (brlcad) on irc related to development and task left for completion. Added all the points in src/libicv/TODO.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5969User:Level zero/GSOC13/logs2013-08-12T08:41:54Z<p>Level zero: /* Week 8 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
===Pre Coding Period===<br />
'''''From 1st to 5th June<br />
<br />
Will be unavailable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details regarding SVN.<br />
'''''5th June to 9th June<br />
<br />
* Read Codes of the utilities from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
'''''10th June to 12th June<br />
<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
'''''12th June - 14th June<br />
<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api definitions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high definition images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed coordinates). Although these have to be re modified with the new structure definitions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its correctness. I checked and tested it on artificially uniform grad images, two color images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
'''''24th June<br />
<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro definitions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
'''''25th June<br />
<br />
*Tested three different structure definitions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
'''''26th and 27th June<br />
<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
<br />
'''''28th June<br />
<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unsigned char type.<br />
<br />
'''''29th June<br />
<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
<br />
'''''30th June<br />
<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
'''''1 July<br />
<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
'''''2 July<br />
<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
'''''3 July<br />
<br />
*Instead of going further with Designing new functions. reiterated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
'''''4 July<br />
<br />
*Wrote testing function and programs similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
'''''5 July<br />
<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
'''''6 July<br />
<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadrilateral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestones Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
'''''Monday (8th July)<br />
<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writing(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace change to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
<br />
'''''Tuesday (9th July)<br />
<br />
Implemented and tested splitting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
<br />
'''''Wednesday (10th July)<br />
<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
<br />
'''''Thursday (11th July)<br />
<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some commonalities.<br />
<br />
'''''Friday (12th June)<br />
<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
<br />
'''''Saturday (13th June)<br />
<br />
'''Took a break : Invited friends for Iftikhar party''' <br />
<br />
'''''Sunday(14th July)<br />
<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
'''''Monday (15th July)<br />
<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
<br />
'''''Tuesday (16th July)<br />
<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
<br />
'''''Wednesday (17th July)<br />
<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
<br />
'''''Thursday (18th July)<br />
<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
<br />
'''''Friday (19th July)<br />
<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
<br />
'''''Saturday (20th July)<br />
<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
'''''Monday (22 July)<br />
<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
<br />
'''''Tuesday (23 July)<br />
<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
<br />
'''''Wednesday (24 July)<br />
<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
<br />
'''''Thursday (25 July)<br />
<br />
Tested icv_scale and icv_shrink. Corrected the anomalies.<br />
<br />
'''''Friday (26 July)<br />
<br />
Committed the new icv structure. Incrementally Committing all the functions and api's. Also working on a bug that crept in rt during commit.<br />
<br />
'''''Saturday (27 July)<br />
<br />
Tried Fixing issue related to rtedge. <br />
<br />
'''''Sunday (28 July)<br />
<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
'''''Monday (29 July)<br />
<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went through large part of code in rt. Also got acquainted to multi threaded process in brl-cad.<br />
<br />
'''''Tuesday (30 July)<br />
<br />
Tested and committed rect, crop, filter, filter3, fade api functions. My local tree was sort of mismanaged.<br />
<br />
'''''Wednesday (31 July)<br />
<br />
Was planning to work on merging my tree in the source code, But Apparently Benchmark Error showed up. :-(<br />
Wrote icv_writeline such that now it doesn't allocate memory. This helps in putting in place the semaphores again. Even Putting semaphore didn't help resolve the benchmark issue.<br />
I took help of fellow gsoc students to get errors from benchmark, And it turned out there was issue with fractions in double data.<br />
Did some internal tests. And corrected the code.<br />
<br />
'''''Thursday (1 Aug)<br />
<br />
Segregated pix, bw from fileformat.c file.<br />
Added new flags and thus modified my previous work on operations and icv_math.h<br />
Completed source tree syncing.<br />
<br />
'''''Friday (2 Aug)<br />
<br />
Revisited to scale and shrink. Corrected pixshrink and bwshrink utilities. Went out for TAX registration. Could not do much work. Will make up on sunday. <br />
<br />
'''''Saturday (3 Aug)<br />
<br />
Implemented bilinear [binterep(..)] and nearest neighbour interpolation [ninterep(..)] in sync with current format. Also added BOX Average shrinking [shrink_image(..)] and under sampler [under_sample()]<br />
<br />
=== Week 8 ===<br />
'''''Monday & TUESDAY (5th and 6th Aug)<br />
<br />
*Did Code cleaning. Visited my university regarding final year thesis. Now everything is set. <br />
<br />
*Will Start working at a better pace from tomorrow. Targeting this week's deadline of groups.<br />
'''''Wednesday to Sat (7th to 10th Aug)<br />
*'''bw_save and pix_save''' :- Modified such that now they can write to stdout or pipes refering to them<br />
*'''bw_load and pix_load''' :- modified such that now they can read from stdin or pipes.<br />
*'''pixscale and bwcale''' :- Doesnt show ioctl error now.<br />
*'''bwrect''' :- Converted a model for using libicv in the utilities.<br />
*'''decimate''' :- created a wrapper function namely icv_resize to handle the resizing functionality.<br />
*'''stat''' :- implemented mode, median, skew and variance functionalities.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5943User:Level zero/GSOC13/logs2013-08-06T19:40:46Z<p>Level zero: Logs</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
===Pre Coding Period===<br />
'''''From 1st to 5th June<br />
<br />
Will be unavailable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details regarding SVN.<br />
'''''5th June to 9th June<br />
<br />
* Read Codes of the utilities from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
'''''10th June to 12th June<br />
<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
'''''12th June - 14th June<br />
<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api definitions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high definition images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed coordinates). Although these have to be re modified with the new structure definitions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its correctness. I checked and tested it on artificially uniform grad images, two color images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
'''''24th June<br />
<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro definitions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
'''''25th June<br />
<br />
*Tested three different structure definitions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
'''''26th and 27th June<br />
<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
<br />
'''''28th June<br />
<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unsigned char type.<br />
<br />
'''''29th June<br />
<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
<br />
'''''30th June<br />
<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
'''''1 July<br />
<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
'''''2 July<br />
<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
'''''3 July<br />
<br />
*Instead of going further with Designing new functions. reiterated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
'''''4 July<br />
<br />
*Wrote testing function and programs similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
'''''5 July<br />
<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
'''''6 July<br />
<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadrilateral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestones Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
'''''Monday (8th July)<br />
<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writing(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace change to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
<br />
'''''Tuesday (9th July)<br />
<br />
Implemented and tested splitting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
<br />
'''''Wednesday (10th July)<br />
<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
<br />
'''''Thursday (11th July)<br />
<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some commonalities.<br />
<br />
'''''Friday (12th June)<br />
<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
<br />
'''''Saturday (13th June)<br />
<br />
'''Took a break : Invited friends for Iftikhar party''' <br />
<br />
'''''Sunday(14th July)<br />
<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
'''''Monday (15th July)<br />
<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
<br />
'''''Tuesday (16th July)<br />
<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
<br />
'''''Wednesday (17th July)<br />
<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
<br />
'''''Thursday (18th July)<br />
<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
<br />
'''''Friday (19th July)<br />
<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
<br />
'''''Saturday (20th July)<br />
<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
'''''Monday (22 July)<br />
<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
<br />
'''''Tuesday (23 July)<br />
<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
<br />
'''''Wednesday (24 July)<br />
<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
<br />
'''''Thursday (25 July)<br />
<br />
Tested icv_scale and icv_shrink. Corrected the anomalies.<br />
<br />
'''''Friday (26 July)<br />
<br />
Committed the new icv structure. Incrementally Committing all the functions and api's. Also working on a bug that crept in rt during commit.<br />
<br />
'''''Saturday (27 July)<br />
<br />
Tried Fixing issue related to rtedge. <br />
<br />
'''''Sunday (28 July)<br />
<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
'''''Monday (29 July)<br />
<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went through large part of code in rt. Also got acquainted to multi threaded process in brl-cad.<br />
<br />
'''''Tuesday (30 July)<br />
<br />
Tested and committed rect, crop, filter, filter3, fade api functions. My local tree was sort of mismanaged.<br />
<br />
'''''Wednesday (31 July)<br />
<br />
Was planning to work on merging my tree in the source code, But Apparently Benchmark Error showed up. :-(<br />
Wrote icv_writeline such that now it doesn't allocate memory. This helps in putting in place the semaphores again. Even Putting semaphore didn't help resolve the benchmark issue.<br />
I took help of fellow gsoc students to get errors from benchmark, And it turned out there was issue with fractions in double data.<br />
Did some internal tests. And corrected the code.<br />
<br />
'''''Thursday (1 Aug)<br />
<br />
Segregated pix, bw from fileformat.c file.<br />
Added new flags and thus modified my previous work on operations and icv_math.h<br />
Completed source tree syncing.<br />
<br />
'''''Friday (2 Aug)<br />
<br />
Revisited to scale and shrink. Corrected pixshrink and bwshrink utilities. Went out for TAX registration. Could not do much work. Will make up on sunday. <br />
<br />
'''''Saturday (3 Aug)<br />
<br />
Implemented bilinear [binterep(..)] and nearest neighbour interpolation [ninterep(..)] in sync with current format. Also added BOX Average shrinking [shrink_image(..)] and under sampler [under_sample()]<br />
<br />
=== Week 8 ===<br />
'''''Monday & TUESDAY (5th and 6th Aug)<br />
<br />
*Did Code cleaning. Visited my university regarding final year thesis. Now everything is set. <br />
<br />
*Will Start working at a better pace from tomorrow. Targeting this week's deadline of groups.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5942User:Level zero/GSOC13/logs2013-08-06T19:40:16Z<p>Level zero: /* Week 7 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
===Pre Coding Period===<br />
'''''From 1st to 5th June<br />
<br />
Will be unavailable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details regarding SVN.<br />
'''''5th June to 9th June<br />
<br />
* Read Codes of the utilities from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
'''''10th June to 12th June<br />
<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
'''''12th June - 14th June<br />
<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api definitions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high definition images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed coordinates). Although these have to be re modified with the new structure definitions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its correctness. I checked and tested it on artificially uniform grad images, two color images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
'''''24th June<br />
<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro definitions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
'''''25th June<br />
<br />
*Tested three different structure definitions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
'''''26th and 27th June<br />
<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
<br />
'''''28th June<br />
<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unsigned char type.<br />
<br />
'''''29th June<br />
<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
<br />
'''''30th June<br />
<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
'''''1 July<br />
<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
'''''2 July<br />
<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
'''''3 July<br />
<br />
*Instead of going further with Designing new functions. reiterated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
'''''4 July<br />
<br />
*Wrote testing function and programs similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
'''''5 July<br />
<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
'''''6 July<br />
<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadrilateral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestones Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
'''''Monday (8th July)<br />
<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writing(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace change to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
<br />
'''''Tuesday (9th July)<br />
<br />
Implemented and tested splitting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
<br />
'''''Wednesday (10th July)<br />
<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
<br />
'''''Thursday (11th July)<br />
<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some commonalities.<br />
<br />
'''''Friday (12th June)<br />
<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
<br />
'''''Saturday (13th June)<br />
<br />
'''Took a break : Invited friends for Iftikhar party''' <br />
<br />
'''''Sunday(14th July)<br />
<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
'''''Monday (15th July)<br />
<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
<br />
'''''Tuesday (16th July)<br />
<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
<br />
'''''Wednesday (17th July)<br />
<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
<br />
'''''Thursday (18th July)<br />
<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
<br />
'''''Friday (19th July)<br />
<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
<br />
'''''Saturday (20th July)<br />
<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
'''''Monday (22 July)<br />
<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
<br />
'''''Tuesday (23 July)<br />
<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
<br />
'''''Wednesday (24 July)<br />
<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
<br />
'''''Thursday (25 July)<br />
<br />
Tested icv_scale and icv_shrink. Corrected the anomalies.<br />
<br />
'''''Friday (26 July)<br />
<br />
Committed the new icv structure. Incrementally Committing all the functions and api's. Also working on a bug that crept in rt during commit.<br />
<br />
'''''Saturday (27 July)<br />
<br />
Tried Fixing issue related to rtedge. <br />
<br />
'''''Sunday (28 July)<br />
<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
'''''Monday (29 July)<br />
<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went through large part of code in rt. Also got acquainted to multi threaded process in brl-cad.<br />
<br />
'''''Tuesday (30 July)<br />
<br />
Tested and committed rect, crop, filter, filter3, fade api functions. My local tree was sort of mismanaged.<br />
<br />
'''''Wednesday (31 July)<br />
<br />
Was planning to work on merging my tree in the source code, But Apparently Benchmark Error showed up. :-(<br />
Wrote icv_writeline such that now it doesn't allocate memory. This helps in putting in place the semaphores again. Even Putting semaphore didn't help resolve the benchmark issue.<br />
I took help of fellow gsoc students to get errors from benchmark, And it turned out there was issue with fractions in double data.<br />
Did some internal tests. And corrected the code.<br />
<br />
'''''Thursday (1 Aug)<br />
<br />
Segregated pix, bw from fileformat.c file.<br />
Added new flags and thus modified my previous work on operations and icv_math.h<br />
Completed source tree syncing.<br />
<br />
'''''Friday (2 Aug)<br />
<br />
Revisited to scale and shrink. Corrected pixshrink and bwshrink utilities. Went out for TAX registration. Could not do much work. Will make up on sunday. <br />
<br />
'''''Saturday (3 Aug)<br />
<br />
Implemented bilinear [binterep(..)] and nearest neighbour interpolation [ninterep(..)] in sync with current format. Also added BOX Average shrinking [shrink_image(..)] and under sampler [under_sample()]<br />
<br />
=== Week 8 ===<br />
'''''Monday & TUESDAY (5th and 6th Aug)<br />
Did Code cleaning. Visited my university regarding final year thesis. Now everything is set. <br />
<br />
Will Start working at a better pace from tomorrow. Targeting this week's deadline of groups.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5918User:Level zero/GSOC13/logs2013-08-03T19:55:10Z<p>Level zero: /* Week 7 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
===Pre Coding Period===<br />
'''''From 1st to 5th June<br />
<br />
Will be unavailable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details regarding SVN.<br />
'''''5th June to 9th June<br />
<br />
* Read Codes of the utilities from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
'''''10th June to 12th June<br />
<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
'''''12th June - 14th June<br />
<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api definitions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high definition images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed coordinates). Although these have to be re modified with the new structure definitions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its correctness. I checked and tested it on artificially uniform grad images, two color images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
'''''24th June<br />
<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro definitions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
'''''25th June<br />
<br />
*Tested three different structure definitions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
'''''26th and 27th June<br />
<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
<br />
'''''28th June<br />
<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unsigned char type.<br />
<br />
'''''29th June<br />
<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
<br />
'''''30th June<br />
<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
'''''1 July<br />
<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
'''''2 July<br />
<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
'''''3 July<br />
<br />
*Instead of going further with Designing new functions. reiterated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
'''''4 July<br />
<br />
*Wrote testing function and programs similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
'''''5 July<br />
<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
'''''6 July<br />
<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadrilateral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestones Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
'''''Monday (8th July)<br />
<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writing(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace change to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
<br />
'''''Tuesday (9th July)<br />
<br />
Implemented and tested splitting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
<br />
'''''Wednesday (10th July)<br />
<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
<br />
'''''Thursday (11th July)<br />
<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some commonalities.<br />
<br />
'''''Friday (12th June)<br />
<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
<br />
'''''Saturday (13th June)<br />
<br />
'''Took a break : Invited friends for Iftikhar party''' <br />
<br />
'''''Sunday(14th July)<br />
<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
'''''Monday (15th July)<br />
<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
<br />
'''''Tuesday (16th July)<br />
<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
<br />
'''''Wednesday (17th July)<br />
<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
<br />
'''''Thursday (18th July)<br />
<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
<br />
'''''Friday (19th July)<br />
<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
<br />
'''''Saturday (20th July)<br />
<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
'''''Monday (22 July)<br />
<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
<br />
'''''Tuesday (23 July)<br />
<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
<br />
'''''Wednesday (24 July)<br />
<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
<br />
'''''Thursday (25 July)<br />
<br />
Tested icv_scale and icv_shrink. Corrected the anomalies.<br />
<br />
'''''Friday (26 July)<br />
<br />
Committed the new icv structure. Incrementally Committing all the functions and api's. Also working on a bug that crept in rt during commit.<br />
<br />
'''''Saturday (27 July)<br />
<br />
Tried Fixing issue related to rtedge. <br />
<br />
'''''Sunday (28 July)<br />
<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
'''''Monday (29 July)<br />
<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went through large part of code in rt. Also got acquainted to multi threaded process in brl-cad.<br />
<br />
'''''Tuesday (30 July)<br />
<br />
Tested and committed rect, crop, filter, filter3, fade api functions. My local tree was sort of mismanaged.<br />
<br />
'''''Wednesday (31 July)<br />
<br />
Was planning to work on merging my tree in the source code, But Apparently Benchmark Error showed up. :-(<br />
Wrote icv_writeline such that now it doesn't allocate memory. This helps in putting in place the semaphores again. Even Putting semaphore didn't help resolve the benchmark issue.<br />
I took help of fellow gsoc students to get errors from benchmark, And it turned out there was issue with fractions in double data.<br />
Did some internal tests. And corrected the code.<br />
<br />
'''''Thursday (1 Aug)<br />
<br />
Segregated pix, bw from fileformat.c file.<br />
Added new flags and thus modified my previous work on operations and icv_math.h<br />
Completed source tree syncing.<br />
<br />
'''''Friday (2 Aug)<br />
<br />
Revisited to scale and shrink. Corrected pixshrink and bwshrink utilities. Went out for TAX registration. Could not do much work. Will make up on sunday. <br />
<br />
'''''Saturday (3 Aug)<br />
<br />
Implemented bilinear [binterep(..)] and nearest neighbour interpolation [ninterep(..)] in sync with current format. Also added BOX Average shrinking [shrink_image(..)] and under sampler [under_sample()]</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5910User:Level zero/GSOC13/logs2013-08-02T20:36:19Z<p>Level zero: /* Making a different section for pre Coding Period*/</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
===Pre Coding Period===<br />
'''''From 1st to 5th June<br />
<br />
Will be unavailable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details regarding SVN.<br />
'''''5th June to 9th June<br />
<br />
* Read Codes of the utilities from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
'''''10th June to 12th June<br />
<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
'''''12th June - 14th June<br />
<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api definitions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high definition images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed coordinates). Although these have to be re modified with the new structure definitions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its correctness. I checked and tested it on artificially uniform grad images, two color images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
'''''24th June<br />
<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro definitions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
'''''25th June<br />
<br />
*Tested three different structure definitions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
'''''26th and 27th June<br />
<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
<br />
'''''28th June<br />
<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unsigned char type.<br />
<br />
'''''29th June<br />
<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
<br />
'''''30th June<br />
<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
'''''1 July<br />
<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
'''''2 July<br />
<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
'''''3 July<br />
<br />
*Instead of going further with Designing new functions. reiterated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
'''''4 July<br />
<br />
*Wrote testing function and programs similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
'''''5 July<br />
<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
'''''6 July<br />
<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadrilateral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestones Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
'''''Monday (8th July)<br />
<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writing(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace change to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
<br />
'''''Tuesday (9th July)<br />
<br />
Implemented and tested splitting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
<br />
'''''Wednesday (10th July)<br />
<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
<br />
'''''Thursday (11th July)<br />
<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some commonalities.<br />
<br />
'''''Friday (12th June)<br />
<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
<br />
'''''Saturday (13th June)<br />
<br />
'''Took a break : Invited friends for Iftikhar party''' <br />
<br />
'''''Sunday(14th July)<br />
<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
'''''Monday (15th July)<br />
<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
<br />
'''''Tuesday (16th July)<br />
<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
<br />
'''''Wednesday (17th July)<br />
<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
<br />
'''''Thursday (18th July)<br />
<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
<br />
'''''Friday (19th July)<br />
<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
<br />
'''''Saturday (20th July)<br />
<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
'''''Monday (22 July)<br />
<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
<br />
'''''Tuesday (23 July)<br />
<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
<br />
'''''Wednesday (24 July)<br />
<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
<br />
'''''Thursday (25 July)<br />
<br />
Tested icv_scale and icv_shrink. Corrected the anomalies.<br />
<br />
'''''Friday (26 July)<br />
<br />
Committed the new icv structure. Incrementally Committing all the functions and api's. Also working on a bug that crept in rt during commit.<br />
<br />
'''''Saturday (27 July)<br />
<br />
Tried Fixing issue related to rtedge. <br />
<br />
'''''Sunday (28 July)<br />
<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
'''''Monday (29 July)<br />
<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went through large part of code in rt. Also got acquainted to multi threaded process in brl-cad.<br />
<br />
'''''Tuesday (30 July)<br />
<br />
Tested and committed rect, crop, filter, filter3, fade api functions. My local tree was sort of mismanaged.<br />
<br />
'''''Wednesday (31 July)<br />
<br />
Was planning to work on merging my tree in the source code, But Apparently Benchmark Error showed up. :-(<br />
Wrote icv_writeline such that now it doesn't allocate memory. This helps in putting in place the semaphores again. Even Putting semaphore didn't help resolve the benchmark issue.<br />
I took help of fellow gsoc students to get errors from benchmark, And it turned out there was issue with fractions in double data.<br />
Did some internal tests. And corrected the code.<br />
<br />
'''''Wednesday (1 Aug)<br />
<br />
Segregated pix, bw from fileformat.c file.<br />
Added new flags and thus modified my previous work on operations and icv_math.h<br />
Completed source tree syncing.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5909User:Level zero/GSOC13/logs2013-08-02T20:33:58Z<p>Level zero: /* Spelling corrections and Organizing in a better way */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavailable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details regarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilities from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api definitions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high definition images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed coordinates). Although these have to be re modified with the new structure definitions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its correctness. I checked and tested it on artificially uniform grad images, two color images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
'''''24th June<br />
<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro definitions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
'''''25th June<br />
<br />
*Tested three different structure definitions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
'''''26th and 27th June<br />
<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
<br />
'''''28th June<br />
<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unsigned char type.<br />
<br />
'''''29th June<br />
<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
<br />
'''''30th June<br />
<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
'''''1 July<br />
<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
'''''2 July<br />
<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
'''''3 July<br />
<br />
*Instead of going further with Designing new functions. reiterated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
'''''4 July<br />
<br />
*Wrote testing function and programs similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
'''''5 July<br />
<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
'''''6 July<br />
<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadrilateral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestones Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
'''''Monday (8th July)<br />
<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writing(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace change to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
<br />
'''''Tuesday (9th July)<br />
<br />
Implemented and tested splitting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
<br />
'''''Wednesday (10th July)<br />
<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
<br />
'''''Thursday (11th July)<br />
<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some commonalities.<br />
<br />
'''''Friday (12th June)<br />
<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
<br />
'''''Saturday (13th June)<br />
<br />
'''Took a break : Invited friends for Iftikhar party''' <br />
<br />
'''''Sunday(14th July)<br />
<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
'''''Monday (15th July)<br />
<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
<br />
'''''Tuesday (16th July)<br />
<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
<br />
'''''Wednesday (17th July)<br />
<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
<br />
'''''Thursday (18th July)<br />
<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
<br />
'''''Friday (19th July)<br />
<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
<br />
'''''Saturday (20th July)<br />
<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
'''''Monday (22 July)<br />
<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
<br />
'''''Tuesday (23 July)<br />
<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
<br />
'''''Wednesday (24 July)<br />
<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
<br />
'''''Thursday (25 July)<br />
<br />
Tested icv_scale and icv_shrink. Corrected the anomalies.<br />
<br />
'''''Friday (26 July)<br />
<br />
Committed the new icv structure. Incrementally Committing all the functions and api's. Also working on a bug that crept in rt during commit.<br />
<br />
'''''Saturday (27 July)<br />
<br />
Tried Fixing issue related to rtedge. <br />
<br />
'''''Sunday (28 July)<br />
<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
'''''Monday (29 July)<br />
<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went through large part of code in rt. Also got acquainted to multi threaded process in brl-cad.<br />
<br />
'''''Tuesday (30 July)<br />
<br />
Tested and committed rect, crop, filter, filter3, fade api functions. My local tree was sort of mismanaged.<br />
<br />
'''''Wednesday (31 July)<br />
<br />
Was planning to work on merging my tree in the source code, But Apparently Benchmark Error showed up. :-(<br />
Wrote icv_writeline such that now it doesn't allocate memory. This helps in putting in place the semaphores again. Even Putting semaphore didn't help resolve the benchmark issue.<br />
I took help of fellow gsoc students to get errors from benchmark, And it turned out there was issue with fractions in double data.<br />
Did some internal tests. And corrected the code.<br />
<br />
'''''Wednesday (1 Aug)<br />
<br />
Segregated pix, bw from fileformat.c file.<br />
Added new flags and thus modified my previous work on operations and icv_math.h<br />
Completed source tree syncing.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5900User:Level zero/GSOC13/logs2013-08-01T20:23:39Z<p>Level zero: /* Week 7 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
==== Monday (22 July) ====<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
==== Tuesday (23 July) ====<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
==== Wednesday (24 July) ====<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
==== Thursday (25 July) ====<br />
Tested icv_scale and icv_shrink. Corrected the annomalies.<br />
==== Friday (26 July) ====<br />
Committed the new icv structure. Incrementaly Commiting all the functions and api's. Also working on a bug that crept in rt during commit.<br />
==== Saturday (27 July) ====<br />
Tried Fixing issue related to rtedge. <br />
==== Sunday (28 July) ====<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
==== Monday (29 July) ====<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went through large part of code in rt. Also got acquainted to multi threaded process in brl-cad.<br />
==== Tuesday (30 July) ====<br />
Tested and committed rect, crop, filter, filter3, fade api functions. My local tree was sort of mismanaged.<br />
==== Wednesday (31 July) ====<br />
Was planning to work on merging my tree in the source code, But Apparently Benchmark Error showed up. :-(<br />
Wrote icv_writeline such that now it doesn't allocate memory. This helps in putting in place the semaphores again. Even Putting semaphore didnt help resolve the benchmark issue.<br />
I took help of fellow gsoc students to get errors from benchmark, And it turned out there was issue with fractions in double data.<br />
Did some internal tests. And corrected the code.<br />
==== Wednesday (1 Aug) ====<br />
Segregated pix, bw from fileformat.c file.<br />
Added new flags and thus modified my previous work on operations and icv_math.h<br />
Completed source tree syncing.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5891User:Level zero/GSOC13/logs2013-07-31T19:12:46Z<p>Level zero: /* Week 7 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
==== Monday (22 July) ====<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
==== Tuesday (23 July) ====<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
==== Wednesday (24 July) ====<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
==== Thursday (25 July) ====<br />
Tested icv_scale and icv_shrink. Corrected the annomalies.<br />
==== Friday (26 July) ====<br />
Committed the new icv structure. Incrementaly Commiting all the functions and api's. Also working on a bug that crept in rt during commit.<br />
==== Saturday (27 July) ====<br />
Tried Fixing issue related to rtedge. <br />
==== Sunday (28 July) ====<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
==== Monday (29 July) ====<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went through large part of code in rt. Also got acquainted to multi threaded process in brl-cad.<br />
==== Tuesday (30 July) ====<br />
Tested and committed rect, crop, filter, filter3, fade api functions. My local tree was sort of mismanaged.<br />
==== Wednesday (31 July) ====<br />
Was planning to work on merging my tree in the source code, But Apparently Benchmark Error showed up. :-(<br />
Wrote icv_writeline such that now it doesn't allocate memory. This helps in putting in place the semaphores again. Even Putting semaphore didnt help resolve the benchmark issue.<br />
I took help of fellow gsoc students to get errors from benchmark, And it turned out there was issue with fractions in double data.<br />
Did some internal tests. And corrected the code.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5886User:Level zero/GSOC13/logs2013-07-30T21:08:50Z<p>Level zero: /* Week 7 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
==== Monday (22 July) ====<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
==== Tuesday (23 July) ====<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
==== Wednesday (24 July) ====<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
==== Thursday (25 July) ====<br />
Tested icv_scale and icv_shrink. Corrected the annomalies.<br />
==== Friday (26 July) ====<br />
Committed the new icv structure. Incrementaly Commiting all the functions and api's. Also working on a bug that crept in rt during commit.<br />
==== Saturday (27 July) ====<br />
Tried Fixing issue related to rtedge. <br />
==== Sunday (28 July) ====<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
==== Monday (29 July) ====<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went through large part of code in rt. Also got acquainted to multi threaded process in brl-cad.<br />
==== Tuesday (30 July) ====<br />
Tested and committed rect, crop, filter, filter3, fade api functions. My local tree was sort of mismanaged.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5870User:Level zero/GSOC13/logs2013-07-29T20:56:33Z<p>Level zero: /* Week 7 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
==== Monday (22 July) ====<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
==== Tuesday (23 July) ====<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
==== Wednesday (24 July) ====<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
==== Thursday (25 July) ====<br />
Tested icv_scale and icv_shrink. Corrected the annomalies.<br />
==== Friday (26 July) ====<br />
Committed the new icv structure. Incrementaly Commiting all the functions and api's. Also working on a bug that crept in rt during commit.<br />
==== Saturday (27 July) ====<br />
Tried Fixing issue related to rtedge. <br />
==== Sunday (28 July) ====<br />
Hostel Relocation.<br />
=== Week 7 ===<br />
==== Monday (29 July) ====<br />
Fixed few bugs which crept in during icv implementation in rt. Compiled the src code on bz account. Ran several tests on multi processor machine (bz server). Did benchmark testing. Went throught large part of code in rt. Also got acquainted to multi threaded process in brl-cad.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5863User:Level zero/GSOC13/logs2013-07-29T13:36:01Z<p>Level zero: LOGS</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
==== Monday (22 July) ====<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
==== Tuesday (23 July) ====<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
==== Wednesday (24 July) ====<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
==== Thursday (25 July) ====<br />
Tested icv_scale and icv_shrink. Corrected the annomalies.<br />
==== Friday (26 July) ====<br />
Committed the new icv structure. Incrementaly Commiting all the functions and api's. Also working on a bug that crept in rt during commit.<br />
==== Saturday (27 July) ====<br />
Tried Fixing issue related to rtedge. <br />
==== Sunday (28 July) ====<br />
Hostel Relocation.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5849User:Level zero/GSOC13/logs2013-07-27T14:44:53Z<p>Level zero: /* Week 6 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
==== Monday (22 July) ====<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
==== Tuesday (23 July) ====<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
==== Wednesday (24 July) ====<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
==== Thursday (25 July) ====<br />
Tested icv_scale and icv_shrink. Corrected the annomalies.<br />
==== Friday (26 July) ====<br />
Committed the new icv structure. Incrementaly Commiting all the functions and api's. Also working on a bug that crept in rt during commit.</div>Level zerohttps://brlcad.org/w/index.php?title=Mime-types&diff=5847Mime-types2013-07-27T01:06:59Z<p>Level zero: /* Correcting the file name which is added*/</p>
<hr />
<div>[[category:Design Documents]]<br />
When a developer commits a new file to the repository, they may get an error about mime types not being set. This is because there is (intentionally) a commit hook set up that verifies that there are mime types set on all files being added to the repository.<br />
<br />
Subversion uses file mime-types for lots of useful things like for web interface browsing of the repository. You can either set up your subversion config to auto-set mime types or you can directly set the mime type on the file before you commit the file using svn propset.<br />
<br />
Sean provides a copy of his Subversion configuration that includes property settings for many file types. You can download and install it with this:<br />
<br />
'''curl http://brlcad.org/~sean/subversion.config > ~/.subversion/config'''<br />
<br />
Once installed, run ''svn revert'' on your new file and then add it again. The properties should be set if the config file is installed properly and it's a recognized file type.<br />
<br />
This problem usually looks like this:<br />
<br />
[sean@bz (Wed May 28 13:27:55) brlcad]$ svn commit some_new_file.c<br />
Sending some_new_file.c<br />
Transmitting file data ...svn: Commit failed (details follow):<br />
svn: MERGE request failed on '/svnroot/brlcad/brlcad/trunk'<br />
svn: 'pre-commit' hook failed with error output:<br />
/var/local/mastertree/service-svn/hook-scripts/check-mime-type.pl:<br />
<br />
brlcad/trunk/some_new_file.c : svn:mime-type is not set<br />
<br />
<br />
Every added file must have the svn:mime-type property set. In<br />
addition text files must have the svn:eol-style property set.<br />
<br />
For binary files try running<br />
svn propset svn:mime-type application/octet-stream path/of/file<br />
<br />
For text files try<br />
svn propset svn:mime-type text/plain path/of/file<br />
svn propset svn:eol-style native path/of/file<br />
<br />
You may want to consider uncommenting the auto-props section<br />
in your ~/.subversion/config file. Read the Subversion book<br />
(http://svnbook.red-bean.com/), Chapter 7, Properties section,<br />
Automatic Property Setting subsection for more help.<br />
<br />
[sean@bz (Wed May 28 13:28:55) brlcad]$ svn revert some_new_file.c<br />
Reverted 'some_new_file.c'<br />
[sean@bz (Wed May 28 13:29:55) brlcad]$ curl http://brlcad.org/~sean/subversion.config > ~/.subversion/config<br />
% Total % Received % Xferd Average Speed Time Time Time Current<br />
Dload Upload Total Spent Left Speed<br />
100 10810 100 10810 0 0 30099 0 --:--:-- --:--:-- --:--:-- 81278<br />
[sean@bz (Wed May 28 13:30:55) brlcad]$ svn add some_new_file.c<br />
A some_new_file.c<br />
[sean@bz (Wed May 28 13:31:55) brlcad]$ svn commit some_new_file.c<br />
... no mime type error ...<br />
<br />
That said, if one wanted to manually add or change a file's properties:<br />
[sean@bz (Wed May 29 13:50:51) brlcad]$ svn add some_file.odd<br />
A some_file.odd<br />
[sean@bz (Wed May 29 13:51:32) brlcad]$ svn propset svn:mime-type text/plain some_file.odd<br />
[sean@bz (Wed May 29 13:52:16) brlcad]$ svn propset svn:eol-style native some_file.odd</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5831User:Level zero/GSOC13/logs2013-07-26T09:28:54Z<p>Level zero: /* Week 6 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
==== Monday (22 July) ====<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
==== Tuesday (23 July) ====<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.<br />
==== Wednesday (24 July) ====<br />
Implemented shrink function. This handles both pixshrink and bwshrink and the api function looks as icv_shrink.<br />
==== Thursday (25 July) ====<br />
Tested icv_scale and icv_shrink. Corrected the annomalies.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5769User:Level zero/GSOC13/logs2013-07-24T17:49:00Z<p>Level zero: /* Week 6 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
==== Monday (22 July) ====<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.<br />
==== Tuesday (23 July) ====<br />
Completed scale function. Now it is a generalized implementation. It is implemented as icv_scale accepts both gray scale(single channel) and rgb images. Also it works with double data.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5743User:Level zero/GSOC13/logs2013-07-23T13:04:28Z<p>Level zero: /* Week 6 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
==== Monday (22 July) ====<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5742User:Level zero/GSOC13/logs2013-07-23T13:03:48Z<p>Level zero: /* Week 6 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c<br />
=== Week 6 ===<br />
Monday (22 July)<br />
Implemented bilinear interpolation as part of scale function. Next I have to implement nearest neighbour function.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5730User:Level zero/GSOC13/logs2013-07-22T06:24:47Z<p>Level zero: /* Week 5 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.<br />
====Friday (19th July)====<br />
Implemented histeq for single channel images. Also looked at stats functions. Looked at Erik's suggestion for single functions like icv_image_sum, icv_image_mean etc.<br />
====Saturday (20th July)====<br />
Implemented stats function. Planning to merge hist functions in stats.c</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5724User:Level zero/GSOC13/logs2013-07-19T18:25:59Z<p>Level zero: /* Week 5 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implemented icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code. Also it was tricky implementing this because the image data is converted to double. To deal with this used the bins concept and converted to integer.<br />
====Thursday (18th July)====<br />
Looked at plans for implementation of histeq for double data. By the look of it looks very tricky to implement this for double data. I believe I have to write it afresh.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5720User:Level zero/GSOC13/logs2013-07-18T20:42:09Z<p>Level zero: /* Week 5 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.<br />
====Tuesday (16th July)====<br />
Finalized filter function. Tested it with natural images for lenna, mandrill and barbara. This implementation is highly generalized and can handle any number of channels. Also kernel dimension has been worked with (Ensuring it accepts any size of kernel). Although this file will need a relook for getting kernel coefficients of arbitrary size. <br />
====Wednesday (17th July)====<br />
Implementated icv_hist function. Also tested this file. This implementation has also been generalized for any number of channels. thus an improvement over previous code.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5704User:Level zero/GSOC13/logs2013-07-16T06:15:35Z<p>Level zero: /* Development Logs */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.<br />
===Week 5===<br />
====Monday (15th July)====<br />
Improved the filter function with added generalization to dimension of kernel and number of channels.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5698User:Level zero/GSOC13/logs2013-07-15T16:47:31Z<p>Level zero: /* Week 4 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.<br />
====Wednesday (10th July)====<br />
*Implemented Pixsaturate as icv_saturate.<br />
*This implementation is a function which takes in the sat value and icv_image struct. This takes the double data.<br />
*Created a test routine for this implementation. Corrected few errors which crept in.<br />
*Compared the results with the original routine (pixsaturate)<br />
====Thursday (11th July)====<br />
Started working on filter Again. This is a very tricky implementation as a function. There are three routines pixfilter, bwfilter and pix3filtter. Read there code along. Found some comanalities.<br />
====Friday (12th June)====<br />
Implemented the filter routine for single channel images. <br />
This is a very rough draft and will involve changing and updating the function.<br />
====Saturday (13th June)====<br />
'''Took a break : Invited friends for Iftikar party''' <br />
====Sunday(14th July)====<br />
Only Tested the bwhisteq function for Method2. And updated status about previous patches.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5665User:Level zero/GSOC13/logs2013-07-11T14:49:59Z<p>Level zero: week 4</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
==='''Milestonses Reached'''===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/<br />
===Week 4===<br />
====Monday (8th July)====<br />
Implemented testing routines in libicv/tests for color_space(rgb2gray and gray2rgb), pixel writting(single pixel, and pixel line). Corrected few errors in the routines. Tested color space changers with natural image(lena of 512X512 in png format). Converted that to pix(png2pix). Loaded pix image using implemented function. and converted it to gray scale image, then saved to bw format. Used this bw image to create a pix image using colorspace chage to rgb.<br />
''P.S. All these things are done by loading the image in double format data''<br />
====Tuesday (9th July)====<br />
Implemented and tested spliting of color channels. Given a rgb image this function can split the any color channel and produce a gray scale image.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5612User:Level zero/GSOC13/logs2013-07-08T18:13:07Z<p>Level zero: /* Milestonses Reached */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
===Milestonses Reached===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb<br />
<br />
This link takes you to the new ICV infrastructure written http://bzflag.bz/~mohit/libicv_7thJUL/</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5611User:Level zero/GSOC13/logs2013-07-08T18:11:39Z<p>Level zero: Week 3 and Milestone Reached</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
*Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
*Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
*Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.<br />
====4 July====<br />
*Wrote testing function and programms similar to libbu. These will help in testing the functions of icv. Also changed current usage of libicv in rt, rmrt and libged. <br />
====5 July====<br />
*Wrote Color_space changers. This will be useful in saving RGB data in bw format and gray data in pix format.<br />
====6 July=====<br />
*Wrote crop and rect functions for icv library. Crop accepts skewed parameters and can extract image in any quadraletral, this then converts the image to rectangular using the nearest neighbour. Whereas rect extracts rectangular part of an image.<br />
===Milestonses Reached===<br />
The following milestones only include the completed code. Kernels and operations have been started but are yet to completed, thus not included in the milestone.<br />
#Discussed with mentors about the image structures and API designs.<br />
#Wrote save functions in new format. Implemented the following functions as per the new formats.<br />
##create_image, <br />
##load_image, <br />
##zero_image, <br />
##free_image, <br />
##write_pixel, <br />
##write_line <br />
#Initiated a testing infrastructure for libicv. Wrote testing functions for loading and saving images.<br />
#converted the existing use of ICV in rt,libged and rmrt.<br />
#Implemented functions to crop image These include<br />
##Rect<br />
##Crop<br />
#Implemented functions to change Color_space<br />
##rgb2gray<br />
##gray2rgb</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5599User:Level zero/GSOC13/logs2013-07-05T13:57:26Z<p>Level zero: /* WEEK 3 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
Improved the kernel functions. tried building a test function in the src/util folder.<br />
====3 July====<br />
Instead of going further with Designing new functions. reitrated the use of icv functions in libged/screengrab.c Changed there functions as per the new writepixel functions. Tested load, save functions of icv library.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5588User:Level zero/GSOC13/logs2013-07-04T02:18:15Z<p>Level zero: /* WEEK 3 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
Did code regarding Filter Functions (Group 3) and use of Kernels.<br />
====2 July====<br />
Improved the kernel functions. tried building a test function in the util/folder.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5577User:Level zero/GSOC13/logs2013-07-02T21:51:06Z<p>Level zero: /* WEEK 3 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.<br />
====29th June====<br />
*didnt do any coding work today.<br />
*worked towards clarifying issues with my patches 171, 175, 176, 178,188,192,197,198, 201.<br />
====30th June====<br />
*did some system Cleaning and Installed new operating System and packages.<br />
===WEEK 3===<br />
====1 July====<br />
Did code regarding Filter Functions (Group 3) and use of Kernels.</div>Level zerohttps://brlcad.org/w/index.php?title=Building_from_SVN&diff=5570Building from SVN2013-07-02T00:49:04Z<p>Level zero: /* Adding New Address*/</p>
<hr />
<div>== Obtain the sources ==<br />
<br />
BRL-CAD has recently [[Cvs2svn|switched from CVS to the Subversion system]]. In the new system some of the earlier complexities inherent to CVS are gone, no ''-dP'' option is required and developers will not need their passwords or usernames until it is time to commit a change.<br />
<br />
For non-developers:<br />
<pre>svn checkout https://svn.code.sf.net/p/brlcad/code/brlcad/trunk brlcad</pre><br />
<br />
Note: If you do not yet have an SVN client installed, go to http://subversion.tigris.org for information on obtaining an appropriate SVN client for your platform. Most modern Linux/BSD/UNIX distributions will also have SVN available in their package repositories.<br />
<br />
BRL-CAD also requires the build tool CMake. Again, most Linux/BSD/UNIX distributions will provide a package for CMake - for platforms that do not, CMake is available from http://www.cmake.org<br />
<br />
== Configure the build system ==<br />
cd brlcad<br />
mkdir build<br />
cd build<br />
cmake .. (for a default build)<br />
cmake .. -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release (for a release build)<br />
<br />
When building for multiuser file servers it is often useful to make the install_dir reflect the version and/or architecture of the compile. An example would be "-DCMAKE_INSTALL_PREFIX=/usr/brlcad/rel-7.20.2" to install into a /usr/brlcad/rel-7.20.2 directory. (When CMAKE_BUILD_TYPE is set to Release, the installation directory automatically is assigned the appropriate directory and the user doesn't have to do so manually.) This way a single system can have multiple versions of BRL-CAD installed or multiple binary formats for various architectures if installing on a network file system. Symbolic links are then usually added to point to the "current" or "main" version that is preferable to provide so that users only need to add /usr/brlcad/bin to their path. Examples include:<br />
<br />
;By version<br />
:/usr/brlcad/rel-7.8.0 (release 7.8.0)<br />
:/usr/brlcad/rel-7.6.0 (release 7.6.0)<br />
<br />
;By architecture<br />
:/usr/brlcad/ia32 (linux on Pentium)<br />
:/usr/brlcad/ia64 (linux on Itanium)<br />
:/usr/brlcad/x86_64 (linux on Opteron)<br />
<br />
;By version and architecture<br />
:/usr/brlcad/rel-7.8.0/mips32 (IRIX on MIPS in 32-bit mode, release 7.8.0)<br />
:/usr/brlcad/rel-7.8.0/mips64 (IRIX on MIPS in 64-bit mode, release 7.8.0)<br />
:/usr/brlcad/rel-7.8.2/mips32 (IRIX on MIPS in 32-bit mode, release 7.8.2)<br />
<br />
IMPORTANT!!! - Because BRL-CAD has such a long development history, it predates some library naming conventions in modern operating systems. This means an attempt to configure for an install in the "/usr" path on Linux (for example) will stand a good chance of damaging important system libraries - e.g. BRL-CAD libraries put in "/usr/lib" may overwrite system libraries with the same names. Using "/usr/brlcad" or "/opt/brlcad" means all installed files will be safely contained in the brlcad directory.<br />
<br />
== Compile and test your build ==<br />
make<br />
<br />
At this point, you should have a fully installed and working system. You can test things by doing:<br />
<br />
make test<br />
make benchmark<br />
<br />
Both the test and benchmark should report successfully if everything is working correctly. Report any failures to the BRL-CAD [http://sourceforge.net/tracker/?group_id=105292&atid=640802 bug tracker].<br />
<br />
== Install ==<br />
make install<br />
<br />
If you created a prefix as described above for multiple versions or multiple architectures, you should now create your symbolic links for user convenience and consistency. Example where /usr/brlcad/rel-7.8.0/mips32 was used as the install_dir prefix:<br />
<br />
<pre>% ln -s rel-7.8.0/mips32 /usr/brlcad/stable<br />
% ln -s stable/bin /usr/brlcad/bin<br />
% ln -s stable/include /usr/brlcad/include<br />
% ln -s stable/lib /usr/brlcad/lib<br />
% ln -s stable/man /usr/brlcad/man<br />
% ln -s stable/share /usr/brlcad/share<br />
% ls -l /usr/brlcad<br />
total 48<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 bin -> stable/bin<br />
lrwxr-xr-x 1 root wheel 14 12 Apr 09:00 include -> stable/include<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 lib -> stable/lib<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 man -> stable/man<br />
drwxr-xr-x 7 root wheel 238 11 Apr 18:00 rel-7.8.0<br />
lrwxr-xr-x 1 root wheel 12 12 Apr 09:00 share -> stable/share<br />
lrwxr-xr-x 1 root wheel 9 12 Apr 09:00 stable -> rel-7.8.0/mips32</pre><br />
<br />
''Future versions of BRL-CAD may provide this symbolic link operation for you as a CMake configuration option.''<br />
<br />
== Setup environment (optional) ==<br />
At this point, everything should be ready for use. If the default prefix of /usr/brlcad was used or if the corresponding symbolic links were created, users should only need to add /usr/brlcad/bin to their PATH in order to find binaries for the package (optionally setting their MANPATH as well):<br />
<br />
For bash:<br />
<br />
export PATH=/usr/brlcad/bin:$PATH<br />
export MANPATH=/usr/brlcad/man:$MANPATH<br />
<br />
For csh/tcsh:<br />
<br />
set path=( /usr/brlcad/bin $path )<br />
setenv MANPATH /usr/brlcd/man:$MANPATH<br />
rehash<br />
<br />
If users do not want to modify their PATH, they can get by providing the full path to the binaries (e.g. /usr/brlcad/bin/mged). To find BRL-CAD manual pages without setting your MANPATH, use the provided "brlman" binary instead of "man".<br />
<br />
== Test installation ==<br />
If everything went well, there should now be more than 400 command-line applications at your disposal for processing images and geometry. A quick test of functionality (and performance) is to run the BRL-CAD benchmark again, which is installed as the benchmark tool:<br />
<br />
benchmark<br />
<br />
Additionally, you can run the MGED solid modeler:<br />
<br />
mged<br />
<br />
[[Category:Documentation]]</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5552User:Level zero/GSOC13/logs2013-06-29T21:21:43Z<p>Level zero: /* WEEK 2 logs*/</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c<br />
====28th June====<br />
*Converted the existing use of LIBICV in rt. <br />
*Added gamma_corr field in image for gamma correction when an image's data is converted from double to unisgned char type.</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5533User:Level zero/GSOC13/logs2013-06-28T16:40:31Z<p>Level zero: /* WEEK 2 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
:http://www.bzflag.bz/~mohit/ICV/icv.h<br />
:http://www.bzflag.bz/~mohit/ICV/image.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
:http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
:http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5532User:Level zero/GSOC13/logs2013-06-28T16:39:26Z<p>Level zero: /* WEEK 2 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt<br />
====26th and 27th June====<br />
*Wrote Functions to read, write, create Image and zero image.<br />
*Separate files have been made for each format. Added pix, bw format.<br />
*Links to these files are as follows<br />
http://www.bzflag.bz/~mohit/ICV/icv.h<br />
http://www.bzflag.bz/~mohit/ICV/image.c<br />
http://www.bzflag.bz/~mohit/ICV/icv_bw.c<br />
http://www.bzflag.bz/~mohit/ICV/icv_pix.c<br />
http://www.bzflag.bz/~mohit/ICV/fileformat.c<br />
<br />
*Road ahead:- Incorporate them in rt/view.c rt/viewxray.c rt/viewedge.c and rt/do.c and libged/screengrab.c</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5522User:Level zero/GSOC13/logs2013-06-26T15:36:27Z<p>Level zero: /* WEEK 2 */</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th June====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h<br />
<br />
====25th June====<br />
*Tested three different structure dfintions for the time. These are here [http://www.bzflag.bz/~mohit/interleaved.c] [http://www.bzflag.bz/~mohit/structure.c] [http://www.bzflag.bz/~mohit/seperatearrays.c] <br />
*checked the Crop, and rect as per the new struct defintion<br />
*Find out a plan to implement these structure on the existing use of a libicv in rt,libged and rmrt</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5511User:Level zero/GSOC13/logs2013-06-25T05:37:54Z<p>Level zero: logs 24th July</p>
<hr />
<div>=Development Logs=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''<br />
===WEEK 2===<br />
====24th July====<br />
Worked on Operations(GROUP 2). <br />
Learnt the macro usage of vmath.h. This provides nice macro defintions. Although these cannot be used for image data. Designed new macro definitions for icv_data. Initiated a discussion for keeping them in icv_math.h</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5501User:Level zero/GSOC13/logs2013-06-23T22:02:11Z<p>Level zero: /* Weekly Updates */</p>
<hr />
<div>=Weekly Updates=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
:'''bwhisteq'''<br />
*I found a code redundancy while reading the utilities last week. Thus posted it. The mentors found issues with the compatibility of bwhisteq and its corectness. I checked and tested it on artificially uniform grad images, two clour images with half dark and half light and natural images of lena, barbara. Turns out that this is fine.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5499User:Level zero/GSOC13/logs2013-06-23T21:20:17Z<p>Level zero: /* Week 1 */</p>
<hr />
<div>=Weekly Updates=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1 (17-22 June)===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''</div>Level zerohttps://brlcad.org/w/index.php?title=User:Level_zero/GSOC13/logs&diff=5498User:Level zero/GSOC13/logs2013-06-23T21:19:48Z<p>Level zero: /* Weekly Updates */</p>
<hr />
<div>=Weekly Updates=<br />
==Project Details==<br />
{| class="wikitable"<br />
|-<br />
|'''Project Name''' || Consolidating and Adding the Image Processing Functions to LIBICV <br />
|-<br />
|'''Project Sudent'''||Mohit Daga<br />
|-<br />
|'''IRC(nick)'''||zero_level<br />
|-<br />
|'''Google-Melange username'''||zero_level<br />
|-<br />
|'''Phone Number'''||+91 9783582684<br />
|-<br />
<br />
|}<br />
==Introduction==<br />
This page will contain weekly targets and Updates about the work done.<br />
<br />
===From 1st to 5th June===<br />
Will be unavialable on the internet, Visiting the meditation facility.<br />
*Targets during this time<br />
**As per the proposal document I will be studying the Image Processing tools.<br />
<br />
*Read Details reagarding SVN.<br />
===5th June to 9th June===<br />
* Read Codes of the utilitis from Group 1-8. Made Rough Notes for all theses utilities and working for an Implementation Plan.<br />
===10th June to 12th June===<br />
*Api Design and Posting them on BRLCAD website. It can be accessed from [[User:Level_zero/GSOC13/api|here]].<br />
===12th June - 14th June===<br />
*Working on conversion tools. Posted a patch for conversion of pix-bw and bw-pix.Patch can be found [[http://sourceforge.net/p/brlcad/patches/188/]].<br />
===Week 1===<br />
<br />
:'''Structures'''<br />
*Structure Definitions : This week structure and api defintions were designed. had good discussions with the mentors on the possibility of the design and finalizing it.<br />
<br />
*Later during the end of week I read about high defintion images. Familiarized myself with Openexr [http://www.openexr.com/ReadingAndWritingImageFiles-1.2.x.pdf] image containers. Also about how bmp, png handles them. About <br />
<br />
:'''Depth Converters'''<br />
*Bw-pix, pix-bw : I converted these two utilities to functions. These were important because these can help convert a grey level image to a colour image and vice versa. Saved as patch.<br />
<br />
:'''Patches'''<br />
*Wrote Doxygen comments for ICV Header file. Committed by ``Erik <br />
<br />
*Revisited my pre-application ICV_LOAD patches. Improved them and posted. Waiting to be reviewed. (Patch 197).<br />
<br />
:'''Cropping Functions'''<br />
*Although Groups start from the second week. During Discussions with the mentors, I implemented functionalities of Group 1. icv_rect (cropping with rectangular box.) and icv_crop(cropping with skewed cordinates). Although these have to be remodified with the new structure defintions.<br />
<br />
''P.S. From next week onwards I will update on daily basis.''</div>Level zerohttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/2013&diff=5472Google Summer of Code/20132013-06-21T23:13:54Z<p>Level zero: /* Editing as per brlcad 's Email advise */</p>
<hr />
<div><!--<br />
{|align="right"<br />
|[[Image:BRL-CAD_GSoC2013_flyer.png|thumb|left|256px]]<br />
|}<br />
--><br />
<br />
= GSoC 2013 With BRL-CAD =<br />
<br />
'''BRL-CAD has again been accepted as a [http://www.google-melange.com/ mentoring organization] for the Google Summer of Code!'''<br />
<br />
Following is a summary for each of the GSoC students accepted to work on projects for BRL-CAD. See the links to their personal profile, development logs, and project page.<br />
<br />
= Accepted Projects =<br />
<br />
==Image Processing Library (LIBICV)==<br />
*'''Summary :''' To conoslidate and add image processing functions to LIBICV an image processing library in BRL-CAD.<br />
*'''Student :''' [[User:Level_zero/index|Mohit Daga]]<br />
* '''Dev Log :''' http://brlcad.org/wiki/User:Level_zero/GSOC13/logs<br />
* http://www.google-melange.com/gsoc/project/google/gsoc2013/zero_level/15001<br />
<br />
== NURBS Intersections ==<br />
* '''Summary :''' NURBS Intersections<br />
*'''Student :''' [[User:Phoenix|Jianbang Wu]]<br />
* '''Dev Log :''' http://brlcad.org/wiki/User:Phoenix/GSoc2013/Reports<br />
* http://www.google-melange.com/gsoc/project/google/gsoc2013/phoenixyjll/40001<br />
<br />
== Matrix Pull Routine for performing the opposite of the Matrix Push on Geometry. ==<br />
* Summary: The pull routine takes a specific node on a CSG tree, walking down to the primitive shapes restoring the geometric transformations(scaling, translation or rotations) at each stage down the CSG tree traversal based on reversing all the geometric transformations that occurred on the primitive shapes located at the leaf. Pull routine also stores the local coordinate systems at each point during the traversal from the primitives up to the given initial node. All transformation matrices visited along the tree will be set to their original transformation matrices. This command will fail if no changes occurred to the primitive shapes at the leaves of the CSG tree.<br />
* Student: [[User:NyahCh3ck20|Nyah Check]]<br />
* Dev Log: http://brlcad.org/wiki/User:NyahCh3ck20/GSoc2013/Coding_Report<br />
* http://www.google-melange.com/gsoc/project/update/google/gsoc2013/ch3ck/14001<br />
<br />
==STEP libraries==<br />
* [http://brlcad.org/wiki/STEP_Libraries Summary]: STEP is the current standard for exchange of CAD data between different software packages. BRL-CAD makes use of the NIST STEP Class Libraries code to support its step-g converter, but this source code was written before many current C++ standard practices and libraries were finalized. As a consequence, it needs both cleanup and performance enhancements.<br />
* Student: [http://brlcad.org/wiki/User:KeshaSShah/GSoC13 Kesha Shah]<br />
* [http://brlcad.org/wiki/User:KeshaSShah/GSoC13/Priority2 Project Proposal]<br />
* [http://brlcad.org/w/index.php?title=User:KeshaSShah/GSoC13/Reports Development Logs]<br />
* [http://www.google-melange.com/gsoc/project/google/gsoc2013/keshashah/42001 Google-Melange]<br />
<br />
==New Cross-Platform 3D Display Manager==<br />
* '''Summary: '''Creating a new cross-platform 3D display manager using Qt.<br />
* '''Student: '''[[User:Vladbogolin|Bogolin Simion Vlad]]<br />
* [http://brlcad.org/wiki/User:Vladbogolin/Proposal/DisplayManager Project Proposal]<br />
* [http://brlcad.org/wiki/User:Vladbogolin/GSoC2013/Logs Development Logs]<br />
* [http://www.google-melange.com/gsoc/project/google/gsoc2013/vladbogolin/47001 Google-Melange]<br />
<br />
More projects to be added.<br />
<br />
= Additional Information =<br />
<br />
Students discussed and collaborated with BRL-CAD developers on formulating projects with most selecting from a detailed list of project suggestions from our [[Google_Summer_of_Code/Project_Ideas|Project Ideas]] page. Student applications for [[Google_Summer_of_Code|GSoC]] were accepted at http://google-melange.com from April 22nd until May 3rd.<br />
<br />
[[Category: Summer of Code]]</div>Level zero