Class: Monet::Grayscale
- Inherits:
-
DiffStrategy
- Object
- DiffStrategy
- Monet::Grayscale
- Defined in:
- lib/monet/diff_strategy.rb
Instance Attribute Summary
Attributes inherited from DiffStrategy
Instance Method Summary collapse
- #calculate_for_pixel(pixel, x, y) ⇒ Object
-
#initialize(base_image, diff_image) ⇒ Grayscale
constructor
A new instance of Grayscale.
Methods inherited from DiffStrategy
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 |