* Added all standard morphological transformations
* Should handle grayscale dilation/erosion
* Added test cases and improved code structure
* Should handle multichannel images
* Added all standard morphological transformations
* Improved comments and some other things
* Applied adviced changes
* Applied adviced changes
* Should handle grayscale dilation/erosion
* Checking
* Added test cases and improved code structure
* Added command line control
* Added command line control
* Rectified some things
* Rectified some more things
* Improved comments
* Improved comments
* Improved doxygen comments and added more test cases
* Improved compatibility for builds and rectifying whitespace use
* Minor improvement in comments
* Did clang formatting
* pushed enum class inside namespace 'detail' and some other things
* Should handle multichannel images
* Clang formatting attempt
* got rid of if/else comparators for target_element
* Adds morphology.hpp declaration in boost/gil.hpp
* Fix newline
* (std::max)(a, b) instead of std::max(a, b)
* Improved Formatting
Support construction from step_size, step_count, and a function for angles
Implement angle and radious version of Hough line transform and adds a demo
with static line that goes over secondary diagonal.
Implement incremental line raster
Implement naive line raster
Implement Bresenham line raster
Leave only Bresenham line rasterization
Naive and incremental algorithms were removed because they are supposed
to produce the same results anyway.
The reason for diverging results is inaccuracy of floating point numbers
Add circle rendering through trigonometric functions, using
arctan(1 / (radius + 1)) as minimal angle step.
Trigonometric circle rasterizer does not follow circle equation, but still
produces very round shapes.
A new testing methodology needs to be devised for this rasterizer.
The new version accepts start and points inclusively and tries to use
canonic representation during computations.
Slope decided to be is (diff_y + 1) / (diff_x + 1).
A new histogram class proposed with close suport for gil
image constructs.
Shift the stl support implmentation to extension to
serve as example for overloading fill_histogram.
Add cumulative histogram and histogram normalization.
Co-authored-by: debabrata1 <debabrata@goodhealthapp.com>
The output type must be floating point, thus a check was added to make sure it
is the case. Though I had to add specific cases for float32_t as std::is_floating_point does not
consider it a floating point type
The accumulate part was wrong, it multiplied by delta_t on every sum, which is wrong
Use 8 way nabla compute.
This is just different discretization of Laplace operator
https://en.wikipedia.org/wiki/Discrete_Laplace_operator
Laplace stencils are now the same as in mathematical notation
The new function will provide a uniform way to generate stencils
by making sure directions are indexed properly
Add only required stencil points:
The 5 points Laplace stencil is now adding only required points and not assuming that others are zero
This is an example which offers _good enough_ configuration and
may be useful when writing code for GIL, not required though.
This is **not** a complete configuration!
Closes#87
* Implement Sobel and Scharr operators
This commit adds Sobel and Scharr
operators with support for 0th and 1st
degrees with other degrees planned for
later
* Migrate and fix Harris example
Generate Harris entries now uses
signed image view.
The Harris corner detector example
now uses the Scharr filter generator
and convolve_2d to reduce amount
of code needed.
* Fix and migrate Hessian example
The Hessian example now uses signed
image views and uses newly added kernel
generators to compute gradients
* Fix Harris and Hessian tests
The tests broke due to migration to
signed views in algorithms, but tests
were not adjusted
* Fix Jamfile for example/sobel_scharr.cpp
* Cosmetic changes
* Commented out fail tests
* Fixed pixel16 used in image16s
In Harris and Hessian tests, unsigned
pixel values was used to construct
signed image, which was causing
appveyor to error out.
* Reenable failing targets
* Unify kernel generator interface
This commit makes all kernel
generator functions to return kernel_2d
and adapts dependant threshold
function to use the new interface
* Migrate Hessian and Harris tests
Migrate Hessian and Harris tests to new
interface for kernel generators
* Migrate Harris and Hessian examples
Harris and Hessian examples now use
new interface for kernel generation
* Migrate simple_kernels tests
simple_kernels are now using kernel_2d
interface
* Add missing return
Normalized mean generation had missing
return at the end of the function
* Adapt code to namespace move
This commit reacts to kernel_2d,
convolve_2d being moved to
namespace detail
* Hide convolve_1d and convolve_2d in namespace detail
* Hide kernel_2d in namespace detail.
* Tidy up naming of horizontal/vertical to y/x for kernel center.
Following @lpranam comments on planned changes to convolve_2d,
which will not be ready for Boost 1.72,
@mloskot proposed to hide the function as implementation detail,
https://lists.boost.org/boost-gil/2019/10/0316.php,
until it is ready and @stefanseefeld agreed on the proposal,
https://lists.boost.org/boost-gil/2019/10/0320.php.
* Hessian plain determinant
This commit partially implements
Hessian corner detector, but only
uses determinant as Hessian response
* Implement full Hessian corner detector
This commit complements last one
by summing in a window and applying
det - k * trace * trace formula to
final Hessian response
* Add docs and make code align with docs
This commit adds docs to new functions,
and makes function and variable names
align with docs to not confuse readers
* Use determinant as response function
A-KAZE uses only determinant in it's
response, and since for now Hessian
is only a mean to advance A-KAZE
implementation, response function is
adjusted to use only determinant
* Create simple test for Hessian detector
This commit adds an s at the end of
function name to make it uniform with
another detector, and adds a simple
test for sanity check
* Improve documentations for d params
dx and similar naming seems to be
confusing, improved documentation
to explain the naming convention
* Address minor comments about style
* Address type based issues
Mostly changes to constness and
integral types, with small cosmetic
changes mixed in
* Fix typo and address review comment
Fixes typo in call for Hessian and
addresses a review comment about
replacing multiple exact indexing
calls to one with a reference
* Reorder includes in Hessian example
* Address review comments
Add literature reference to luminosity
computation, and perform some cosmetic
changes.
* Restore previous state of Harris
This is a fresh start of branch
Harris with manual copying and
placement of code from previous
versions
* Use supplied weights in Harris
Weights passed as arguments were not
used prior to this commit
* Address review comments
Mostly moving brackets and adding
const, but also address MSVC's
max macro
* Make namespace qualification consistent
In file numeric.hpp, there is
full qualification, but harris.hpp
didn't have full qualification,
thus full qualification is added to
harris.hpp
* Add copyright and license notice
Split header tests accordingly i.e. test core headers as part of
core tests, numeric extension headers as part of numeric tests, etc.
It extends the convention of sub-directories already established in
`include/boost/gil` directory. It is sensible to follow it in other
areas of the source tree (i.e. `test/`, `doc/` and `benchmark/`).
Another important reason to move the tests is to enable removal of
the top-level `Jamfile` with all its definitions of test-specific
requirements.
The top-level `Jamfile` is not advised, especially if it specifies
build requirements like C++ language version.
Those affect non-tests builds e.g. documentation, causing failures
during generation of HTML documentation (leads to missing docs).
Use type traits and features of C++11, then use Boost.MP11.
Remove unused and unnecessary metafunctions in `detail` namespace.
Remove explicit access to ::type as no longer necessary with MP11.
Clean up and reformat code according to the current guidelines.
Legacy tests have been updated where necessary to accommodate
switch to MP11.
Replace std::is_integral with gil::detail::is_channel_integral
Replacing boost::is_integral with std::is_integral is C++ UB:
C++11 / 20.11.2 Header <type_traits> synopsis
1 The behavior of a program that adds specializations for any
of the class templates defined in this subclause is undefined
unless otherwise specified.
Implements also proposal in #93Closes#229
Rename custom variant with gil_ prefix.
Do not define project ID from Jamfile-s as unnecessary.
The project ID-s and build features are global resources, easy to clash.
Add recently added test/ subdirectories to build.
The constexpr belongs to the declaration specifiers (like static) and
not just the type specifiers (like cv-qualifiers), so it binds to
the declaration (like static), not the type (like const).
Refines #211