RMagickで乗算合成をしてみた。

引き続き画像処理。ピクセル楽しい。

今回は乗算合成をやってみた。
乗算合成では、合成後の色を次の式で算出する。
元画像の色 * 合成画像の色 / 256 = 合成後の色

require 'rubygems'
require "RMagick"

include Magick

def multipleconb(image1, image2)

img1 = ImageList.new(image1)
img2 = ImageList.new(image2)
for y in 0...img1.rows-1
  for x in 0...img1.columns-1
    src1 = img1.pixel_color(x, y)
    src2 = img2.pixel_color(x, y)

    # 二つの画像からRGB値ごとに合成色を算出
    m_red = src1.red * src2.red / 256
    m_green = src1.green * src2.green / 256
    m_blue = src1.blue * src2.blue / 256

    color = Magick::Pixel.new(m_red, m_green, m_blue)

    img1.pixel_color(x, y, color)
  end
end

img1.write "test.jpg"
end

image1 = ARGV[0]
image2 = ARGV[1]
multipleconb(image1, image2)

今回の実験画像はこちら。
ハイレグサイエンティスト、ナオミ博士と
ゴスロリ殺人四番バッター、バッドガールさんです。

ruby ./multipleconb.rb image/naomi.jpg image/badgirl.jpg

結果。処理的には正常だけど画像的にはよくわからないものになった。




おまけ。


同じ画像にしきい値と色の違う二値化処理を施して乗算合成すると影がついたような効果がでてカッコイイ!