カラー画像変換

本サイトの目的

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

R, G, Bトーンカーブによる変換

折れ線型トーンカーブ

線型のトーンカーブにより入力画像のコンストラストを上げた。

コントラストがより鮮明になっていることがわかる。 f:id:unachan_kz:20200510141144p:plain

def step_plot(x):
    th1_data=30
    th2_data=190
    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)

sin curve

R, G,Bで同じカーブでもsinカーブのトーンなどは意図しない変換が行われてしまいます。 f:id:unachan_kz:20200510141413p:plain

def s2_plot(x):
    y = (np.sin(np.pi * (x/255 - 0.5)*6) + 1) * 255
    return y

累乗型トーンカーブ

折れ線型のトーンカーブでは、トーンカーブの折れ曲がっている点の前後で変換の性質が急激に変わります。 またトーンカーブが水平な部分では、画素値が全て一定になるため、入力画像のその範囲の濃淡変化は完全に失われます。

入力値をx,出力画像の画素値をyとするとき、このトーンカーブは以下で表すことができます。

$$ y= 255\left( \frac{x}{255} \right) ^\gamma $$

γが1より大きい時

画素が明るくなり、画素が位箇所がみやすくなっている。 f:id:unachan_kz:20200510142938p:plain

def curve_gamma1(x):
    gamma = 2
    y = 255*(x/255)**(1/gamma)
    return y

γが1より小さい時

画素が暗くなっている。

f:id:unachan_kz:20200510143120p:plain

def curve_gamma2(x):
    gamma = 1/2
    y = 255*(x/255)**(1/gamma)
    return y

参考資料

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

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

github.com

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

五島について

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

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

goto.nagasaki-tabinet.com