Skip to content

Releases: aastopher/imgdd

Rust imgdd 0.1.3

07 Feb 02:29
3dcfca5

Choose a tag to compare

  • Code Cleanup:
    Simplified and refactored parts of the codebase to improve readability and maintainability.

  • Documentation Alignment:
    Updated and aligned documentation across the repository to ensure consistency and clarity.

  • Minor Fixes for imgddcore:
    Addressed several minor issues within imgddcore, for improved stability and performance.

  • GitHub Actions Refinements:
    Enhanced our CI/CD workflows by refining GitHub Actions. These improvements include better artifact handling, more robust version validation, and streamlined documentation deployment.

Python imgdd 0.1.5

07 Feb 02:30
3dcfca5

Choose a tag to compare

  • Code Cleanup:
    Simplified and refactored parts of the codebase to improve readability and maintainability.

  • Documentation Alignment:
    Updated and aligned documentation across the repository to ensure consistency and clarity.

  • Minor Fixes for imgddcore:
    Addressed several minor issues within imgddcore, for improved stability and performance.

  • GitHub Actions Refinements:
    Enhanced our CI/CD workflows by refining GitHub Actions. These improvements include better artifact handling, more robust version validation, and streamlined documentation deployment.

rs-v0.1.2

05 Feb 07:03
4000d4f

Choose a tag to compare

What's Changed

Full Changelog: py-v0.1.3...rs-v0.1.2

aHash

  • Reversed Bit Order:
    Now uses 1 << (63 - i) so that the most significant bit corresponds to the first pixel, matching imagehash’s convention.

mHash

  • Reversed Bit Order:
    Bit order is reversed (using 1 << (63 - i)) to align with other hash types.
  • Optimized Median Calculation:
    Uses Rust’s select_nth_unstable to compute the median in O(n) time instead of a full sort.

dHash

  • Optimized Loop Structure:
    Retrieves the first pixel outside the inner loop (iterating from x = 1 to 8) to avoid redundant calls.

pHash

  • Refined DCT Processing:
    Applies the DCT row‑wise and then column‑wise in place using a fixed‑size temporary array.
  • DC Exclusion in Median Calculation:
    Extracts the top‑left 8×8 DCT coefficients and excludes the DC component when computing the median.
  • O(n) Median Computation:
    Uses select_nth_unstable_by to find median in O(n).
  • Reversed Bit Order:
    Final hash bits are reversed (using 1 << (63 - i)) for consistency with the other algorithms.
  • Result:
    Produces a pHash that is consistent with imagehash.

wHash (Wavelet Hash)

  • Reversed Bit Order:
    Now uses 1 << (63 - i) so that the most significant bit corresponds to the first pixel, matching imagehash’s convention.
  • Haar Transform via dwt Crate:
    Implement Haar transform functions from the dwt crate.
  • Zeroing DC Coefficient:
    Immediately zero out the DC coefficient after forward transform.
  • O(n) Median Calculation:
    Clones transformed pixel vector and uses select_nth_unstable_by to find median in O(n).
  • Hash Generation:
    Iterates over the reconstructed coefficients from the inverse Haar transform, setting bits based on the median, to conform to imagehash’s output.
  • Result:
    Produces a wHash that is consistent with imagehash.

Each change was made to improve performance, and ensure consistent bit ordering across all hash types, and simplify the implementations and align hash output with imagehash for consistency.

py-v0.1.4

05 Feb 07:03
4000d4f

Choose a tag to compare

What's Changed

Full Changelog: py-v0.1.3...py-v0.1.4

aHash

  • Reversed Bit Order:
    Now uses 1 << (63 - i) so that the most significant bit corresponds to the first pixel, matching imagehash’s convention.

mHash

  • Reversed Bit Order:
    Bit order is reversed (using 1 << (63 - i)) to align with other hash types.
  • Optimized Median Calculation:
    Uses Rust’s select_nth_unstable to compute the median in O(n) time instead of a full sort.

dHash

  • Optimized Loop Structure:
    Retrieves the first pixel outside the inner loop (iterating from x = 1 to 8) to avoid redundant calls.

pHash

  • Refined DCT Processing:
    Applies the DCT row‑wise and then column‑wise in place using a fixed‑size temporary array.
  • DC Exclusion in Median Calculation:
    Extracts the top‑left 8×8 DCT coefficients and excludes the DC component when computing the median.
  • O(n) Median Computation:
    Uses select_nth_unstable_by to find median in O(n).
  • Reversed Bit Order:
    Final hash bits are reversed (using 1 << (63 - i)) for consistency with the other algorithms.
  • Result:
    Produces a pHash that is consistent with imagehash.

wHash (Wavelet Hash)

  • Reversed Bit Order:
    Now uses 1 << (63 - i) so that the most significant bit corresponds to the first pixel, matching imagehash’s convention.
  • Haar Transform via dwt Crate:
    Implement Haar transform functions from the dwt crate.
  • Zeroing DC Coefficient:
    Immediately zero out the DC coefficient after forward transform.
  • O(n) Median Calculation:
    Clones transformed pixel vector and uses select_nth_unstable_by to find median in O(n).
  • Hash Generation:
    Iterates over the reconstructed coefficients from the inverse Haar transform, setting bits based on the median, to conform to imagehash’s output.
  • Result:
    Produces a wHash that is consistent with imagehash.

Each change was made to improve performance, and ensure consistent bit ordering across all hash types, and simplify the implementations and align hash output with imagehash for consistency.

init imgddpy

31 Jan 03:15
edda38b

Choose a tag to compare

init imgddpy

meta detail alignment

30 Jan 04:47

Choose a tag to compare

release updated docs and quick meta detail alignment

Full Changelog: rs-v0.1.0...rs-v0.1.1

init imgdd

30 Jan 04:27

Choose a tag to compare

initial release of rust imgdd

What's Changed

Full Changelog: https://github.com/aastopher/imgdd/commits/rs-v0.1.0

bad release

30 Jan 06:31

Choose a tag to compare

bad release

init imgdd python

30 Jan 05:03

Choose a tag to compare

init imgdd python

Full Changelog: rs-v0.1.1...py-v0.1.0