class Despeck::WatermarkMask
Creates B&W mask for the watermark
Attributes
image[R]
mask[R]
no_watermark[R]
sensitivity[R]
watermark[R]
Public Class Methods
new(image, sensitivity: 20)
click to toggle source
# File lib/despeck/watermark_mask.rb, line 12 def initialize(image, sensitivity: 20) @image = image @sensitivity = sensitivity end
Public Instance Methods
find_masks!()
click to toggle source
# File lib/despeck/watermark_mask.rb, line 17 def find_masks! @mask = adjusted_chroma_mask(image) @watermark = (image + @mask.invert) @no_watermark = (image + @mask) [watermark, no_watermark, mask] end
Private Instance Methods
adjusted_chroma_mask(image)
click to toggle source
# File lib/despeck/watermark_mask.rb, line 28 def adjusted_chroma_mask(image) smaller_image = image.resize(0.2) closing(chroma_mask(smaller_image)) .dilate(dilate_mask) .resize(5) end
chroma_mask(img)
click to toggle source
# File lib/despeck/watermark_mask.rb, line 35 def chroma_mask(img) img = img.colourspace 'lch' (img[1] > sensitivity) end
closing(img)
click to toggle source
# File lib/despeck/watermark_mask.rb, line 45 def closing(img) img.dilate(dilate_mask).erode(dilate_mask) end
dilate_mask()
click to toggle source
# File lib/despeck/watermark_mask.rb, line 40 def dilate_mask @dilate_mask ||= Vips::Image.new_from_array Array.new(3, Array.new(3, 255)) end