画素ごとの濃淡変換

本サイトの目的

2020年のGWは五島に帰省できず、また五島の人は観光客の激減で困っている。 そこで自分にできることは無いかと考え、五島の写真を使用し画像処理技術を勉強した内容を公開することで 五島に貢献したいと考えた。

画素ごとの濃淡変換

トーンカーブ

画像の各画素(ピクセル)は濃淡を表す画素値(R, G,B)を持っています。画像の濃淡を変化させるためには、入力画像のそれぞれの画像値に対し、出力画像の画素値をどのように対応づけるかを指定すればよいです。 このような対応関係を与えることを諧調変換関数、またそれをグラフで表したものをトーンカーブと呼びます。

折れ線型トーンカーブ

折れ線で表されるトーンカーブは単純であるが、カーブの設定が容易であるため簡単に確認できました。 確認結果の全てのソースコードは一番したに記載しております。

入力画像の黒い領域に隠れていた車の輪郭が変換後、鮮明に特徴抽出することができることを確認できます。 f:id:unachan_kz:20200510104856p:plain

def step_plot(x):
    th1_data=0
    th2_data=80
    delta_x=th2_data-th1_data
    a= 255/delta_x
    _x=np.where(x<th1_data,0,a*(x-th1_data))
    y=np.where(_x>255,255,_x)
    return(y)

画素の濃淡の反転

入力画像の画素の濃淡を反転されることで出力画像の濃淡が反転します。 f:id:unachan_kz:20200510110659p:plain

def invert(pixel):
    return 255 - pixel

2値化

画像を2値化して確認することができます。 f:id:unachan_kz:20200510111455p:plain

def do_binarization(x):
    th1_data=127
    y=np.where(x<th1_data,0,255)
    return(y)

ソラリゼーション(solarization)

画像の濃淡の一部分を反転させることにより、negative , positiveの画像が混ざり合ったような特殊な効果を出しているようです。

f:id:unachan_kz:20200510113641p:plain

このコードが正しいのかは不明ですが、デジタル画像処理の本を参考にして、考えて作ってみました。 可能でしたら、間違いがありましたらご指摘いただけましたら幸いです。

def solarization_sin(x):
    y = ((-np.cos(0.035*x)+1.0)/2.0)*255
    return y

参考資料

デジタル画像処理の4-1, 4-2章を参考にしました。

また本実験に使用したコードを下記に保存いたしました。

github.com

なおソースコードは下記の方のブログを参考にさせていただきました。 optie.hatenablog.com

五島について

分析を行うたびに五島についてご紹介します。

おすすめの場所 3 鬼岳がやはりおすすめです。

是非コロナが落ち着きましたら、地域を普及させるためにも五島に旅してくださいねー。

goto.nagasaki-tabinet.com