Class: Monet::Grayscale

Inherits:
DiffStrategy show all
Defined in:
lib/monet/diff_strategy.rb

Instance Attribute Summary

Attributes inherited from DiffStrategy

#score

Instance Method Summary collapse

Methods inherited from DiffStrategy

#save

Constructor Details

#initialize(base_image, diff_image) ⇒ Grayscale

Returns a new instance of Grayscale.



38
39
40
41
# File 'lib/monet/diff_strategy.rb', line 38

def initialize(base_image, diff_image)
  super
  @output = ChunkyPNG::Image.new(base_image.width, base_image.height, WHITE)
end

Instance Method Details

#calculate_for_pixel(pixel, x, y) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/monet/diff_strategy.rb', line 43

def calculate_for_pixel(pixel, x, y)
  return if pixel == @diff_image[x,y]

  rgb_colors = %w(r g b).map do |color|
    for_color(color, @diff_image[x,y]) - for_color(color, pixel)
  end

  score = Math.sqrt(rgb_colors.reduce(0) {|memo, diff| memo += (diff ** 2) } ) / Math.sqrt(MAX ** 2 * 3)

  @output[x,y] = grayscale(MAX - (score * MAX).round)
  super
end