1-1 「B/G/Rの入れ替え」
モチベーション
画像の色合いを変更して、どんな雰囲気になるのか確認してみたい。
例えば、以下のような用途がありそうです。
- 花の色
- 赤い花だけど、青色の花だったらどうかな?
- 看板の文字の色
- 看板の文字の色を赤にしてみるとどうかな?
- 背景が黄色だとどんな雰囲気になるかな?
やり方
カラー画像を読み込み、読み込んだ画像のB/G/Rを入れ替えれば実現できます。
この方法は、画像の色バランスを維持したまま色を入れ替えるので、画像変換後も自然な画像として得られます。
プログラム
カラー画像をPILで取得し、Numpy配列化した後、RGBの色情報をスライスを用いて入れ替えます。入れ替える色は、青色→緑色、 緑色→赤色、 赤色→青色 としました。
#!/usr/bin/python # -*- coding: utf-8 -*- # カラー画像のR,G,Bの色情報を入れ替える。 from PIL import Image import numpy as np from matplotlib import pylab as plt # 画像の読み込み im = np.array(Image.open('input.bmp')) print(im.shape, im.dtype) # ((968L, 1296L, 3L), dtype('uint8')) # 画像の表示 plt.imshow(im) plt.show() # 色の入れ替え im_swap = im.copy() im_swap[:,:,1] = im_swap[:,:,2] # Blue -> GReen im_swap[:,:,2] = im_swap[:,:,0] # Red -> Blue im_swap[:,:,0] = im[:,:,1] # Green -> Red print(im_swap.shape, im_swap.dtype) # 画像の表示 plt.imshow(im_swap) plt.show() #保存 Image.fromarray(im_swap).save('output.bmp')
実行結果
参考
別な画像でも試してみました。
赤を青に、緑を赤に入れ替えてます。
元画像の雰囲気を損なわずに、色合いのみ変更できている様子がわかるかと思います。