sqed 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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