phashion 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +13 -5
- data/CHANGES.md +8 -9
- data/lib/phashion.rb +12 -2
- data/lib/phashion/version.rb +1 -1
- data/test/test_phashion.rb +19 -2
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
!binary
|
6
|
-
|
7
|
-
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MDIxY2E0ZDAwODcwMjNhMjk1NzQyMTg5ZmU3NGE3MGYxY2YzMTJjZA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MDU4NmM0NGQxZmYzMzkxZGQ5ZmYzOTUxYzFhMDk0MjIxYzQ5ZDAzNw==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NTRhZDJjZDFiNGVlZDhjZGQ0ZjgwMGU5OWRiNjA4MTUxMzExNDVhYmM2NGZh
|
10
|
+
MjJkYTYyNDZiZTYyZWU1NmZhODg4ZDMxNDM3ZTA4YTU2Y2YyOTgzZDA0NDVk
|
11
|
+
OGUzNzg4NWVjODI3ZjQ4ODljMjkyNWYxYmNjYTc1NWQwODExNWY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NjA2NDI5YTdkMjRmNGQ0ZDgwNDAwZGI5NjA0NTEzNThkY2NlZWFkMDUzMWI5
|
14
|
+
ODM3NWRmN2U1YmViYTUwMjA4ZGE3ZjI3OTVkZjBlZjNiZGZkNWFmZmJlNzc4
|
15
|
+
ZjgzOTM0YWIxMzg4NGUyMDFmNDFlM2E2MDU2ODdkMDc5N2I2Mjc=
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
History
|
2
|
-
|
2
|
+
=======
|
3
|
+
|
4
|
+
1.1.1
|
5
|
+
-----
|
6
|
+
* Added Ruby method to call into pHash's Mexican Hat Wavelet funcition (issue #37, Terence Lee / @hone)
|
7
|
+
* Removed duplicate version reference
|
3
8
|
|
4
9
|
1.1.0
|
5
10
|
-----
|
@@ -9,7 +14,7 @@ History
|
|
9
14
|
|
10
15
|
1.0.8
|
11
16
|
------
|
12
|
-
* Renamed the pHashion tar.gz archive as "pHash-0.9.6.tar.gz" to solve/enable install from github
|
17
|
+
* Renamed the pHashion tar.gz archive as "pHash-0.9.6.tar.gz" to solve/enable install from github.
|
13
18
|
|
14
19
|
1.0.7
|
15
20
|
------
|
@@ -27,29 +32,24 @@ History
|
|
27
32
|
|
28
33
|
1.0.5
|
29
34
|
-------
|
30
|
-
|
31
35
|
* Fix CImg.h compilation problems. [#10]
|
32
36
|
|
33
37
|
1.0.4
|
34
38
|
-------
|
35
|
-
|
36
39
|
* Fix pthread linking on Ubuntu 11.04
|
37
40
|
|
38
41
|
1.0.3
|
39
42
|
-------
|
40
|
-
|
41
43
|
* Update pHash to version 0.9.3 and CImg 1.4.7.
|
42
44
|
* Fix a few build issues.
|
43
45
|
|
44
46
|
1.0.2
|
45
47
|
-------
|
46
|
-
|
47
48
|
* Make installation much easier by distributing and building locally all the native dependencies.
|
48
49
|
This includes pHash 0.9.0 and CImg 1.3.4.
|
49
50
|
|
50
51
|
1.0.1
|
51
52
|
-------
|
52
|
-
|
53
53
|
* Remove RubyInline, use standard Ruby extension infrastructure.
|
54
54
|
* Update duplicate threshold constant based on wider image testing.
|
55
55
|
* Make duplicate threshold variable so users can tune it based on their dataset.
|
@@ -58,5 +58,4 @@ History
|
|
58
58
|
|
59
59
|
1.0.0
|
60
60
|
-------
|
61
|
-
|
62
|
-
Initial release.
|
61
|
+
* Initial release.
|
data/lib/phashion.rb
CHANGED
@@ -9,8 +9,6 @@
|
|
9
9
|
require 'rbconfig'
|
10
10
|
|
11
11
|
module Phashion
|
12
|
-
VERSION = '1.0.8'
|
13
|
-
|
14
12
|
class Image
|
15
13
|
DEFAULT_DUPE_THRESHOLD = 15
|
16
14
|
|
@@ -24,6 +22,10 @@ module Phashion
|
|
24
22
|
Phashion.hamming_distance(fingerprint, other.fingerprint)
|
25
23
|
end
|
26
24
|
|
25
|
+
def mh_distance_from(other)
|
26
|
+
Phashion.hamming_distance2(mh_fingerprint, other.mh_fingerprint)
|
27
|
+
end
|
28
|
+
|
27
29
|
def duplicate?(other, opts={})
|
28
30
|
threshold = opts[:threshold] || DEFAULT_DUPE_THRESHOLD
|
29
31
|
|
@@ -33,6 +35,14 @@ module Phashion
|
|
33
35
|
def fingerprint
|
34
36
|
@hash ||= Phashion.image_hash_for(@filename)
|
35
37
|
end
|
38
|
+
|
39
|
+
def mh_fingerprint
|
40
|
+
@mh_hash ||= Phashion.mh_hash_for(@filename)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.mh_hash_for(filename, alpha = 2.0, lvl = 1.0)
|
45
|
+
_mh_hash_for(filename, alpha, lvl)
|
36
46
|
end
|
37
47
|
|
38
48
|
def self.so_file
|
data/lib/phashion/version.rb
CHANGED
data/test/test_phashion.rb
CHANGED
@@ -50,6 +50,25 @@ class TestPhashion < Minitest::Test
|
|
50
50
|
assert_equal expected, rows.first.first
|
51
51
|
end
|
52
52
|
|
53
|
+
def test_mh_hash_for
|
54
|
+
jpg = File.dirname(__FILE__) + '/jpg/Broccoli_Super_Food.jpg'
|
55
|
+
png = File.dirname(__FILE__) + '/png/Broccoli_Super_Food.png'
|
56
|
+
|
57
|
+
hash1 = Phashion.mh_hash_for jpg
|
58
|
+
hash2 = Phashion.mh_hash_for png
|
59
|
+
|
60
|
+
assert_kind_of Array, hash1
|
61
|
+
assert_kind_of Array, hash2
|
62
|
+
assert_in_delta 0.100, Phashion.hamming_distance2(hash1, hash2), 0.028
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_mh_distance_from
|
66
|
+
jpg = File.dirname(__FILE__) + '/jpg/Broccoli_Super_Food.jpg'
|
67
|
+
png = File.dirname(__FILE__) + '/png/Broccoli_Super_Food.png'
|
68
|
+
|
69
|
+
assert_in_delta 0.100, Phashion::Image.new(jpg).mh_distance_from(Phashion::Image.new(png)), 0.028
|
70
|
+
end
|
71
|
+
|
53
72
|
def test_duplicate_detection
|
54
73
|
files = %w(86x86-0a1e.jpeg 86x86-83d6.jpeg 86x86-a855.jpeg)
|
55
74
|
images = files.map {|f| Phashion::Image.new("#{File.dirname(__FILE__) + '/../test/jpg/'}#{f}")}
|
@@ -58,8 +77,6 @@ class TestPhashion < Minitest::Test
|
|
58
77
|
assert_duplicate images[0], images[2]
|
59
78
|
end
|
60
79
|
|
61
|
-
|
62
|
-
|
63
80
|
def test_duplicate_detection_2
|
64
81
|
files = %w(b32aade8c590e2d776c24f35868f0c7a588f51e1.jpeg df9cc82f5b32d7463f36620c61854fde9d939f7f.jpeg e7397898a7e395c2524978a5e64de0efabf08290.jpeg)
|
65
82
|
images = files.map {|f| Phashion::Image.new("#{File.dirname(__FILE__) + '/../test/jpg/'}#{f}")}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phashion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Perham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
114
|
version: '0'
|
115
115
|
requirements: []
|
116
116
|
rubyforge_project:
|
117
|
-
rubygems_version: 2.
|
117
|
+
rubygems_version: 2.2.2
|
118
118
|
signing_key:
|
119
119
|
specification_version: 4
|
120
120
|
summary: Simple wrapper around the pHash library
|
@@ -140,4 +140,3 @@ test_files:
|
|
140
140
|
- test/png/grass.png
|
141
141
|
- test/png/linux.png
|
142
142
|
- test/test_phashion.rb
|
143
|
-
has_rdoc:
|