画像処理はじめました。

AI/AR/VRという近未来的な言葉に惹かれ、その技術分野に参戦するために立ち上げたブログです。日々の格闘結果を記録に残してゆこうと思います。

1-6 「ソラリゼーション」

モチベーション

画素値の濃淡を一部反転させることで特殊な表現効果が見込めます。
ネガ画像とポジ画像が混じりあったような効果が得られます。

やり方

PILライブラリを使用し画像を読み込みます。読み込んだ画像の画素値に対してトーンカーブを適用し各色情報を変換します。

プログラム

画像をPILで取得しNumpy配列化します。
入力画素値127で折り返すトーンカーブを適用しています。

#!/usr/bin/python
# -*- coding: utf-8 -*-

# ソラリゼーション

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)
# ((399L, 600L, 3L), dtype('uint8'))


# 画像の表示
plt.title("before")
plt.imshow(im)
plt.show()


# 画像サイズを取得
height= im.shape[0]
width = im.shape[1]



##全画素を走査し、色情報を変換する。
for x in range(height):
    for y in range(width):
        
        # ソラリゼーション
        for i in range(3):
            if im[x,y,i] <= 127:
                im[x,y,i] = im[x,y,i] * 2
            else:
                im[x,y,i] = 255 * 2 - im[x,y,i] * 2
            

print(im.shape, im.dtype)
# ((399L, 600L, 3L), dtype('uint8'))

# 画像の表示
plt.title("after")
plt.imshow(im)
plt.show()

#保存
Image.fromarray(im).save('output.bmp')

実行結果

f:id:genetaka1810:20191110120854p:plain

補足

  • ネガ画像とは、実際の明暗が逆になっている画像のことです。明るい所が黒く、暗い所が白く表示されます。ポジ画像は、ネガ画像とは逆に明るい所が白く、暗い所が黒く表示されます。

 f:id:genetaka1810:20191110121825p:plain