sqed 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/lib/sqed/boundary_finder.rb +30 -5
- data/lib/sqed/boundary_finder/color_line_finder.rb +5 -6
- data/lib/sqed/version.rb +1 -1
- data/spec/lib/stage_handling/seven_slot_spec.rb +3 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d47942c64d4e9dfee4eefdb864de8b537aad0166
|
4
|
+
data.tar.gz: e6a282b0b85f83615315c291bf2cbf66fe26b15c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e53e4bbc42260cd2723eaa4ef917a2f8b1c99b8947bb3af3675beeffcee07ad6567c753a601a38b82e0ae86d27e103bd6b06de06d8517d38394b228dc606c64b
|
7
|
+
data.tar.gz: 861e69ad4e87e8e7261f3020f4d9aef5c1ce1a2bf3962dae1ac4eef898ac5ddf27f85d3a53c3a448e04bd401305be79c5a014a0f5f9b099ea9f8fb94b1f23261
|
data/.travis.yml
CHANGED
data/lib/sqed/boundary_finder.rb
CHANGED
@@ -223,19 +223,44 @@ class Sqed
|
|
223
223
|
end
|
224
224
|
|
225
225
|
# @return [Array]
|
226
|
-
#
|
226
|
+
# like `[0,1,2]`
|
227
227
|
# If median-min or max-median * width_factor are different from one another (by more than width_factor) then replace the larger wth the median +/- 1/2 the smaller
|
228
228
|
# Given [10, 12, 20] and width_factor 2 the result will be [10, 12, 13]
|
229
229
|
#
|
230
|
-
def corrected_frequency(frequency_stats, width_factor = 3.0)
|
230
|
+
def corrected_frequency(frequency_stats, width_factor = 3.0, max_width = nil)
|
231
231
|
v0 = frequency_stats[0]
|
232
232
|
m = frequency_stats[1]
|
233
233
|
v2 = frequency_stats[2]
|
234
234
|
|
235
|
-
|
236
|
-
b = v2 - m
|
235
|
+
width_pct = nil
|
237
236
|
|
238
|
-
|
237
|
+
# If the width of the detected line is > 5 percent then
|
238
|
+
# assume the center is good measure, and use an arbitrary percentage width.
|
239
|
+
if !max_width.nil?
|
240
|
+
width_pct = (v2 - v0).to_f / max_width.to_f
|
241
|
+
end
|
242
|
+
|
243
|
+
if !width_pct.nil? && width_pct >= 0.05
|
244
|
+
half_width = max_width * 0.025
|
245
|
+
z = [m - half_width, m, m + half_width]
|
246
|
+
return z
|
247
|
+
end
|
248
|
+
|
249
|
+
# a = m - v0
|
250
|
+
# b = v2 - m
|
251
|
+
|
252
|
+
# largest = (a > b ? a : b)
|
253
|
+
|
254
|
+
# c = a * width_factor
|
255
|
+
# d = b * width_factor
|
256
|
+
|
257
|
+
# if c > largest || d > largest
|
258
|
+
# e = c > largest ? ((m - b) / 2).to_i : v0
|
259
|
+
# f = d > largest ? ((m + a) / 2).to_i : v2
|
260
|
+
# [e, m, f]
|
261
|
+
# else
|
262
|
+
# frequency_stats
|
263
|
+
# end
|
239
264
|
|
240
265
|
if a * width_factor > largest
|
241
266
|
[(m - (v2 - m) / 2).to_i, m, v2]
|
@@ -41,19 +41,18 @@ class Sqed::BoundaryFinder::ColorLineFinder < Sqed::BoundaryFinder
|
|
41
41
|
right_top_image = image.crop( left_right_split[2], 0, image.columns - left_right_split[2], top_bottom_split[0] , true) # sections 1,2
|
42
42
|
right_bottom_image = image.crop(left_right_split[2], top_bottom_split[2], image.columns - left_right_split[2], image.rows - top_bottom_split[2], true) # sections 3,4,5
|
43
43
|
|
44
|
-
right_top_split = corrected_frequency(Sqed::BoundaryFinder.color_boundary_finder(image: right_top_image, boundary_color: boundary_color)) # vertical line b/w 1 & 2, use "corrected_frequency" to account for color bleed from previous crop
|
44
|
+
right_top_split = corrected_frequency(Sqed::BoundaryFinder.color_boundary_finder(image: right_top_image, boundary_color: boundary_color), 1.8, right_top_image.columns) # vertical line b/w 1 & 2, use "corrected_frequency" to account for color bleed from previous crop
|
45
45
|
|
46
|
-
boundaries.set(1, [left_right_split[2], 0, right_top_split[0], top_bottom_split[0]
|
46
|
+
boundaries.set(1, [left_right_split[2], 0, right_top_split[0], top_bottom_split[0]] )
|
47
47
|
boundaries.set(2, [left_right_split[2] + right_top_split[2], 0, right_top_image.columns - right_top_split[2], top_bottom_split[0]])
|
48
48
|
|
49
|
-
right_bottom_split = corrected_frequency(Sqed::BoundaryFinder.color_boundary_finder(image: right_bottom_image, scan: :columns, sample_subdivision_size: 2, boundary_color: boundary_color)) # horizontal line b/w (5,3) & 4, use "corrected_frequency" to account for color bleed from previous crop
|
49
|
+
right_bottom_split = corrected_frequency(Sqed::BoundaryFinder.color_boundary_finder(image: right_bottom_image, scan: :columns, sample_subdivision_size: 2, boundary_color: boundary_color), 1.8, right_bottom_image.rows) # horizontal line b/w (5,3) & 4, use "corrected_frequency" to account for color bleed from previous crop
|
50
50
|
|
51
51
|
bottom_right_top_image = right_bottom_image.crop(0,0, image.columns - left_right_split[2], right_bottom_split[0], true) # 3,5
|
52
52
|
|
53
|
-
boundaries.set(3, [
|
54
|
-
boundaries.set(5, [
|
53
|
+
boundaries.set(3, [left_right_split[2] + right_top_split[2], top_bottom_split[2], left_right_split[2] + right_top_split[2], bottom_right_top_image.rows ])
|
54
|
+
boundaries.set(5, [left_right_split[2], top_bottom_split[2], right_top_split[0], bottom_right_top_image.rows])
|
55
55
|
|
56
|
-
# ! not high enough
|
57
56
|
boundaries.set(4, [left_right_split[2], top_bottom_split[2] + right_bottom_split[2], image.columns - left_right_split[2], right_bottom_image.rows ])
|
58
57
|
|
59
58
|
when :vertical_split
|
data/lib/sqed/version.rb
CHANGED
@@ -36,7 +36,7 @@ describe 'handling 7 slot stages' do
|
|
36
36
|
|
37
37
|
specify 'boundaries are reasonable' do
|
38
38
|
s.result
|
39
|
-
c = s.boundaries.coordinates
|
39
|
+
c = s.boundaries.coordinates
|
40
40
|
c.each do |section, values|
|
41
41
|
c[section].each_with_index do |v, i|
|
42
42
|
msg = "section #{section}, index #{i} has a bad value '#{v}'"
|
@@ -49,9 +49,10 @@ describe 'handling 7 slot stages' do
|
|
49
49
|
context 'trickier boundaries - with_thumbnail' do
|
50
50
|
let(:s) { Sqed.new(image: ImageHelpers.inhs_stage_7_slot2, use_thumbnail: true, pattern: :seven_slot, boundary_color: :red, has_border: false ) }
|
51
51
|
|
52
|
+
|
52
53
|
specify 'boundaries are reasonable' do
|
53
54
|
s.result
|
54
|
-
c = s.boundaries.coordinates
|
55
|
+
c = s.boundaries.coordinates
|
55
56
|
c.each do |section, values|
|
56
57
|
c[section].each_with_index do |v, i|
|
57
58
|
msg = "section #{section}, index #{i} has a bad value '#{v}'"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sqed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Yoder
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-03-
|
12
|
+
date: 2018-03-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|