-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathatomicjpeg.rb
More file actions
45 lines (42 loc) · 851 Bytes
/
atomicjpeg.rb
File metadata and controls
45 lines (42 loc) · 851 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
require 'histogram/array'
def format_q(s)
return s.scan(/\d+/).join('-')
end
directory = ARGV[0]
Dir.foreach(directory) do |img|
next if img == '.' or img == '..'
begin
print File.basename(img)+','
dct = `./dct_dump #{directory}/#{img} raw`
dct = dct.split("\n").map(&:to_i)
dct.sort!
histogram = [*dct.group_by{ |v| v }.flat_map{ |k, v| [k, v.size] }]
new_histogram = []
$i = 0
$num = histogram.size
while $i < $num do
new_histogram << histogram[$i+1]
$i +=2
end
list = []
$i = 1
$num = new_histogram.size
while $i < $num do
list << new_histogram[$i].to_f/new_histogram[$i-1]
$i +=1
end
list.map! { |n| Math.sqrt(n) }
sum=0
list.each do |i|
sum += i
end
average = sum / list.size
error=0
list.each do |i|
error += (i-average).abs
end
average_error = error/list.size
puts average_error
rescue
end
end