画像処理はじめました。

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

2-1 「バイアス調整」

モチベーション

画像全体を明るくしたり暗くしたりできます。

やり方

PILライブラリを使用し画像を読み込みます。
各画素値にバイアス値を加えて作成します。

プログラム

#!/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)

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


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

# バイアス値
b = 70

##全画素を走査し、バイアス値を加算する
for x in range(height):
    for y in range(width):

        # im[x,y,0]で、座標x,yのカラー情報(赤)を取得する
        # グレースケール画像の場合は、R,G,Bの値が同じとなるので、1色分を参照する
        p = im[x,y,0] + b   

        # 画素値は255でクリッピングする
        if p > 255:
            im[x,y] = 255
        elif p < 0:
            im[x,y] = 0
        else:
            im[x,y]=p


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

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

実行結果

f:id:genetaka1810:20200125170432p:plain
バイアス調整結果

解説

各画素値にバイアス値70を加えています。
そのため元の画像よりも明るい画像が得られます。モノクロ8ビット画像の場合、画素値の最大値は255ですので、バイアス値を加えた結果が70を超える場合は、255にクリッピングしています。
同様に負のバイアス値を設定し、画素値とバイアス値の加算結果がマイナスになる場合は、画素値の下限値を0としています。