mork 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f86f0bbe05ae9f4eb62d0d61598a76fcd595e08
4
- data.tar.gz: 547f41d90cc045f797ca98254638723c650fd2f1
3
+ metadata.gz: 9ce19962ba0e1e21013a7081f9ac040e57d0bfa1
4
+ data.tar.gz: 2b86b3f7a6338384e6b9ffdf9157cb0a92205dea
5
5
  SHA512:
6
- metadata.gz: cdfe684595e84ccc61c03f07e30c0a171fa438be0b9a7e46d0cf563e77f17b15772f0b80f8d7e7a69eb3079fab46d971eef3337f6e97661785a515efc864dc45
7
- data.tar.gz: 37b009ebc52a62517ee8c03a55e3163747f49632f721fa585d8561bb4a304eefda61dc208430b5b99e298d40905111cc580305f57051abc11ecc19608beee4af
6
+ metadata.gz: 7d6a2ef2db4358a02a2ba9d3cbdac0505d9208b2b169fbfee67e76a71311844b970a306d19c8a72fbd400288ef269397c645d65f126b284c4832c6283870ba79
7
+ data.tar.gz: 3efa05963a68fd82f672f4c0aadf06d739e3eec442a7e0f0c70c82f0422c35f699df3495ab5196d264ab4497ccc85cd579eefbaac3819ccfa5d427e47c61bf83
data/lib/mork/grid_omr.rb CHANGED
@@ -83,7 +83,7 @@ module Mork
83
83
  def ppu_x() @px / page_width end
84
84
  def ppu_y() @py / page_height end
85
85
 
86
- # finding the width of the registration area based on iteration
86
+ # finding the x position of the registration area based on iteration
87
87
  def rmx(corner, i)
88
88
  case corner
89
89
  when :tl; reg_off
@@ -93,7 +93,7 @@ module Mork
93
93
  end
94
94
  end
95
95
 
96
- # finding the height of the registration area based on iteration
96
+ # finding the y position of the registration area based on iteration
97
97
  def rmy(corner, i)
98
98
  case corner
99
99
  when :tl; reg_off
data/lib/mork/mimage.rb CHANGED
@@ -11,12 +11,23 @@ module Mork
11
11
  @grom.set_page_size width, height
12
12
  @rm = {} # registration mark centers
13
13
  @rmsa = {} # registration mark search area
14
- @status = register
14
+ @valid = register
15
+ @writing = nil
15
16
  @cmd = []
16
17
  end
17
18
 
19
+ def valid?
20
+ @valid
21
+ end
22
+
18
23
  def status
19
- @status
24
+ {
25
+ tl: @rm[:tl][:status],
26
+ tr: @rm[:tr][:status],
27
+ br: @rm[:br][:status],
28
+ bl: @rm[:bl][:status],
29
+ write: @writing
30
+ }
20
31
  end
21
32
 
22
33
  def ink_black
@@ -84,7 +95,7 @@ module Mork
84
95
 
85
96
  def highlight_reg_area
86
97
  highlight_rect [@rmsa[:tl], @rmsa[:tr], @rmsa[:br], @rmsa[:bl]]
87
- return unless @status
98
+ return unless valid?
88
99
  join [@rm[:tl], @rm[:tr], @rm[:br], @rm[:bl]]
89
100
  end
90
101
 
@@ -131,9 +142,20 @@ module Mork
131
142
  # if the 2nd arg is false, then stretching is not applied
132
143
  def write(fname=nil, reg=true)
133
144
  if fname
134
- img = MiniMagick::Image.open @path
135
- img.combine_options {|c| exec_mm_cmd c, reg }
136
- img.write fname
145
+ # img = MiniMagick::Image.open @path
146
+ # img.combine_options {|c| exec_mm_cmd c, reg }
147
+ # begin
148
+ # img.write fname
149
+ # @write = :ok
150
+ # rescue Exception
151
+ # @write = :fail
152
+ # end
153
+ MiniMagick::Tool::Convert.new(false) do |img|
154
+ img << @path
155
+ img.distort(:perspective, perspective_points) if reg
156
+ @cmd.each { |cmd| img.send *cmd }
157
+ img << fname
158
+ end
137
159
  else
138
160
  MiniMagick::Image.new(@path) { |c| exec_mm_cmd c, reg }
139
161
  end
@@ -144,6 +166,7 @@ module Mork
144
166
  # ============================================================#
145
167
  def exec_mm_cmd(c, reg)
146
168
  c.distort(:perspective, perspective_points) if reg
169
+
147
170
  @cmd.each do |cmd|
148
171
  c.send *cmd
149
172
  end
@@ -197,11 +220,14 @@ module Mork
197
220
  def register
198
221
  # find the XY coordinates of the 4 registration marks
199
222
  @rm[:tl] = reg_centroid_on(:tl)
223
+ # puts "TL: #{@rm[:tl][:status].inspect}"
200
224
  @rm[:tr] = reg_centroid_on(:tr)
225
+ # puts "TR: #{@rm[:tr][:status].inspect}"
201
226
  @rm[:br] = reg_centroid_on(:br)
227
+ # puts "BR: #{@rm[:br][:status].inspect}"
202
228
  @rm[:bl] = reg_centroid_on(:bl)
203
- # return the status
204
- @rm.all? { |k,v| v[:status] == :ok }
229
+ # puts "BL: #{@rm[:bl][:status].inspect}"
230
+ @rm.all? { |k,v| v[:status] == :ok }
205
231
  end
206
232
 
207
233
  # returns the centroid of the dark region within the given area
@@ -209,6 +235,8 @@ module Mork
209
235
  def reg_centroid_on(corner)
210
236
  1000.times do |i|
211
237
  @rmsa[corner] = @grom.rm_search_area(corner, i)
238
+ # puts "================================================================"
239
+ # puts "Corner #{corner} - Iteration #{i} - Coo #{@rmsa[corner].inspect}"
212
240
  cx, cy = raw_pixels.dark_centroid @rmsa[corner]
213
241
  if cx.nil?
214
242
  status = :no_contrast
data/lib/mork/npatch.rb CHANGED
@@ -34,6 +34,7 @@ module Mork
34
34
  # find the intensity trough
35
35
  ctr_x = xp.find_index(xp.min)
36
36
  ctr_y = yp.find_index(yp.min)
37
+ # puts "Centroid: #{ctr_x}, #{ctr_y} - MinX #{xp.min/xp.length}, MaxX #{xp.max/xp.length}, MinY #{yp.min/yp.length}, MaxY #{yp.max/yp.length}"
37
38
  return ctr_x, ctr_y
38
39
  end
39
40
 
@@ -49,6 +50,7 @@ module Mork
49
50
  end
50
51
 
51
52
  def sufficient_contrast?(p)
53
+ # puts "Contrast: #{p.stddev}"
52
54
  # tested with the few examples: spec/samples/rm0x.jpeg
53
55
  p.stddev > 20
54
56
  end
@@ -7,11 +7,14 @@ module Mork
7
7
  def initialize(path, grom=nil)
8
8
  @grom = GridOMR.new grom
9
9
  @mim = Mimage.new path, @grom
10
- @ok_reg = @mim.status
11
10
  end
12
11
 
13
12
  def valid?
14
- @ok_reg
13
+ @mim.valid?
14
+ end
15
+
16
+ def status
17
+ @mim.status
15
18
  end
16
19
 
17
20
  # barcode
@@ -161,8 +164,8 @@ module Mork
161
164
  end
162
165
 
163
166
  def not_registered
164
- unless @ok_reg
165
- puts "---=={ Unregistered image. Reason: '#{@rm.inspect}' }==---"
167
+ unless valid?
168
+ puts "---=={ Unregistered image. Reason: '#{@mim.status.inspect}' }==---"
166
169
  true
167
170
  end
168
171
  end
@@ -120,26 +120,3 @@ module Mork
120
120
  end
121
121
  end
122
122
  end
123
-
124
- # def control(content)
125
- # font_size @grip.control_size do
126
- # text_box content[:string], at: @grip.control_xy,
127
- # width: @grip.control_width,
128
- # align: :right
129
- # stroke do
130
- # stroke_color "ff0000"
131
- # # dark
132
- # a = @grip.ctrl_area_dark
133
- # rounded_rectangle a[:p], a[:w], a[:h], [a[:h], a[:w]].min / 2
134
- # fill_color "ff0000"
135
- # draw_text content[:labels][0], at: @grip.dark_control_letter_xy
136
- # # light
137
- # a = @grip.ctrl_area_light
138
- # rounded_rectangle a[:p], a[:w], a[:h], [a[:h], a[:w]].min / 2
139
- # fill_color "ff0000"
140
- # draw_text content[:labels][1], at: @grip.light_control_letter_xy
141
- #
142
- # end
143
- # end
144
- # end
145
- #
data/lib/mork/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Mork
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -3,6 +3,30 @@ require 'fileutils'
3
3
 
4
4
  module Mork
5
5
  describe SheetOMR do
6
+ # context 'problematic' do
7
+ # let(:shinfo) { sample_img 'bianchi' }
8
+ # let(:sheet) { SheetOMR.new shinfo.filename, shinfo.grid_file }
9
+ #
10
+ # it 'has a status' do
11
+ # sheet.status.should == {:tl=>:ok, :tr=>:ok, :br=>:ok, :bl=>:ok, :write=>nil}
12
+ # end
13
+ #
14
+ # it 'has a barcode' do
15
+ # sheet.barcode.should == shinfo.barcode_int
16
+ # end
17
+ #
18
+ # it 'writes the registered and marked image' do
19
+ # sheet.cross_marked
20
+ # sheet.write 'spec/out/bianchi.jpg'
21
+ # sheet.status[:write].should == :fail
22
+ # end
23
+ #
24
+ # it 'writes the registration areas' do
25
+ # sheet.highlight_registration
26
+ # sheet.write_raw 'spec/out/reg_bianchi.jpg'
27
+ # end
28
+ #
29
+ # end
6
30
 
7
31
  context 'highlighting' do
8
32
  # since these specs change the @crop, they must be run in isolation
@@ -12,30 +12,15 @@ sample-gray:
12
12
  grid-file: spec/samples/layout.yml
13
13
  width: 1654
14
14
  height: 2339
15
-
16
15
 
17
- sample01:
18
- filename: spec/samples/sample01.jpg
19
- pages: 1
20
- width: 2334
21
- height: 3291
22
-
23
- reg-marks: # registration marks
24
- tl-x: 92
25
- tl-y: 90
26
- tr-x: 2245
27
- tr-y: 97
28
- br-x: 2230
29
- br-y: 3217
30
- bl-x: 78
31
- bl-y: 3205
32
- q-boxes:
33
- q001:
34
- tl-x: 175
35
- tl-y: 379
36
- q160:
37
- tl-x: 1818
38
- tl-y: 2974
16
+ bianchi:
17
+ # filename: spec/samples/IMG_20150104_0005.jpg
18
+ # filename: spec/samples/out0000.jpg
19
+ # filename: spec/samples/SCN_0001.jpg
20
+ # filename: spec/samples/IMG_20150104_0011.jpg
21
+ # filename: spec/samples/IMG_20150104_0009.jpg
22
+ grid-file: spec/samples/bianchi.yml
23
+ barcode-int: 9350
39
24
 
40
25
  reg-mark:
41
26
  filename: spec/samples/reg_mark.jpg
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mork
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giuseppe Bertini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-28 00:00:00.000000000 Z
11
+ date: 2015-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: narray
@@ -185,9 +185,7 @@ files:
185
185
  - spec/samples/rm03.jpeg
186
186
  - spec/samples/rm04.jpeg
187
187
  - spec/samples/rm05.jpeg
188
- - spec/samples/sample01.jpg
189
188
  - spec/samples/sample02.jpg
190
- - spec/samples/sample03.jpg
191
189
  - spec/samples/sample_gray.jpg
192
190
  - spec/samples/sheet.jpg
193
191
  - spec/samples/sheet666.jpg
Binary file
Binary file