gpt4 book ai didi

python - 如何在 tensorflow 中实现图像的直方图均衡化?

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:30 25 4
gpt4 key购买 nike

我是深度学习和 Tensorflow 新手。

我正在尝试修改 cifar10 tensorflow 教程以将其用于人脸输入图像。

如何计算直方图均衡化?

是否可以包装类似于以下内容的解决方案:Histogram equalization of grayscale images with NumPy

最佳答案

对于灰度 uint8 图像,您可以使用如下内容:

def tf_equalize_histogram(image):
values_range = tf.constant([0., 255.], dtype = tf.float32)
histogram = tf.histogram_fixed_width(tf.to_float(image), values_range, 256)
cdf = tf.cumsum(histogram)
cdf_min = cdf[tf.reduce_min(tf.where(tf.greater(cdf, 0)))]

img_shape = tf.shape(image)
pix_cnt = img_shape[-3] * img_shape[-2]
px_map = tf.round(tf.to_float(cdf - cdf_min) * 255. / tf.to_float(pix_cnt - 1))
px_map = tf.cast(px_map, tf.uint8)

eq_hist = tf.expand_dims(tf.gather_nd(px_map, tf.cast(image, tf.int32)), 2)
return eq_hist

用于测试:

import tensorflow as tf
import numpy as np
import cv2

image_ph = tf.placeholder(tf.uint8, shape = [None, None, 1])
image_eq_hist = tf_equalize_histogram(image_ph)

image = cv2.imread("./test_gs.png", 0)
image = np.reshape(image, (image.shape[0], image.shape[1], 1))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
image_eq_hist_ = sess.run(image_eq_hist, feed_dict = {image_ph : image})

cv2.imshow("eq_cv", cv2.equalizeHist(image))
cv2.imshow("eq", image_eq_hist_)
cv2.waitKey()

关于python - 如何在 tensorflow 中实现图像的直方图均衡化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42835247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com