Commit Graph

849 Commits

Author SHA1 Message Date
Mateusz Łoskot
4325be7f7d
Merge branch 'develop'
* develop:
  README.md: Add link to release notes
2019-11-26 01:36:44 +01:00
Mateusz Łoskot
ffdbf4e249
README.md: Add link to release notes [ci skip] 2019-11-26 01:35:35 +01:00
Mateusz Łoskot
32ea8a6f87
Merge branch 'develop'
* develop:
  Import pre-Boost history of GIL by Adobe to release notes (#405)
2019-11-26 01:32:02 +01:00
Mateusz Łoskot
19c4efa3bc
Import pre-Boost history of GIL by Adobe to release notes (#405) [ci skip]
The log of significant changes prior the first release of GIL as part
of Boost was collected from https://stlab.adobe.com/gil/news.html site
and from the linked PDF documents with detailed descriptions.

The old history is very detailed (after the PDFs) but it is intersting.
It illustrates evolution of the library design and API, for example,
renaming of types or functions were renamed indicates evolution of
semantics and inter-relations of the library elements.
This is especially interseting in case of the complex types like
bit-aligned pixels and images, where does the concept of memunit
come from, etc.
2019-11-26 01:29:03 +01:00
Mateusz Łoskot
74a7b52799
Merge branch 'develop' for Boost 1.72 release
* develop:
  Update Boost 1.72.0 release notes with PR #403
  Mention C++11 in meta/libraries.json
  Add release notes in Markdown format (#404)
  Typo in README
  Remove include/boost/gil/version.hpp file as unused (#403)
  Add Markdown linting with Node package markdownlint
  doc/README.md: clarify steps building docs
  CONTRIBUTING.md: Remove logo as unnecessary
  README.md: Fix FreeNode link and hash escape
2019-11-23 21:16:33 +01:00
Mateusz Łoskot
9b58a2ab9b
Update Boost 1.72.0 release notes with PR #403 [ci skip] 2019-11-23 21:15:39 +01:00
Mateusz Łoskot
cc311eb8ed
Mention C++11 in meta/libraries.json
There is no way to indicate required version of C++ standard,
but it can be mentioned in the description and displayed in
the boost.org/libs listings, see details at
https://lists.boost.org/Archives/boost/2019/11/247385.php
2019-11-18 23:15:12 +01:00
Mateusz Łoskot
c24e8b2518
Add release notes in Markdown format (#404) [ci skip]
This proposes to use Git to maintain notes about all notable changes to
GIL in `RELEASES.md` file based on https://keepachangelog.com format.
This implements proposal discussed and agreed in the thread
https://lists.boost.org/boost-gil/2019/11/0336.php

Collect all past release notes.
Collect release notes for the pending Boost 1.72.0, to be released
in December according to Boost release schedule.
2019-11-11 18:02:32 +01:00
Mateusz Łoskot
60e579b84d
Typo in README [ci skip] 2019-11-10 22:31:27 +01:00
Mateusz Łoskot
84b155630d
Remove include/boost/gil/version.hpp file as unused (#403)
Motivation:

  - GIL is part of Boost collection, so Boost version is sufficient
  - GIL version makes little sense unless GIL becomes independent
  - Two distinct version numbers, Boost's and GIL's, are confusing.
  - Role of GIL's version number is not documented thus not entirely clear

The removal was discussed and agreed upon in this thread
https://lists.boost.org/boost-gil/2019/11/0346.php
2019-11-09 23:09:09 +01:00
Mateusz Łoskot
9f5f24affd
Add Markdown linting with Node package markdownlint [ci skip] 2019-11-04 23:54:18 +01:00
Mateusz Łoskot
cb5b2e0ece
doc/README.md: clarify steps building docs [ci skip] 2019-11-04 23:09:14 +01:00
Mateusz Łoskot
e2c26ce2cc
CONTRIBUTING.md: Remove logo as unnecessary [ci skip] 2019-11-03 23:23:17 +01:00
Mateusz Łoskot
19eed887e2
README.md: Fix FreeNode link and hash escape [ci skip] 2019-11-03 22:58:40 +01:00
Mateusz Łoskot
100b8e32b4
[cmake] Rationalise names of tests vs targets
Cherry-picked from develop branch commit 4dc3836449
ignoring changes in all `CMakeLists.txt` files but this one
`test/extension/toolbox/CMakeLists.txt` which somehow missed the changes.
Possibly due to my mistake during previous cherry-picks to compose
the emergency fix #394 for docs in `master` branch, that also
brought the restructuring of the tests directories.

Missing changes in `test/extension/toolbox/CMakeLists.txt` file
are currently causing failures of AzP builds using CMake
for `master` Boost 1.72 merge e8a04f403e
This is attempt to fix it in the `master`.
2019-10-30 10:25:41 +01:00
Stefan Seefeld
e8a04f403e Merge branch 'develop' for Boost 1.72 release. 2019-10-29 16:54:55 -04:00
Olzhas Zhumabek
62379dd5b9
Implement Sobel and Scharr operators (#392)
* 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
2019-10-29 22:38:04 +06:00
Mateusz Łoskot
20f511b7d0
Flatten structure of test/extension/io/output/ folder (#400)
There is no need for format-specific subfolders.
There is no code in place that checks if all those folders exist and
creates them.
This change simplifies the structure to simplify running of I/O tests.

Rename images/jpg/ to images/jpeg/ in tests
The `jpeg` is name of the format used in the I/O extension and
the folders inside `images/` are named after those formats.
2019-10-29 08:59:55 +01:00
Mateusz Łoskot
29208c7301
Fix void istream_device::read function returning a value (#399)
Tidy up istream_device::read function format
2019-10-29 08:56:54 +01:00
Mateusz Łoskot
1007627601
Add GIL_ENABLE_EXT_DYNAMIC_IMAGE to CMakeSettings.json example [ci skip] 2019-10-28 23:10:41 +01:00
Pranam Lashkari
146d81bb7e Update extend_boundary function to handle all boundary_option-s (#398)
Closes #391
2019-10-28 17:19:27 +01:00
Mateusz Łoskot
8235ee645a
Hide convolve_1d, convolve_2d and kernel_2 in namespace detail (#397)
* 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.
2019-10-24 12:50:56 +02:00
Mateusz Łoskot
7ff2730f45
Remove threshold_optimal_value::triangle enumerator as not implemented
This is part of planned work that has not been completed yet, see
@lpranam comments https://lists.boost.org/boost-gil/2019/10/0315.php
2019-10-23 21:49:14 +02:00
MIRAL SHAH
8f1bd53fec
Implemented median_filter (#393)
tests for median_filter added
2019-10-15 10:12:54 +05:30
Mateusz Łoskot
c3e1fb767a
CMake: Add Boost version 1.72 to CMakeSettings.json for VS 2019-10-13 18:10:05 +02:00
Mateusz Łoskot
d583d2b90c
CMake: Require Boost 1.68 as first release of C++11 GIL 2019-10-13 18:09:02 +02:00
Mateusz Łoskot
427b3f0f57
Update documentation on dependencies required by tests and examples [ci skip] 2019-10-10 12:27:02 +02:00
Mateusz Łoskot
1d9fe2cff1
Merge pull request #394 from mloskot/ml/emergency-master-fix-for-docs-build-bug-351
Emergency cherry-picks to fix documentation build in master

Fixes #351
2019-09-30 19:33:31 +02:00
Mateusz Łoskot
f2697e61d4
[travis] Remove llvm-toolchain-trusty-6.0 source [skip appveyor]
Packages clang-6.0 (and 4.0 and 5.0) are available from Xenial's
default Apt package sources.

[skip azp]

(cherry picked from develop branch commit d0cb17adef)
2019-09-26 18:09:15 +02:00
Mateusz Łoskot
95127299da
[travis] Replace clang 5.0 with 6.0 for UBSAN builds [skip appveyor]
[skip azp]

(cherry picked from develop branch commit 99f813846a)
2019-09-26 16:18:51 +02:00
Mateusz Łoskot
25b710da2b
Add minimal top-level Jamfile to run test/ project
Related to #302

(cherry picked from develop branch commit 628bfc2b65)
2019-09-26 11:43:33 +02:00
Mateusz Łoskot
96df5442bc
Move tests of extensions inside test/ directory (#302)
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).

(cherry picked from develop branch commit 4ed7701b47)
2019-09-26 11:43:13 +02:00
Pranam Lashkari
90f6fc04ed convolve_boundary_option renamed to boundary_option (#390)
`boundary_option` moved to `numeric/algorithm.hpp`

Closes #387
2019-09-18 11:48:20 +02:00
Mateusz Łoskot
fbec8a3aa4
[doc] Split design guide into multiple pages (#389)
Improve some titles and re-arrange several sections (e.g. in Metafunctions).
Remove section about I/O extension from design guide as outdated and
unnecessary (in design guide).
2019-09-06 17:09:23 +02:00
Pranam Lashkari
6a1c99a33c Implement image boundary extension algorithm (#386) 2019-09-05 20:47:21 +02:00
Mateusz Łoskot
e7d8f1eeec
[doc] Point link to download to GitHub not self, the website 2019-09-03 22:02:03 +02:00
Mateusz Łoskot
3a668fbe14
[doc] Indicate GIL is C++11 library 2019-09-03 21:04:58 +02:00
Mateusz Łoskot
1f75e85300
[doc] Remove incomplete copyright info from Sphinx config [ci skip] 2019-09-03 20:21:40 +02:00
Mateusz Łoskot
968cc0847b
[doc] Remove incorrect and confusing version number from Sphinx config 2019-09-03 20:16:23 +02:00
Mateusz Łoskot
6f7d0a1180
[doc] Add footer with 'last built on' timestamp and Sphinx version
Since list of contributors who are copyright holders is quite long,
remove the copyright information from the footer. It would be better
to add acknowledgments and contributors list on separate page, or
simply link to https://github.com/boostorg/gil/graphs/contributors
2019-09-03 20:07:49 +02:00
Mateusz Łoskot
b342bdd462
[doc] Improve structure of image_processing/ node 2019-09-03 18:10:04 +02:00
Mateusz Łoskot
a2b582c2c6
[doc] Remove superfluous .rst extension from pages listing
Move image processing sections before I/O extension page.
Refines #388
2019-09-03 14:33:19 +02:00
Olzhas Zhumabek
6d61de0765
Image Processing docs (#388)
* Fill values, links and images

This commit fills in the template
left by the previous commit

* Replace Mathjax with code blocks

Since GitHub doesn't allow Mathjax,
the formula parts have been replaced
with code blocks

* Remove section on affine transformation

It doesn't seem like the concept is
used often, so postponed for now

* Add basic explanation of convolution

* Docs for Harris and Hessian

The docs are written with a beginner
in mind and has a basics section.
The pictures and paper links are to be
inserted.

* Convert markdown to rst

* Add some more relevant papers

This commit cites and adds a link to
paper about Hessian detector and
a review paper about affine region
detectors

* Move to new concept name

Space extrema detector doesn't seem to
be a widespread usage of detector the
detector class. There is a paper
that uses "Affine region detector"
term, which has quite a few citations

* Fix mistakes in docs

Fix mistakes related to terminology
and algorithm steps

* Add ip docs to index.rst

Make sure ip docs are built and are
in the final output

* Fix formatting

It seems like some lines are not
properly formatted and rendered file
containes unreadable lines. Fixed
by not formatting it.
2019-09-03 08:43:41 +06:00
Jean-David Gadina
bd00f91b07 Fix crash when reading PNG files with an invalid header (#385)
Removed assertions, as they prevent the expected
`std::ios_base::failure` exception to be caught in such a case.
2019-08-26 19:41:58 +02:00
MIRAL SHAH
124f621914
implemented box_filter (#383)
implemented `blur` function

tests added for `box_filter`

closes #382
2019-08-22 00:26:36 +05:30
Olzhas Zhumabek
5c52dff369
Hessian corner detector (#364)
* 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.
2019-08-21 09:37:53 +03:00
Olzhas Zhumabek
65fda3cf7b
Harris response computation (#350)
* 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
2019-08-21 06:06:29 +03:00
MIRAL SHAH
5f612ccf7a
added definition of gaussian adaptive threshold (#379)
closes #316
2019-08-20 02:04:11 +05:30
MIRAL SHAH
f6c502be02 Fix Boost guidelines violations (#378)
Add copyright notice.
Add protection from the min/max macro.

Closes #376
2019-08-09 17:36:37 +02:00
Mateusz Łoskot
9e76b8b5bf
Mark all non-simple build targets of extension/io as explicit (#370)
This addresses issues during the Boost regression runs, where builders
only provide popular third-party libraries (i.e. libraw is missing).
2019-08-09 10:50:58 +02:00