Сохраняйте тензоры как изображения в TensorFlow
Это может быть простой вопрос. Я просто пытаюсь сделать радоновое преобразование изображения и сохранить его с помощью функций в TensorFlow. Но результат не правильный. Я знаю, что могу использовать plt.imsave() для правильного сохранения изображения, но я хочу знать, как это сделать в TensorFlow.
Я новичок в TensorFlow и благодарю вас за вашу помощь.
Это shepp-logan.jpg
изображение я использую. Это изображение в градациях серого с размером 64*64
Вот мой код
from skimage.transform import radon,iradon
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
sess = tf.Session()
img = plt.imread('shepp-logan.jpg')
theta = np.linspace(0., 180., max(img.shape), endpoint=False)
sinogram = radon(img, theta=theta, circle=True)
sinogram = tf.cast(sinogram, tf.uint8)
sinogram = tf.expand_dims(sinogram, -1)
sinogram = tf.image.encode_jpeg(sinogram, quality=100, format='grayscale')
writer = tf.write_file('test_sinogram.jpg', sinogram)
sess.run(writer)
1 ответ
Проблема в том, что функция радон возвращает значения, слишком высокие для тензорного потока. Tensorflow хочет значения от 0 до 255 (uint8
) на канал.
Я не смотрел, почему это так, но я сделал быстрый тест после просмотра значений в sinogram
и решил разделить на np.max(sinogram)
и результат выглядит намного ближе к тому, что вы ожидаете, я верю:)
from skimage.transform import radon,iradon
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
sess = tf.Session()
img = plt.imread('shepp-logan.jpg')
theta = np.linspace(0., 180., max(img.shape), endpoint=False)
sinogram = radon(img, theta=theta, circle=True)
# scaling the values here
sinogram = 255*sinogram/np.max(sinogram)
sinogram = tf.cast(sinogram, tf.uint8)
sinogram = tf.expand_dims(sinogram, -1)
sinogram = tf.image.encode_jpeg(sinogram, quality=100, format='grayscale')
writer = tf.write_file('test_sinogram.jpg', sinogram)
sess.run(writer)
Что касается тензорной доски, которую я рекомендую вам использовать, вы должны использовать tf.summary.image: https://www.tensorflow.org/api_docs/python/tf/summary/image
А вот руководство по тензорной доске: https://www.tensorflow.org/programmers_guide/summaries_and_tensorboard