2016-10-25 19 views
1

TensorFlow初心者ここでは、私が失敗するa simple tutorialのトレーニングです。 画像をグレースケールに変換することがポイントです。tf.reduce_mean&tf.concatを使用したグレースケール変換

私たちのデータは、基本的にHxWx3(画像の高さ、幅、3つの値r、g、bの色)です。

したがって、各アレイセルを[r, g, b]から[gray, gray, gray]に変換するのと同等である可能性があります。gray = mean(r, g, b)は正しいですか?

したがって、私は平均関数のために文書をチェックし、reduce_meanを見つけました。私はそれを色軸、すなわちaxis = 2で使用し、軸2を使用して結果を再度連結して平均値を複製し、最終的にグレー値(=平均)を赤、緑、青の3倍にします。このコードを実行することができますが、結果はOKではありません

import tensorflow as tf 
import matplotlib.image as mpimg 

filename = "MarshOrchid.jpg" 
raw_image_data = mpimg.imread(filename) 

image = tf.placeholder("uint8", [None, None, 3]) 

# Reduce axis 2 by mean (= color) 
# i.e. image = [[[r,g,b], ...]] 
# out = [[[ grayvalue ], ... ]] where grayvalue = mean(r, g, b) 
out = tf.reduce_mean(image, 2, keep_dims=True) 

# Associate r,g,b to the same mean value = concat mean on axis 2. 
# out = [[[ grayvalu, grayvalue, grayvalue], ...]] 
out = tf.concat(2, [out, out, out]) 

with tf.Session() as session: 
    result = session.run(out, feed_dict={image: raw_image_data}) 

print(result.shape) 
plt.imshow(result) 
plt.show() 

(You can get original image here)

enter image description here

は、以下のコードを参照してください。

When grayscale fails

私は私の変数をチェックし、それは平均がOKではないことが判明何が起こったのか、(88、147、137)の平均、下のスクリーンショットに示されている疑問に思う!= 38

enter image description here

私が間違ったことを理解できません...

ありがとう! (理由オーバーフローの)平均値を計算する前に pltrdy

答えて

2

変更DTYPEを:

エラーがプレースホルダのDTYPEから来ます。型推論を引き起こすため、中間テンソルは255より大きい値(2^8-1)を持つことはできません。 Tensorflowが平均(147,137,88)を計算するとき、最初にsum(147,137,88)= 372,372> 256を計算するので、372%を維持する256 = 116.

そして、 137、88)=合計(147,137,88)/ 3 = 116/3 = 40 プレースホルダのdtypeを「uint16」または「uint32」に変更します。

結果uint16のへの切り替え(本当に正しい説得力がない?):pyplot仕様に合わせて、それをプロットする前に

enter image description here

変更DTYPEバックのuint8に

(see lib doc about imshow) がそれことに言及uint8でなければなりません。何らかの理由で、uint16を使用しても機能しません(逆の色のように見えますが、以前のグレースケール変換では暗い部分が白です。

実行の直前にtf.castを使用してuint_に戻ります(例:確かに

enter image description here

+0

:)は、以下の良好なグレースケール変換を提供します!良い仕事&thx。 まだ、色が反転しているようです(画像の暗い部分はグレースケールで白に近いです)。奇妙な、私は調査する、もう一つの質問thats – pltrdy

+0

解決済み、編集 – pltrdy

関連する問題