Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.0.0 version. skip codacy #25

Merged
merged 41 commits into from
Jan 16, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
41 commits
Select commit Hold shift click to select a range
8097890
A quick cleanup to prepare random forest image matchers
KilianB Dec 6, 2018
98ce751
Cleanup number 2
KilianB Dec 6, 2018
401fdd0
Random forest wip prototype
KilianB Dec 6, 2018
968f5e4
fix javadocs and imports
KilianB Dec 25, 2018
1efe256
nightly save. some progress on the random forest image matchers
KilianB Dec 25, 2018
d956628
Start developing version 3.0.0 fix hash to String method to correclty
KilianB Dec 26, 2018
530b351
Distinguish in supervised and unsupervised matchers. Extract TestData
KilianB Dec 26, 2018
4202c32
Extract tree data in random forest image matcher
KilianB Dec 26, 2018
46a0d3b
fix test cases
KilianB Dec 26, 2018
d17d286
Add optimization criteria for potential use in random forest
KilianB Dec 26, 2018
65188a7
move from float threshold precision to double
KilianB Dec 26, 2018
81fd277
update variable naming. average color hash uses gray values instead of
KilianB Dec 27, 2018
3096753
update javadocs
KilianB Dec 27, 2018
2911c11
Add utility methods to allow each hashing algorithm to implement it's
KilianB Dec 27, 2018
36d9805
add categorical matcher which is a image matcher that clusters images
KilianB Dec 27, 2018
762ae37
3.0.0 reduce technical debt (#21)
KilianB Dec 27, 2018
7c62db3
Make h2 dependency optional. Resolves #16
KilianB Dec 30, 2018
dbca498
add unit tests for h2 image matcher
KilianB Dec 31, 2018
a9a4933
Remove duplicate code by inheriting from ahash.
KilianB Dec 31, 2018
0ddb30d
add missing scope keywords
KilianB Dec 31, 2018
4bfa269
use explicit scoping in unit tests
KilianB Dec 31, 2018
f5d6ab7
remove unused variable
KilianB Dec 31, 2018
93eddaa
more scoping fixes
KilianB Dec 31, 2018
c9079f3
final bad smell refactoring
KilianB Dec 31, 2018
da3db29
Rename H2DbImageMatcher to H2DatabaseImageMatcher
KilianB Jan 2, 2019
afc026d
Swap from big integer to stringbuilder creation
KilianB Jan 6, 2019
61a7c7a
Refactor package structure
KilianB Jan 9, 2019
d9ef1f8
Change hash creation to utilize hashbuilder instead of string builder
KilianB Jan 9, 2019
3b05d4a
Update difference hash creation to utilize hash builder. adjust to image
KilianB Jan 9, 2019
dffa61c
Adjust algorithm id to account for incompatibility
KilianB Jan 9, 2019
06ea9a8
Add fuzzy hash and refactor binary trees
KilianB Jan 9, 2019
6350af0
Add categorical matcher
KilianB Jan 9, 2019
02f2cd9
add categorical matcher part 2
KilianB Jan 9, 2019
4906f41
refactor package structure
KilianB Jan 9, 2019
0107cf0
cleanup packages and update dependencies
KilianB Jan 9, 2019
5f4981b
intermediate progress random forest matcher. Move from in set to
KilianB Jan 9, 2019
579ec86
Batch update. Version 3.0.0 Commit history in private repo
KilianB Jan 16, 2019
794fcb0
update examples and remove createDefaultMatcher
KilianB Jan 16, 2019
5a2dc5a
bump version
KilianB Jan 16, 2019
6726458
Merge branch 'master' into 3.0.0_Image_classifier_and_double_imagemat…
KilianB Jan 16, 2019
d3104fd
Merge branch 'master' into 3.0.0_Image_classifier_and_double_imagemat…
KilianB Jan 16, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge branch 'master' into 3.0.0_Image_classifier_and_double_imagemat…
…cher
  • Loading branch information
KilianB authored Jan 16, 2019
commit 6726458787c238df30f91b3514d182ad74a2b3de
361 changes: 179 additions & 182 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,183 1,180 @@
- Semantic versioning




## [3.0.0] - Unreleased

### Added
- Categorical Matcher. (Clustering matcher)
- Weighted Categorical Matcher (much slower but takes into account more or less important bits)
- Fuzzy hashes
- Haar Wavelet Hash
- Bloom filter for exact hash lookup
- KMeans clustering
- Many additional interfaces and abstract classes
- Warning to perceptive hash that a high res might trigger JTransforms thread pool leading to a delayed jvm exit without intervention.
- create a persistent and in memory version of common matchers.
- a persistent package allowing matchers to be serialized
- RandomForstMatcher for testing purposes
- usage of codacy to decrease technical debt
- Experimental annotation to mark experimental code

#### 9 Gag duplication example
- optional jsoup dependency

### Changed

- Move from float to double precision for algorithm settings.
- Change ImageMatcher.getAlgorithms() to return a unmodifiable map instead of the underlaying collection
- Renamed TestData to LabeledImage
- Make h2 dependency optional. (extract h2 into a separate class)
- Result removed getValue and getDistance
- Increased performance of binary tree by 50% by cutting debug path information.
- Swap out BigInteger for HashBuilder to increase hash construction performance. see https://github.com/KilianB/JImageHash/issues/22
This will increase performance by a great deal (magnitude) for big hash resolutions and a little bit for smaller once. We don't need to do an empty pass to compute the bit resolution anymore.
The bit order flipped with the first added bit being the rightmost bit instead of the leftmost.
- moved TestData class to individual class to allow usage in other parts of the program.
- AColorHash AKernelHash and Median hash now inherit from AverageHash reducing duplicate code
- Make Hash , fuzzy hash BinaryTree,Node,Leaf Serializable
- change packet structure to better reflect persistent and in memory matchers
- shorted readme and put information into wiki

### Fixed
- AverageKernelHash now correctly computes it's hash based on the filtered luminocity compare to the average value instead
of the filtered value compared to the unfiltered value. Now it works more closely in line with aHash This will in turn make hashes created by v 3.0.0 incompatible with older hashes
- a bug which resulted in hashes containing only 0's added to a binary tree creating an additional node


### Removed
- removed unused optional import javax.xml.bind
- GoogleInMemoryDownload exmaple. While useful the returned results are worse as they are not optimized giving the user a false sense of the capability of this library.
- Removed get default matcher. Every problem requires individual algorithms, it's a hassle to keep every matcher supported and simply does not make sense


## [2.1.1] 25.12.2018

### Updated
- Bump Utility code version to 1.5.3 to support custom and exotic image color models.

## [2.1.0] 3.12.2018

### Changed
- DatabaseImageMatcher now checks if an image with the id already exists before adding the image.
- refactor database image matcher tests to fail on sql exception rather than printing stack traces

## [2.0.2] 2.12.2018

### Changed
- Bump version of compiler (3.8.0)
- Bum version of source and javadoc (3.0.1) maven plugin
- Bump version of Surefire plugin (3.0.0-M1)
- Specify html 5 as default javadoc version.

### Added
Database image matcher:
create default matcher with string constructors
- add Images String batch operation.
- add Images with files string batch operatio
- getAllMatchingImages. Method to retrieve all images which matches any other image in the entire database
- getMatchingImagesWithinDistance utility method to circumvent threshold settings.

### Fixed
- unused imports removed in multiple files
- ignore multiple deprecation warnings were applicable

## [2.0.1] 30.11.2018

### Fixed
- Update to UtilityCode 1.5.1 which excludes test resources which got added accidentally due to mvn:clean not being executed before deployment

## [2.0.0] 29.11.2018

#### Note
- Development of version 2.0.0 was a bit all over the place. Commits are out of order and the changelog wasn't accuratly tracked.
Starting now a more tracable documentation and commit behaviour will be enforced.

### Fixed

- Breaking change
- rename hemming to hamming distance
- rename getElementsWithinHemmingDistance to getElementsWithinHammingDistance in binaryTree

- Bumped dependency of github.kilianB.UtilityCode to 1.5.0 utilizing the fix in getScaledImage instance which
would fall back to the old jdk 1 awt implementation decreasing speed by a factor of 600. As well as supporting multiple image types

- removed unnecessary computation of grayscale image in difference hash
- difference hash now computes the padding byte correctly
- Typo in hashing algorithm "bitResoluation" -> "bitResolution". Since this is a protected field
which most likely is used in any derived hashing algorithm this is classified as a breaking change!
- Due to a major version bump the dHash will be revisited and it's implementation
might change to not waste one bit. This will lead to all created hashes so far to be invalidated. The algorithm id of dHash will be updated
accordingly.

### Changed

- Update JUnit to 5.3.1
- The hashing algorithm was refactored and now has to implement a different method signature returning a big integer instead of a hash object.
In preparation to drop the no information 1 padding bit
- Starting with version 2 hashes now use Luminosity as given by YCrCb instead of interpolated grayscale values.
- The bitResolution argument in hashing algorithms now follows the contract that the resulting hash has at least the number of bits specified.. All hash algorithms are updated to follow the earlier mentioned rule.
Additionally the precomputation step of images now allows a 1 pixel deviation between width and height to allow for closer matching images.
- Hash classes migrate to use FastPixel access speeding up creation of higher key hashes by magnitude
- test cases to reflect changes
- the algorithm id of each algorithm is altered to reflect incompatibility.
- default image matchers have different thresholds due to changed key precisions returned by default algorithm settings

### Added
- Minor javadocs addition
- dependency on UtilityCode com.github.kilianB
- Hashing algorithms are serializable
- Rotational Invariant hasher (RotPHash, Rotational)
- WIP - Hog-Hash
- Database image matcher
- Algorithm Benchmarker
- add equals and hashcode to image matcher
- ImageMatcher results now also reference the normalized distance
- CummulativeInMemoryMatcher
- getBit and getBitUnsafe to Hash.java to retrieve individual bits without needing to access the underlying big integer object.
- added tests
- Add AverageColorHash
- multiple differen hog variants
- kernels and filters


## [1.0.2] - 24.9.2018

### Added
- .editorconfig file for github aesthetics

### Changed
- added xml header to pom allowing for valid resolve via maven


## [1.0.1] - 4.8.2018

### Changed
- removed example dependencies from compiled repository jars

## [1.0.0] - 4.8.2018
- Initial version pushed to Bintray and JCenter
### Changed
- Updated javadocs to comply with maven javadoc plugin
- Smaller bugfixed mainly for the examples

## [0.1.0] - 3.8.2018
### Added
- BinaryTree class to save & compare precomputed hashes
- UnitTests for hash algorithms and basic matchers
- Examples
- Extensive gui example
- Algorithm identifiers preventing mismatching hashes to be compared
- InMemoryImageMatcher to match a batch of images
- Added more default presets for the default matchers.

### Changed
- Preparation for maven distribution. Changed package structure
- Using a dedicated Hash class instead of a BigInteger to represent hash results
- Renamed ImageMatcher to SingleImagematcher

## [0.0.8] -
### Added
- MIT License
- Semantic versioning


## [3.0.0] - 16.01.2019

### Added
- Categorical Matcher. (Clustering matcher)
- Weighted Categorical Matcher (much slower but takes into account more or less important bits)
- Fuzzy hashes
- Haar Wavelet Hash
- Bloom filter for exact hash lookup
- KMeans clustering
- Many additional interfaces and abstract classes
- Warning to perceptive hash that a high res might trigger JTransforms thread pool leading to a delayed jvm exit without intervention.
- create a persistent and in memory version of common matchers.
- a persistent package allowing matchers to be serialized
- RandomForstMatcher for testing purposes
- usage of codacy to decrease technical debt
- Experimental annotation to mark experimental code

#### 9 Gag duplication example
- optional jsoup dependency

### Changed

- Move from float to double precision for algorithm settings.
- Change ImageMatcher.getAlgorithms() to return a unmodifiable map instead of the underlaying collection
- Renamed TestData to LabeledImage
- Make h2 dependency optional. (extract h2 into a separate class)
- Result removed getValue and getDistance
- Increased performance of binary tree by 50% by cutting debug path information.
- Swap out BigInteger for HashBuilder to increase hash construction performance. see https://github.com/KilianB/JImageHash/issues/22
This will increase performance by a great deal (magnitude) for big hash resolutions and a little bit for smaller once. We don't need to do an empty pass to compute the bit resolution anymore.
The bit order flipped with the first added bit being the rightmost bit instead of the leftmost.
- moved TestData class to individual class to allow usage in other parts of the program.
- AColorHash AKernelHash and Median hash now inherit from AverageHash reducing duplicate code
- Make Hash , fuzzy hash BinaryTree,Node,Leaf Serializable
- change packet structure to better reflect persistent and in memory matchers
- shorted readme and put information into wiki

### Fixed
- AverageKernelHash now correctly computes it's hash based on the filtered luminocity compare to the average value instead
of the filtered value compared to the unfiltered value. Now it works more closely in line with aHash This will in turn make hashes created by v 3.0.0 incompatible with older hashes
- a bug which resulted in hashes containing only 0's added to a binary tree creating an additional node


### Removed
- removed unused optional import javax.xml.bind
- GoogleInMemoryDownload exmaple. While useful the returned results are worse as they are not optimized giving the user a false sense of the capability of this library.
- Removed get default matcher. Every problem requires individual algorithms, it's a hassle to keep every matcher supported and simply does not make sense

## [2.1.1] 25.12.2018

### Updated
- Bump Utility code version to 1.5.3 to support custom and exotic image color models.

## [2.1.0] 3.12.2018

### Changed
- DatabaseImageMatcher now checks if an image with the id already exists before adding the image.
- refactor database image matcher tests to fail on sql exception rather than printing stack traces

## [2.0.2] 2.12.2018

### Changed
- Bump version of compiler (3.8.0)
- Bum version of source and javadoc (3.0.1) maven plugin
- Bump version of Surefire plugin (3.0.0-M1)
- Specify html 5 as default javadoc version.

### Added
Database image matcher:
create default matcher with string constructors
- add Images String batch operation.
- add Images with files string batch operatio
- getAllMatchingImages. Method to retrieve all images which matches any other image in the entire database
- getMatchingImagesWithinDistance utility method to circumvent threshold settings.

### Fixed
- unused imports removed in multiple files
- ignore multiple deprecation warnings were applicable

## [2.0.1] 30.11.2018

### Fixed
- Update to UtilityCode 1.5.1 which excludes test resources which got added accidentally due to mvn:clean not being executed before deployment

## [2.0.0] 29.11.2018

#### Note
- Development of version 2.0.0 was a bit all over the place. Commits are out of order and the changelog wasn't accuratly tracked.
Starting now a more tracable documentation and commit behaviour will be enforced.

### Fixed

- Breaking change
- rename hemming to hamming distance
- rename getElementsWithinHemmingDistance to getElementsWithinHammingDistance in binaryTree

- Bumped dependency of github.kilianB.UtilityCode to 1.5.0 utilizing the fix in getScaledImage instance which
would fall back to the old jdk 1 awt implementation decreasing speed by a factor of 600. As well as supporting multiple image types

- removed unnecessary computation of grayscale image in difference hash
- difference hash now computes the padding byte correctly
- Typo in hashing algorithm "bitResoluation" -> "bitResolution". Since this is a protected field
which most likely is used in any derived hashing algorithm this is classified as a breaking change!
- Due to a major version bump the dHash will be revisited and it's implementation
might change to not waste one bit. This will lead to all created hashes so far to be invalidated. The algorithm id of dHash will be updated
accordingly.

### Changed

- Update JUnit to 5.3.1
- The hashing algorithm was refactored and now has to implement a different method signature returning a big integer instead of a hash object.
In preparation to drop the no information 1 padding bit
- Starting with version 2 hashes now use Luminosity as given by YCrCb instead of interpolated grayscale values.
- The bitResolution argument in hashing algorithms now follows the contract that the resulting hash has at least the number of bits specified.. All hash algorithms are updated to follow the earlier mentioned rule.
Additionally the precomputation step of images now allows a 1 pixel deviation between width and height to allow for closer matching images.
- Hash classes migrate to use FastPixel access speeding up creation of higher key hashes by magnitude
- test cases to reflect changes
- the algorithm id of each algorithm is altered to reflect incompatibility.
- default image matchers have different thresholds due to changed key precisions returned by default algorithm settings

### Added
- Minor javadocs addition
- dependency on UtilityCode com.github.kilianB
- Hashing algorithms are serializable
- Rotational Invariant hasher (RotPHash, Rotational)
- WIP - Hog-Hash
- Database image matcher
- Algorithm Benchmarker
- add equals and hashcode to image matcher
- ImageMatcher results now also reference the normalized distance
- CummulativeInMemoryMatcher
- getBit and getBitUnsafe to Hash.java to retrieve individual bits without needing to access the underlying big integer object.
- added tests
- Add AverageColorHash
- multiple differen hog variants
- kernels and filters


## [1.0.2] - 24.9.2018

### Added
- .editorconfig file for github aesthetics

### Changed
- added xml header to pom allowing for valid resolve via maven


## [1.0.1] - 4.8.2018

### Changed
- removed example dependencies from compiled repository jars

## [1.0.0] - 4.8.2018
- Initial version pushed to Bintray and JCenter
### Changed
- Updated javadocs to comply with maven javadoc plugin
- Smaller bugfixed mainly for the examples

## [0.1.0] - 3.8.2018
### Added
- BinaryTree class to save & compare precomputed hashes
- UnitTests for hash algorithms and basic matchers
- Examples
- Extensive gui example
- Algorithm identifiers preventing mismatching hashes to be compared
- InMemoryImageMatcher to match a batch of images
- Added more default presets for the default matchers.

### Changed
- Preparation for maven distribution. Changed package structure
- Using a dedicated Hash class instead of a BigInteger to represent hash results
- Renamed ImageMatcher to SingleImagematcher

## [0.0.8] -
### Added
- MIT License
- usage of changelog
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.