sqed 0.0.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.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +27 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +18 -0
  5. data/Gemfile +7 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +36 -0
  8. data/Rakefile +9 -0
  9. data/lib/sqed.rb +111 -0
  10. data/lib/sqed/boundaries.rb +79 -0
  11. data/lib/sqed/boundary_finder.rb +150 -0
  12. data/lib/sqed/boundary_finder/color_line_finder.rb +83 -0
  13. data/lib/sqed/boundary_finder/cross_finder.rb +23 -0
  14. data/lib/sqed/boundary_finder/stage_finder.rb +139 -0
  15. data/lib/sqed/extractor.rb +45 -0
  16. data/lib/sqed/parser.rb +11 -0
  17. data/lib/sqed/parser/barcode_parser.rb +27 -0
  18. data/lib/sqed/parser/ocr_parser.rb +52 -0
  19. data/lib/sqed/result.rb +15 -0
  20. data/lib/sqed/version.rb +3 -0
  21. data/lib/sqed_config.rb +112 -0
  22. data/spec/lib/sqed/boundaries_spec.rb +35 -0
  23. data/spec/lib/sqed/boundary_finder/color_line_finder_spec.rb +167 -0
  24. data/spec/lib/sqed/boundary_finder/cross_finder_spec.rb +28 -0
  25. data/spec/lib/sqed/boundary_finder/stage_finder_spec.rb +9 -0
  26. data/spec/lib/sqed/boundary_finder_spec.rb +108 -0
  27. data/spec/lib/sqed/extractor_spec.rb +82 -0
  28. data/spec/lib/sqed/parser_spec.rb +6 -0
  29. data/spec/lib/sqed/result_spec.rb +17 -0
  30. data/spec/lib/sqed_spec.rb +200 -0
  31. data/spec/spec_helper.rb +34 -0
  32. data/spec/support/files/2Dbarcode.png +0 -0
  33. data/spec/support/files/CrossyBlackLinesSpecimen.jpg +0 -0
  34. data/spec/support/files/CrossyGreenLinesSpecimen.jpg +0 -0
  35. data/spec/support/files/Quadrant_2_3.jpg +0 -0
  36. data/spec/support/files/black_stage_green_line_specimen.jpg +0 -0
  37. data/spec/support/files/boundary_cross_green.jpg +0 -0
  38. data/spec/support/files/boundary_left_t_yellow.jpg +0 -0
  39. data/spec/support/files/boundary_offset_cross_red.jpg +0 -0
  40. data/spec/support/files/boundary_right_t_green.jpg +0 -0
  41. data/spec/support/files/greenlineimage.jpg +0 -0
  42. data/spec/support/files/label_images/black_stage_green_line_specimen_label.jpg +0 -0
  43. data/spec/support/files/test0.jpg +0 -0
  44. data/spec/support/files/test1.jpg +0 -0
  45. data/spec/support/files/test2.jpg +0 -0
  46. data/spec/support/files/test3.jpg +0 -0
  47. data/spec/support/files/test4.jpg +0 -0
  48. data/spec/support/files/test4OLD.jpg +0 -0
  49. data/spec/support/files/test_barcode.JPG +0 -0
  50. data/spec/support/files/test_ocr0.jpg +0 -0
  51. data/spec/support/files/types_21.jpg +0 -0
  52. data/spec/support/files/types_8.jpg +0 -0
  53. data/spec/support/image_helpers.rb +78 -0
  54. data/sqed.gemspec +31 -0
  55. metadata +244 -0
@@ -0,0 +1,200 @@
1
+ require 'spec_helper'
2
+ require 'RMagick'
3
+ describe Sqed do
4
+
5
+ let(:s) {Sqed.new}
6
+
7
+ context 'attributes' do
8
+ specify '#image' do
9
+ expect(s).to respond_to(:image)
10
+ end
11
+
12
+ specify '#pattern' do
13
+ expect(s).to respond_to(:pattern)
14
+ end
15
+
16
+ specify '#stage_image' do
17
+ expect(s).to respond_to(:image)
18
+ end
19
+ end
20
+
21
+ context 'initialization' do
22
+ specify 'without providing a pattern assigns :standard_cross' do
23
+ expect(s.pattern).to eq(:standard_cross)
24
+ end
25
+ end
26
+
27
+ context 'asking for a result' do
28
+ specify 'without providing an image returns false' do
29
+ expect(s.result).to eq(false)
30
+ end
31
+ end
32
+
33
+ context 'with a test image' do
34
+ let(:a) { ImageHelpers.test0_image }
35
+ before {
36
+ s.image = a
37
+ }
38
+
39
+ specify '#crop_image' do #should expand to multiple cases of image border types
40
+ expect(s.crop_image).to be_truthy
41
+ expect(s.stage_image.columns < a.columns).to be(true)
42
+ expect(s.stage_image.rows < a.rows).to be(true)
43
+ end
44
+
45
+ specify '#boundaries returns a Sqed::Boundaries instance' do
46
+ s.pattern = :standard_cross
47
+ expect(s.boundaries.class).to eq(Sqed::Boundaries)
48
+ end
49
+ end
50
+
51
+ context 'stage image with a border' do
52
+ let(:a) { ImageHelpers.standard_cross_green }
53
+ before {
54
+ s.image = a
55
+ s.crop_image
56
+ }
57
+ specify 'stage boundary is created for standard_ cross_green ~ (100,94, 800, 600)' do
58
+ expect(s.stage_boundary.x_for(0)).to be_within(2).of 100
59
+ expect(s.stage_boundary.y_for(0)).to be_within(2).of 94
60
+ expect(s.stage_boundary.width_for(0)).to be_within(2).of 800
61
+ expect(s.stage_boundary.height_for(0)).to be_within(2).of 600
62
+ end
63
+ end
64
+
65
+ context 'offset boundaries from original crossy_green_line_specimen image ' do
66
+ before(:all) {
67
+ @s = Sqed.new(image: ImageHelpers.crossy_green_line_specimen, pattern: :offset_cross)
68
+ @s.crop_image
69
+ @offset_boundaries = @s.boundaries.offset(@s.stage_boundary)
70
+ wtf = 0
71
+ }
72
+
73
+ specify "offset and size should match internal found areas " do
74
+ sbx = @s.stage_boundary.x_for(0)
75
+ sby = @s.stage_boundary.y_for(0)
76
+
77
+ sl = @s.boundaries.coordinates.length # may be convenient to clone this model for other than 4 boundaries found
78
+ expect(sl).to eq(4) #for offset cross pattern and valid image
79
+ expect(@s.boundaries.complete).to be(true)
80
+ expect(@offset_boundaries.complete).to be(true)
81
+ (0..sl - 1).each do |i|
82
+ # check all the x/y
83
+ expect(@offset_boundaries.x_for(i)).to eq(@s.boundaries.x_for(i) + sbx)
84
+ expect(@offset_boundaries.y_for(i)).to eq(@s.boundaries.y_for(i) + sby)
85
+
86
+ # check all width/heights
87
+ expect(@offset_boundaries.width_for(i)).to eq(@s.boundaries.width_for(i))
88
+ expect(@offset_boundaries.height_for(i)).to eq(@s.boundaries.height_for(i))
89
+ end
90
+ end
91
+
92
+ specify "find image, barcode, and text content" do
93
+ bc = Sqed::Extractor.new(boundaries: [0, 0, @s.image.columns, @s.image.rows], image: @s.image, layout: :offset_cross)
94
+ poc = Sqed::Parser::OcrParser.new(bc.extract_image(@offset_boundaries.coordinates[1]))
95
+ expect(poc.text).to eq('000085067')
96
+ end
97
+
98
+ end
99
+
100
+ context 'offset boundaries from crossy_black_line_specimen image ' do
101
+ before(:all) {
102
+ @s = Sqed.new(image: ImageHelpers.crossy_black_line_specimen, pattern: :offset_cross, boundary_color: :black)
103
+ @s.crop_image
104
+ @offset_boundaries = @s.boundaries.offset(@s.stage_boundary)
105
+ wtf = 0
106
+ }
107
+
108
+ specify "offset and size should match internal found areas " do ##**** actually fails
109
+
110
+ sbx = @s.stage_boundary.x_for(0)
111
+ sby = @s.stage_boundary.y_for(0)
112
+
113
+ sl = @s.boundaries.coordinates.length # may be convenient to clone this model for other than 4 boundaries found
114
+ expect(sl).to eq(4) #for offset cross pattern and valid image
115
+ expect(@s.boundaries.complete).to be(true)
116
+ expect(@offset_boundaries.complete).to be(true)
117
+ (0..sl - 1).each do |i|
118
+ # check all the x/y
119
+ expect(@offset_boundaries.x_for(i)).to eq(@s.boundaries.x_for(i) + sbx)
120
+ expect(@offset_boundaries.y_for(i)).to eq(@s.boundaries.y_for(i) + sby)
121
+
122
+ # check all width/heights
123
+ expect(@offset_boundaries.width_for(i)).to eq(@s.boundaries.width_for(i))
124
+ expect(@offset_boundaries.height_for(i)).to eq(@s.boundaries.height_for(i))
125
+ end
126
+ end
127
+ end
128
+
129
+ context 'offset boundaries from black_green_line_specimen image ' do
130
+ before(:all) {
131
+ @s = Sqed.new(image: ImageHelpers.black_stage_green_line_specimen, pattern: :offset_cross)
132
+ @s.crop_image
133
+ @offset_boundaries = @s.boundaries.offset(@s.stage_boundary)
134
+ wtf = 0
135
+ }
136
+
137
+ specify "offset and size should match internal found areas " do
138
+ sbx = @s.stage_boundary.x_for(0)
139
+ sby = @s.stage_boundary.y_for(0)
140
+
141
+ sl = @s.boundaries.coordinates.length # may be convenient to clone this model for other than 4 boundaries found
142
+ expect(sl).to eq(4) #for offset cross pattern and valid image
143
+ expect(@s.boundaries.complete).to be(true)
144
+ expect(@offset_boundaries.complete).to be(true)
145
+ (0..sl - 1).each do |i|
146
+ # check all the x/y
147
+ expect(@offset_boundaries.x_for(i)).to eq(@s.boundaries.x_for(i) + sbx)
148
+ expect(@offset_boundaries.y_for(i)).to eq(@s.boundaries.y_for(i) + sby)
149
+
150
+ # check all width/heights
151
+ expect(@offset_boundaries.width_for(i)).to eq(@s.boundaries.width_for(i))
152
+ expect(@offset_boundaries.height_for(i)).to eq(@s.boundaries.height_for(i))
153
+ end
154
+ end
155
+
156
+ specify "find image, barcode, and text content" do
157
+ bc = Sqed::Extractor.new(boundaries: [0, 0, @s.image.columns, @s.image.rows], image: @s.image, layout: :offset_cross)
158
+ # ioc = bc.extract_image(@offset_boundaries.coordinates[3])
159
+ # iioc = ioc.crop(384, 140, 1420, 572, true)
160
+ poc = Sqed::Parser::OcrParser.new(bc.extract_image(@offset_boundaries.coordinates[3]).crop(400, 140, 1420, 600, true))
161
+ # expect(poc.text).to eq('000085067')
162
+ ppc = Sqed::Parser::OcrParser.new(ImageHelpers.black_stage_green_line_specimen_label)
163
+ poc.image.write('tmp/poc.jpg')
164
+ ppc.image.write('tmp/ppc.jpg')
165
+ expect(ppc.text).to eq(poc.text)
166
+ end
167
+
168
+ end
169
+
170
+ context 'offset boundaries from original red_line image ' do
171
+ before(:all) {
172
+ @s = Sqed.new(image: ImageHelpers.offset_cross_red, pattern: :right_t, boundary_color: :red)
173
+ @s.crop_image
174
+ @offset_boundaries = @s.boundaries.offset(@s.stage_boundary)
175
+ wtf = 0
176
+ }
177
+
178
+ specify "offset and size should match internal found areas " do
179
+ sbx = @s.stage_boundary.x_for(0) # only a single boundary
180
+ sby = @s.stage_boundary.y_for(0)
181
+ pct = 0.02
182
+
183
+ sl = @s.boundaries.coordinates.length # may be convenient to clone this model for other than 4 boundaries found
184
+ expect(sl).to eq(3) #for offset cross pattern and valid image
185
+ expect(@s.boundaries.complete).to be(true)
186
+ expect(@offset_boundaries.complete).to be(true)
187
+ expect(@s.stage_boundary.width_for(0)).to be_within(pct*800).of(800)
188
+ expect(@s.stage_boundary.height_for(0)).to be_within(pct*600).of(600)
189
+ (0..sl - 1).each do |i|
190
+ # check all the x/y
191
+ expect(@offset_boundaries.x_for(i)).to eq(@s.boundaries.x_for(i) + sbx)
192
+ expect(@offset_boundaries.y_for(i)).to eq(@s.boundaries.y_for(i) + sby)
193
+
194
+ # check all width/heights
195
+ expect(@offset_boundaries.width_for(i)).to eq(@s.boundaries.width_for(i))
196
+ expect(@offset_boundaries.height_for(i)).to eq(@s.boundaries.height_for(i))
197
+ end
198
+ end
199
+ end
200
+ end
@@ -0,0 +1,34 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler.setup
4
+
5
+ require 'sqed'
6
+ require 'support/image_helpers'
7
+ require 'byebug'
8
+ require 'awesome_print'
9
+ require 'fileutils'
10
+ require 'RMagick'
11
+
12
+ FileUtils::mkdir_p 'tmp'
13
+
14
+ RSpec.configure do |config|
15
+
16
+ config.raise_errors_for_deprecations!
17
+
18
+ config.run_all_when_everything_filtered = false
19
+ # config.filter_run :focus
20
+
21
+ # Run specs in random order to surface order dependencies. If you find an
22
+ # order dependency and want to debug it, you can fix the order by providing
23
+ # the seed, which is printed after each run.
24
+ # --seed 1234
25
+ # config.order = 'random'
26
+
27
+ end
28
+
29
+ def in_range(value, percentage, midpoint) #order of second and third params to be consistent with be_within
30
+ # value is a scalar for testing against the range, percentage is a float less than 1, midpoint is the nominal center of the range
31
+ return (value <= midpoint*(1.0 + percentage)) & (value >= midpoint*(1.0 - percentage))
32
+ end
33
+
34
+
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,78 @@
1
+ module ImageHelpers
2
+
3
+ BASE_PATH = '../files/'
4
+
5
+ class << self
6
+
7
+ def get_image(file_name)
8
+ Image.read(File.expand_path(BASE_PATH + file_name, __FILE__)).first
9
+ end
10
+
11
+ # Images
12
+
13
+ def test0_image
14
+ get_image('test3.jpg')
15
+ end
16
+
17
+ def greenline_image
18
+ get_image 'greenlineimage.jpg'
19
+ end
20
+
21
+ def ocr_image
22
+ get_image 'test4.jpg'
23
+ end
24
+
25
+ def barcode_image
26
+ get_image 'test_barcode.jpg'
27
+ end
28
+
29
+ def labels_image
30
+ get_image 'types_8.jpg'
31
+ end
32
+
33
+ def foo3_image
34
+ get_image 'foo3.jpg'
35
+ end
36
+
37
+ # Images for boundary tests (otherwise empty)
38
+
39
+ def standard_cross_green
40
+ get_image 'boundary_cross_green.jpg'
41
+ end
42
+
43
+ def crossy_green_line_specimen
44
+ get_image 'CrossyGreenLinesSpecimen.jpg'
45
+ end
46
+ def crossy_black_line_specimen
47
+ get_image 'CrossyBlackLinesSpecimen.jpg'
48
+ end
49
+
50
+ def black_stage_green_line_specimen
51
+ get_image 'black_stage_green_line_specimen.jpg'
52
+ end
53
+
54
+ def black_stage_green_line_specimen_label
55
+ get_image 'label_images/black_stage_green_line_specimen_label.jpg'
56
+ end
57
+
58
+ def offset_cross_red
59
+ get_image 'boundary_offset_cross_red.jpg'
60
+ end
61
+
62
+ def right_t_green
63
+ get_image 'boundary_right_t_green.jpg'
64
+ end
65
+
66
+ def left_t_yellow
67
+ get_image 'boundary_left_t_yellow.jpg'
68
+ end
69
+
70
+ def of_size(width = 1024, height = 768)
71
+ Image.new(width, height) {
72
+ self.background_color = 'white'
73
+ }
74
+ end
75
+
76
+ end
77
+
78
+ end
data/sqed.gemspec ADDED
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'sqed/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "sqed"
8
+ spec.version = Sqed::VERSION
9
+ spec.authors = ["Matt Yoder", "Rich Flood"]
10
+ spec.email = ["diapriid@gmail.com"]
11
+ spec.summary = %q{Specimens Quickly Extracted and Digitized, or just "squid". A ruby gem for image related specimen accessioning.}
12
+ spec.description = %q{A utility gem to aid in the processing of images taken in the process of digitizing natural history collections.}
13
+ spec.homepage = "http://github.com/SpeciesFileGroup/sqed"
14
+ spec.license = "NCSA"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'rake'
22
+ spec.add_dependency 'rmagick', '~> 2.13.2'
23
+ spec.add_dependency 'rtesseract'
24
+
25
+ spec.add_development_dependency 'bundler', '~> 1.5'
26
+ spec.add_development_dependency 'did_you_mean', '~> 0.9'
27
+ spec.add_development_dependency 'byebug'
28
+ spec.add_development_dependency 'rspec'
29
+ spec.add_development_dependency 'awesome_print', '~> 1.6'
30
+ end
31
+
metadata ADDED
@@ -0,0 +1,244 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sqed
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Matt Yoder
8
+ - Rich Flood
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-06-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rmagick
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 2.13.2
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 2.13.2
42
+ - !ruby/object:Gem::Dependency
43
+ name: rtesseract
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: bundler
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.5'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.5'
70
+ - !ruby/object:Gem::Dependency
71
+ name: did_you_mean
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '0.9'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '0.9'
84
+ - !ruby/object:Gem::Dependency
85
+ name: byebug
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rspec
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: awesome_print
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '1.6'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '1.6'
126
+ description: A utility gem to aid in the processing of images taken in the process
127
+ of digitizing natural history collections.
128
+ email:
129
+ - diapriid@gmail.com
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - ".gitignore"
135
+ - ".rspec"
136
+ - ".travis.yml"
137
+ - Gemfile
138
+ - LICENSE.txt
139
+ - README.md
140
+ - Rakefile
141
+ - lib/sqed.rb
142
+ - lib/sqed/boundaries.rb
143
+ - lib/sqed/boundary_finder.rb
144
+ - lib/sqed/boundary_finder/color_line_finder.rb
145
+ - lib/sqed/boundary_finder/cross_finder.rb
146
+ - lib/sqed/boundary_finder/stage_finder.rb
147
+ - lib/sqed/extractor.rb
148
+ - lib/sqed/parser.rb
149
+ - lib/sqed/parser/barcode_parser.rb
150
+ - lib/sqed/parser/ocr_parser.rb
151
+ - lib/sqed/result.rb
152
+ - lib/sqed/version.rb
153
+ - lib/sqed_config.rb
154
+ - spec/lib/sqed/boundaries_spec.rb
155
+ - spec/lib/sqed/boundary_finder/color_line_finder_spec.rb
156
+ - spec/lib/sqed/boundary_finder/cross_finder_spec.rb
157
+ - spec/lib/sqed/boundary_finder/stage_finder_spec.rb
158
+ - spec/lib/sqed/boundary_finder_spec.rb
159
+ - spec/lib/sqed/extractor_spec.rb
160
+ - spec/lib/sqed/parser_spec.rb
161
+ - spec/lib/sqed/result_spec.rb
162
+ - spec/lib/sqed_spec.rb
163
+ - spec/spec_helper.rb
164
+ - spec/support/files/2Dbarcode.png
165
+ - spec/support/files/CrossyBlackLinesSpecimen.jpg
166
+ - spec/support/files/CrossyGreenLinesSpecimen.jpg
167
+ - spec/support/files/Quadrant_2_3.jpg
168
+ - spec/support/files/black_stage_green_line_specimen.jpg
169
+ - spec/support/files/boundary_cross_green.jpg
170
+ - spec/support/files/boundary_left_t_yellow.jpg
171
+ - spec/support/files/boundary_offset_cross_red.jpg
172
+ - spec/support/files/boundary_right_t_green.jpg
173
+ - spec/support/files/greenlineimage.jpg
174
+ - spec/support/files/label_images/black_stage_green_line_specimen_label.jpg
175
+ - spec/support/files/test0.jpg
176
+ - spec/support/files/test1.jpg
177
+ - spec/support/files/test2.jpg
178
+ - spec/support/files/test3.jpg
179
+ - spec/support/files/test4.jpg
180
+ - spec/support/files/test4OLD.jpg
181
+ - spec/support/files/test_barcode.JPG
182
+ - spec/support/files/test_ocr0.jpg
183
+ - spec/support/files/types_21.jpg
184
+ - spec/support/files/types_8.jpg
185
+ - spec/support/image_helpers.rb
186
+ - sqed.gemspec
187
+ homepage: http://github.com/SpeciesFileGroup/sqed
188
+ licenses:
189
+ - NCSA
190
+ metadata: {}
191
+ post_install_message:
192
+ rdoc_options: []
193
+ require_paths:
194
+ - lib
195
+ required_ruby_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ required_rubygems_version: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ requirements: []
206
+ rubyforge_project:
207
+ rubygems_version: 2.4.5
208
+ signing_key:
209
+ specification_version: 4
210
+ summary: Specimens Quickly Extracted and Digitized, or just "squid". A ruby gem for
211
+ image related specimen accessioning.
212
+ test_files:
213
+ - spec/lib/sqed/boundaries_spec.rb
214
+ - spec/lib/sqed/boundary_finder/color_line_finder_spec.rb
215
+ - spec/lib/sqed/boundary_finder/cross_finder_spec.rb
216
+ - spec/lib/sqed/boundary_finder/stage_finder_spec.rb
217
+ - spec/lib/sqed/boundary_finder_spec.rb
218
+ - spec/lib/sqed/extractor_spec.rb
219
+ - spec/lib/sqed/parser_spec.rb
220
+ - spec/lib/sqed/result_spec.rb
221
+ - spec/lib/sqed_spec.rb
222
+ - spec/spec_helper.rb
223
+ - spec/support/files/2Dbarcode.png
224
+ - spec/support/files/CrossyBlackLinesSpecimen.jpg
225
+ - spec/support/files/CrossyGreenLinesSpecimen.jpg
226
+ - spec/support/files/Quadrant_2_3.jpg
227
+ - spec/support/files/black_stage_green_line_specimen.jpg
228
+ - spec/support/files/boundary_cross_green.jpg
229
+ - spec/support/files/boundary_left_t_yellow.jpg
230
+ - spec/support/files/boundary_offset_cross_red.jpg
231
+ - spec/support/files/boundary_right_t_green.jpg
232
+ - spec/support/files/greenlineimage.jpg
233
+ - spec/support/files/label_images/black_stage_green_line_specimen_label.jpg
234
+ - spec/support/files/test0.jpg
235
+ - spec/support/files/test1.jpg
236
+ - spec/support/files/test2.jpg
237
+ - spec/support/files/test3.jpg
238
+ - spec/support/files/test4.jpg
239
+ - spec/support/files/test4OLD.jpg
240
+ - spec/support/files/test_barcode.JPG
241
+ - spec/support/files/test_ocr0.jpg
242
+ - spec/support/files/types_21.jpg
243
+ - spec/support/files/types_8.jpg
244
+ - spec/support/image_helpers.rb