Python OpenCV3でソラリゼーション(階調を変換)

Share on Facebook
Pocket
LINEで送る
Bookmark this on Google Bookmarks

Python OpenCV3でソラリゼーション(Soralization)
ソラリゼーションを行うと、画像の一部分の濃淡が反転したような画像になる。

 

前提

ディレクトリ構成などはこことかこことか。

&nbsp

元画像

ガンマ変換などと比較しやすいために、同じこの画像(sora2.jpg)を使う。
以前の例だとsource/imageディレクトリ配下に設置する。

sora

 

ルックアップテーブル

ルックアップテーブルは以下のようなグラフを使う。
(実際にはyの値に100かけたものを使う。とりあえず曲線ならなんでもいいだろうという安易な考え。)
 

スクリーンショット 2015-06-23 8.41.08

 

ソラリゼーション

ソラリゼーションは今回は以下の様な関数を使う。

solarization_const = 2 \times \pi / 255
f(x) = sin(x * solarization_const) * 100

 

sourceディレクトリ配下にsolarization.pyを作成する。
これまでと同様に事前にルックアップテーブルを作成し、OpenCV3のLUTメソッドの引数でルックアップテーブルを指定し、ソラリゼーションを行う。

# -*- coding: utf-8 -*-

import cv2
import numpy as np

if __name__ == '__main__':

    # ルックアップテーブルを作成するため変数の定義
    solarization_const = 2 * np.pi / 255

    # ルックアップテーブルの生成
    """
    array([[0],
           [0],
           [0],
           [0],
           [0],
           [0],
           [0],
        ・・・・・・・・
           [0], dtype='uint8')
    のようなリストが生成される。
    """
    look_up_table = np.ones((256, 1), dtype = 'uint8' ) * 0

    for i in range(256):

        look_up_table[i][0] = np.abs(np.sin(i * solarization_const)) * 100

    # 画像の読み込み
    img_src = cv2.imread("./image/sora2.jpg", 1)

    # ソラリゼーション後の出力
    img_sola = cv2.LUT(img_src, look_up_table)

    # 表示
    cv2.imshow("Show SOLARIZATION Image", img_sola)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

実行してみる。

(opencv_python)$ python solarization.py

スクリーンショット 2015-06-23 8.48.17

空の色だけが反転しているのが見て取れる。

 

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です