Boost logo

Boost :

From: prathamesh tagore (prathameshtagore_at_[hidden])
Date: 2021-05-22 15:32:35


Following is my current plan for GSoC 2021.

Work to be done during community bonding period :

1. Complete remaining pieces of documentation in convolve.hpp
<https://github.com/boostorg/gil/blob/develop/include/boost/gil/extension/numeric/convolve.hpp>
 :
convolve.hpp
<https://github.com/boostorg/gil/blob/4738a38295b6a153e979a16e0439742c496bd559/include/boost/gil/extension/numeric/convolve.hpp#L35>
has
some parameter definitions marked as ToDo, I would like to complete that
work.

2. Add tests related to border handling during 1 dimensional convolution :
I noticed that currently there are no tests for testing boundary handling
in 1D convolution. This was marked as ToDo in
test/extension/numeric/convolve.cpp
<https://github.com/boostorg/gil/blob/4738a38295b6a153e979a16e0439742c496bd559/test/extension/numeric/convolve.cpp#L103>.
I would like to add some simple unit tests for it.

3. "Reflection" option for boundary handling is currently not available
with 1D convolution. This is a pretty common feature/option and is
available in other standard libraries such as Opencv
<https://docs.opencv.org/master/d2/de8/group__core__array.html#ga209f2f4869e304c82d07739337eae7c5>.
I would like to add it along with its related documentation and tests.

4. Apart from this, I will continue my research about existing methods
which can be used while implementing the final idea.

Note : Even though tasks 1 to 3 are not directly related to my project
titled "Separate 2D convolution and correlation", they will help me in
solidifying my understanding about existing convolution APIs in the library
which is one of the motives of community bonding period.

Work to be done during the coding period/after finishing community bonding
period's work :

1. Develop 2D correlation API by writing/using lower level wrappers as done
in 1D convolution.

2. Write 2D convolution wrapper on top of 2D correlation along with border
handling.

3. Modify existing code in the library in a manner which should allow it to
make use of newly developed 2D convolution functionality.
(Example : Reducing code duplication in function "morph_impl()
<https://github.com/boostorg/gil/blob/4738a38295b6a153e979a16e0439742c496bd559/include/boost/gil/image_processing/morphology.hpp#L42>"
of morphology.hpp
<https://github.com/boostorg/gil/blob/4738a38295b6a153e979a16e0439742c496bd559/include/boost/gil/image_processing/morphology.hpp#L47>
)

Note :
1. As instructed by @mloskot in this
<https://cpplang.slack.com/archives/CSVT0STV2/p1621604417019400> thread, I
will develop tests as well as docs simultaneously with API(all of it will
be a part of the same PR). Hence I have not mentioned/alloted separate time
for writing docs and tests.

2. Numbers on the left of tasks are only for the purpose of providing
separation and do not suggest their priority/order of completion.

3. Since my work involves optimization of current 2D convolution
implementation, I may have to try different approaches and select the best
one among them after benchmarking. Implementation details and inferences
derived from all such attempts will be reported weekly on Monday along with
other updates.

Apart from this, adding support for kernel generation (#600
<https://github.com/boostorg/gil/pull/600>) will be my next priority after
developing 2D convolution API in GSoC.

@mloskot @lpranam @Olzhas, please give your opinion on this/add stuff you
would like me to handle.


Boost list run by Boost-Gil-Owners