こんにちわ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)
img = tf.image.adjust_brightness(image, -0.5)
show(img)
img = tf.image.adjust_brightness(image, 0.1)
show(img)
コントラスト
第2引数の値に応じて、コントラストがかかります。
イマイチ適正値がわかりません。
数値をマイナスにするとネガポジみたくなりました。
factor = 1
img = tf.image.adjust_contrast(image, factor)
show(img)
img = tf.image.adjust_contrast(image, 2)
show(img)
img = tf.image.adjust_contrast(image, 10)
show(img)
img = tf.image.adjust_contrast(image, -5)
show(img)
img = tf.image.adjust_contrast(image, -10)
show(img)
ガンマ
公式とか、こちらとかをザクッと読んだんですが、イマイチ理解が追いついていないけど名前は知っているガンマです。
第2-3引数の効果が不明なのですが、公式の引数の翻訳曰く
- gamma: スカラーまたはテンソル。非負の実数。
- gain: スカラーまたはテンソル。定数乗数。
とのことです。
gamma = 0.5 gain = 0.5 img = tf.image.adjust_gamma(image, gamma, gain) show(img)
img = tf.image.adjust_gamma(image, 1, 1) show(img)
img = tf.image.adjust_gamma(image, 0.5, 1) show(img)
img = tf.image.adjust_gamma(image, 1, 0.5) show(img)
色相
delta = 1.0
img = tf.image.adjust_hue(image, delta)
show(img)
img = tf.image.adjust_hue(image, 0.9)
show(img)
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)
img = tf.image.adjust_hue(image, 0.6)
show(img)
img = tf.image.adjust_hue(image, 0.5)
show(img)
img = tf.image.adjust_hue(image, 0.4)
show(img)
img = tf.image.adjust_hue(image, 0.3)
show(img)
img = tf.image.adjust_hue(image, 0.2)
show(img)
img = tf.image.adjust_hue(image, 0.1)
show(img)
img = tf.image.adjust_hue(image, 0.0)
show(img)
マイナス値にしても、プラスの同じ値と変わらないみたい。
img = tf.image.adjust_hue(image, -0.5)
show(img)
飽和
画像で「飽和」って単語を使うんですね……知りませんでした……
調べた感じ、彩度が高すぎて周辺の色と同化して潰れちゃう感じみたいですね。
引数は「彩度を乗算する係数(float)」とのことなので、なんとなくあってそう。
saturation_factor = 1.0
img = tf.image.adjust_saturation(image, saturation_factor)
show(img)
img = tf.image.adjust_saturation(image, 2.0)
show(img)
img = tf.image.adjust_saturation(image, 0.5)
show(img)
img = tf.image.adjust_saturation(image, -0.5)
show(img)
img = tf.image.adjust_saturation(image, 2.0)
show(img)
img = tf.image.adjust_saturation(image, -0.2)
show(img)
標準化(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