【问题标题】:Image deformations in TensorFlowTensorFlow 中的图像变形
【发布时间】:2019-01-26 07:19:31
【问题描述】:

Tensorflow 1.8 添加了实用程序以应用图像变形(参见例如sparse_image_warpdense_image_warp)。这很好,但我一直找不到任何实用程序来创建变形。

举个例子,我可以按照以下方式随机旋转一张图片:

radians = tf.random_uniform([], -1.0, 1.0)
img = tf.contrib.image.rotate(img, radians)

使图像变形的等效代码是什么?

flow = ...  # your code here
img = tf.contrib.image.dense_image_warp(img, flow)

我知道可以通过多种方式生成流,只要不破坏图像,我对选择哪一种并不十分挑剔(例如,我正在寻找diffeomorphism或至少一个homeomorphism)。

【问题讨论】:

  • 我想我看到了一些可能与 Keras 数据增强队列代码相关的代码,但我可能弄错了。
  • image.apply_affine_transform ?
  • apply_affine_transform,顾名思义,应用一个变形,它不会生成它。虽然仿射变换是微分同胚,但它们可能有点太简单了。
  • 好吧,我误解了你所说的生成的意思
  • np.meshgrid 的组合+随机生成的矢量的添加重新整形以适应网格网格?

标签: python tensorflow image-processing


【解决方案1】:

看来你可能想看看this kaggle page 的弹性转换,它实现了this article

这与我的 meshgrid+noise 基线非常相似,尽管它似乎更小心地完成,所提供的示例表明您可以极大地扰乱图像而不会得到完全的垃圾,希望它有所帮助。

编辑:您可以查看this new library,它实现了不同的图像变换,包括网格失真,这可能为图像变形提供弹性变换的替代方案

【讨论】:

  • 这段代码没有使用有问题的张量流层。
  • 使用tf.py_func或使用相应的函数重新实现它很简单。
  • 据我了解,问题是如何使用tf.contrib.image.dense_image_warp
  • 您只需使用我的答案计算 numpy 中的偏移量,然后使用 tf.convert_to_tensor() 将其转换为张量,您就有了 dense_image_wrap() 的流参数。
猜你喜欢
  • 2017-09-15
  • 1970-01-01
  • 2017-05-02
  • 1970-01-01
  • 2012-09-26
  • 2014-11-30
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多