lisz-works

プログラミングと興味を貴方に

TensorFlow v2 画像の色調補正:オーグメンテーション

【スポンサーリンク】

TensorFlow

こんにちわlisです!

TensorFlow v2によるオーグメンテーションについてです。

今回は、画像の切り出しについてです。

事前準備等

必要なものはこの2つ。

import tensorflow as tf
from matplotlib import pylab as plt

適宜インストールしてください。

加工した画像を表示して確認したい!という場合は、こちらをご参照ください!

https://www.lisz-works.com/entry/tensorflow2-matplotlib-img-showwww.lisz-works.com

元画像

元画像はこちらです。

元の画像

これと見比べて「こうなるのねー」と見てみてください。

明るさ調整

第2引数の値ごとに明るさが変わります。

-1.0 ~ 1.0の幅で

  • -1.0: 最も暗い
  • 0.0: 元の明るさ
  • 1.0: 最も明るい

という感じでした。

±1.0までいくと、もはや真っ黒と真っ白で見えません。

delta = 0.5
img = tf.image.adjust_brightness(image, delta)
show(img)

明るさ 0.5

img = tf.image.adjust_brightness(image, -0.5)
show(img)

明るさ  -0.5

img = tf.image.adjust_brightness(image, 0.1)
show(img)

明るさ 0.1

コントラスト

第2引数の値に応じて、コントラストがかかります。

イマイチ適正値がわかりません。

数値をマイナスにするとネガポジみたくなりました。

factor = 1
img = tf.image.adjust_contrast(image, factor)
show(img)

コントラスト 1

img = tf.image.adjust_contrast(image, 2)
show(img)

コントラスト 2

img = tf.image.adjust_contrast(image, 10)
show(img)

コントラスト 10

img = tf.image.adjust_contrast(image, -5)
show(img)

コントラスト -5

img = tf.image.adjust_contrast(image, -10)
show(img)

コントラスト -10

ガンマ

公式とか、こちらとかをザクッと読んだんですが、イマイチ理解が追いついていないけど名前は知っているガンマです。

第2-3引数の効果が不明なのですが、公式の引数の翻訳曰く

  • gamma: スカラーまたはテンソル。非負の実数。
  • gain: スカラーまたはテンソル。定数乗数。

とのことです。

gamma = 0.5
gain = 0.5
img = tf.image.adjust_gamma(image, gamma, gain)
show(img)

ガンマ 0.5/0.5

img = tf.image.adjust_gamma(image, 1, 1)
show(img)

ガンマ 1/1

img = tf.image.adjust_gamma(image, 0.5, 1)
show(img)

ガンマ 0.5/1

img = tf.image.adjust_gamma(image, 1, 0.5)
show(img)

ガンマ 1/0.5

色相

www.peko-step.com

delta = 1.0
img = tf.image.adjust_hue(image, delta)
show(img)

色相 1

img = tf.image.adjust_hue(image, 0.9)
show(img)

色相 0.9

img = tf.image.adjust_hue(image, 0.8)
show(img)

"C:\Users\YutaShibasaki\Desktop\entry\tf2_img_edit\output_24_0.png"

img = tf.image.adjust_hue(image, 0.7)
show(img)

色相 0.7

img = tf.image.adjust_hue(image, 0.6)
show(img)

色相 0.6

img = tf.image.adjust_hue(image, 0.5)
show(img)

色相 0.5

img = tf.image.adjust_hue(image, 0.4)
show(img)

色相 0.4

img = tf.image.adjust_hue(image, 0.3)
show(img)

色相 0.3

img = tf.image.adjust_hue(image, 0.2)
show(img)

色相 0.2

img = tf.image.adjust_hue(image, 0.1)
show(img)

色相 0.1

img = tf.image.adjust_hue(image, 0.0)
show(img)

色相 0.0

マイナス値にしても、プラスの同じ値と変わらないみたい。

img = tf.image.adjust_hue(image, -0.5)
show(img)

色相 -0.5

飽和

画像で「飽和」って単語を使うんですね……知りませんでした……

調べた感じ、彩度が高すぎて周辺の色と同化して潰れちゃう感じみたいですね。

www.dejikame.net

引数は「彩度を乗算する係数(float)」とのことなので、なんとなくあってそう。

saturation_factor = 1.0
img = tf.image.adjust_saturation(image, saturation_factor)
show(img)

飽和 1.0

img = tf.image.adjust_saturation(image, 2.0)
show(img)

飽和 2.0

img = tf.image.adjust_saturation(image, 0.5)
show(img)

飽和 0.5

img = tf.image.adjust_saturation(image, -0.5)
show(img)

飽和 -0.5

img = tf.image.adjust_saturation(image, 2.0)
show(img)

飽和 2.0

img = tf.image.adjust_saturation(image, -0.2)
show(img)

飽和 -0.2

標準化(standardization)

関数名的に「標準化」で合ってる……のでしょうか?

Linearly scales each image in image to have mean 0 and variance 1.

(訳) 画像の各画像を線形にスケーリングして、平均0と分散1にします。
引用: tf.image.per_image_standardization  |  TensorFlow Core v2.1.0

とあるのですが、イマイチよくわからず……

img = tf.image.per_image_standardization(image)
show(img)

標準化

参考

コチラを参考にしました。ありがとうございました!

www.tensorflow.org www.tensorflow.org www.tensorflow.org www.tensorflow.org www.tensorflow.org www.tensorflow.org

あとがき

TensorFlow v2による、画像切り出しについてでした!

https://www.lisz-works.com/entry/tensorflow2-matplotlib-img-showwww.lisz-works.com