【TensorFlow-windows】投影变换

前言

没什么重要的,就是想测试一下tensorflow的投影变换函数tf.contrib.image.transform中每个参数的含义

国际惯例,参考文档

官方文档

描述

调用方法与默认参数:

tf.contrib.image.transform(images,transforms,interpolation='NEAREST',output_shape=None,name=None
)

输入解释:

  • images: 输入图像的占位符,通常三种输入(图像数量,高,宽,通道),(高,宽,通道),(高,宽)

  • transforms:投影变换矩阵,维数为8的向量,可以是(1,8)或(N,8),假设是(a1,a2,a3,b1,b2,b3,c1,c2)(a_1,a_2,a_3,b_1,b_2,b_3,c_1,c_2)(a1,a2,a3,b1,b2,b3,c1,c2),执行的操作就是将(x,y)投影到(x’,y’)
    [a1a2a3b1b2b3]×[xy1]×1k=[x′y′]w.t.l=c1x+c2y+1\begin{bmatrix} a_1&a_2&a_3\\ b_1&b_2&b_3 \end{bmatrix}\times \begin{bmatrix} x\\y\\1 \end{bmatrix}\times \frac{1}{k}=\begin{bmatrix} x'\\y' \end{bmatrix}\\ w.t.\quad l=c_1x+c_2y+1 [a1b1a2b2a3b3]×xy1×k1=[xy]w.t.l=c1x+c2y+1
    通俗点就是:
    [x′,y′]=[(a1x+a2y+a3)/k,(b1x+b2y+b3)/k][x', y'] = [(a_1 x + a_2 y + a_3) / k, (b_1 x + b_2 y + b_3) / k] [x,y]=[(a1x+a2y+a3)/k,(b1x+b2y+b3)/k]
    通过矩阵的形式更能看出来是坐标变换。

  • interpolation:插值方法,近邻插值NEAREST,双线性插值BILINEAR

  • output_shape:输出大小,默认是输入大小

代码

基本代码:

import numpy as np
import tensorflow as tf
import cv2#创建装图像的容器
input=tf.placeholder(dtype=np.uint8,shape=[640,1024,3]) #高,宽,通道
#创建操作
trans_op=tf.contrib.image.transform(input,[1,0,0,0,1,0,0,0])#读取图像
img=cv2.imread('test_img.jpg')#执行操作
with tf.Session() as sess:trans_img=sess.run(trans_op,feed_dict={input:img})cv2.imshow('img',trans_img)
cv2.waitKey()
cv2.destroyAllWindows()

可以得到原图为:

在这里插入图片描述

修改a1a_1a1

trans_op=tf.contrib.image.transform(input,[2,0,0,0,1,0,0,0])

在这里插入图片描述

修改a2a_2a2

trans_op=tf.contrib.image.transform(input,[1,0.5,0,0,1,0,0,0])

在这里插入图片描述

修改a3a_3a3

trans_op=tf.contrib.image.transform(input,[1,0,100,0,1,0,0,0])

在这里插入图片描述

修改b1b_1b1

trans_op=tf.contrib.image.transform(input,[1,0,0,0.5,1,0,0,0])

在这里插入图片描述

修改b2b_2b2

trans_op=tf.contrib.image.transform(input,[1,0,0,0,2,0,0,0])

在这里插入图片描述

修改b3b_3b3

trans_op=tf.contrib.image.transform(input,[1,0,0,0,1,100,0,0])

在这里插入图片描述

调整c1c_1c1

trans_op=tf.contrib.image.transform(input,[1,0,0,0,1,0,0.0005,0])

在这里插入图片描述

调整c2c_2c2

trans_op=tf.contrib.image.transform(input,[1,0,0,0,1,0,0,0.0005])

在这里插入图片描述

总结

前六个参数按顺序,讲道理应该是:左缩放,左拉扯,左移,上拉扯,上缩放,上移

后两个参数不清楚名称是什么,感觉扭曲了一下,而且值要很小

代码就不分享了,上面已经贴出完整的了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【TensorFlow-windows】扩展层之STN

前言 读TensorFlow相关代码看到了STN的应用,搜索以后发现可替代池化,增强网络对图像变换(旋转、缩放、偏移等)的抗干扰能力,简单说就是提高卷积神经网络的空间不变性。 国际惯例,参考博客: 理解Spatial Transformer…

【TensorFlow-windows】MobileNet理论概览与实现

前言 轻量级神经网络中,比较重要的有MobileNet和ShuffleNet,其实还有其它的,比如SqueezeNet、Xception等。 本博客为MobileNet的前两个版本的理论简介与Keras中封装好的模块的对应实现方案。 国际惯例,参考博客: 纵…

【TensorFlow-windows】keras接口——ImageDataGenerator裁剪

前言 Keras中有一个图像数据处理器ImageDataGenerator,能够很方便地进行数据增强,并且从文件中批量加载图片,避免数据集过大时,一下子加载进内存会崩掉。但是从官方文档发现,并没有一个比较重要的图像增强方式&#x…

【TensorFlow-windows】TensorBoard可视化

前言 紧接上一篇博客,学习tensorboard可视化训练过程。 国际惯例,参考博客: MNIST机器学习入门 Tensorboard 详解(上篇) Tensorboard 可视化好帮手 2 tf-dev-summit-tensorboard-tutorial tensorflow官方mnist_…

深度学习特征归一化方法——BN、LN、IN、GN

前言 最近看到Group Normalization的论文,主要提到了四个特征归一化方法:Batch Norm、Layer Norm、Instance Norm、Group Norm。此外,论文还提到了Local Response Normalization(LRN)、Weight Normalization(WN)、Batch Renormalization(BR)…

【TensorFlow-windows】keras接口——利用tensorflow的方法加载数据

前言 之前使用tensorflow和keras的时候,都各自有一套数据读取方法,但是遇到一个问题就是,在训练的时候,GPU的利用率忽高忽低,极大可能是由于训练过程中读取每个batch数据造成的,所以又看了tensorflow官方的…

骨骼动画——论文与代码精读《Phase-Functioned Neural Networks for Character Control》

前言 最近一直玩CV,对之前学的动捕知识都忘得差不多了,最近要好好总结一下一直以来学习的内容,不能学了忘。对2017年的SIGGRAPH论文《Phase-Functioned Neural Networks for Character Control》进行一波深入剖析吧,结合源码。 额…

颜色协调模型Color Harmoniztion

前言 最近做换脸,在肤色调整的那一块,看到一个有意思的文章,复现一波玩玩。不过最后一步掉链子了,有兴趣的可以一起讨论把链子补上。 主要是github上大佬的那个复现代码和原文有点差异,而且代码复杂度过高&#xff0…

Openpose推断阶段原理

前言 之前出过一个关于openpose配置的博客,不过那个代码虽然写的很好,而且是官方的,但是分析起来很困难,然后再opencv相关博客中找到了比较清晰的实现,这里分析一波openpose的推断过程。 国际惯例,参考博…

换脸系列——眼鼻口替换

前言 想着整理一下换脸相关的技术方法,免得以后忘记了,最近脑袋越来越不好使了。应该会包含三个系列: 仅换眼口鼻;换整个面部;3D换脸 先看看2D换脸吧,网上已经有现成的教程了,这里拿过来整理一…

换脸系列——整脸替换

前言 前面介绍了仅替换五官的方法,这里介绍整张脸的方法。 国际惯例,参考博客: [图形算法]Delaunay三角剖分算法 维诺图(Voronoi Diagram)分析与实现 Delaunay Triangulation and Voronoi Diagram using OpenCV (…

3D人脸重建——PRNet网络输出的理解

前言 之前有款换脸软件不是叫ZAO么,分析了一下,它的实现原理绝对是3D人脸重建,而非deepfake方法,找了一篇3D重建的论文和源码看看。这里对源码中的部分函数做了自己的理解和改写。 国际惯例,参考博客: 什…

tensorflow官方posenet模型解析

前言 tensorflow官方有个姿态估计项目,这个输入和openpose还有点不一样,这里写个单人情况下的模型输出解析方案。 国际惯例,参考博客: 博客: 使用 TensorFlow.js 在浏览器端上实现实时人体姿势检测 tensorflow中posnet的IOS代…

tensorflow2安装时候的一个dll找不到的错误

电脑环境: vs2015python3.7.6,使用anaconda安装的CUDA 10.1cuDnn 7.6.5tensorflow2.1.0 错误内容 File "C:\Users\zb116\anaconda3\lib\imp.py", line 242, in load_modulereturn load_dynamic(name, filename, file)File "C:\Users\z…

PCA、SVD、ZCA白化理论与实现

简介 在UFLDL中介绍了主成分分析这一块的知识,而且当时学机器学习的时候,老师是将PCA和SVD联系起来将的,同时UFLDL也讲到了使用PCA做数据白化whitening处理,这个词经常在论文里面看到。 国际惯例,参考博客&#xff1…

OpenCV使用Tensorflow2-Keras模型

前言 最近工作上需要在C上快速集成Tensorflow/Keras训练好的模型,做算法验证。首先想到的就是opencv里面的dnn模块了,但是它需要的格式文件比较郁闷,是pb格式的模型,但是keras通常保存的是h5文件,查阅了很多资料&…

3D人脸表情驱动——基于eos库

前言 之前出过三篇换脸的博文,遇到一个问题是表情那一块不好处理,可行方法是直接基于2D人脸关键点做网格变形,强行将表情矫正到目标人脸,还有就是使用PRNet的思想,使用目标人脸的顶点模型配合源人脸的纹理&#xff0c…

3D姿态估计——ThreeDPose项目简单易用的模型解析

前言 之前写过tensorflow官方的posenet模型解析,用起来比较简单,但是缺点是只有2D关键点,本着易用性的原则,当然要再来个简单易用的3D姿态估计。偶然看见了ThreeDPose的项目,感觉很强大的,所以把模型扒下来…

简易的素描图片转换流程与实现

前言 之前经常在网上看到用PS实现真实图片到素描图片的转换,但是流程都大同小异,身为一只程序猿,必须来个一键转化额。 国际惯例,参考博客: Photoshop基础教程:混合模式原理篇 颜色减淡的原理讲解以及应…

一个简单好用的磨皮祛斑算法理论和python实现

前言 最近看了一个磨皮算法祛斑感觉效果不错,效果图看文末就行,个人觉得效果非常不错滴。 国际惯例,参考博客: 磨皮算法的源码:YUCIHighPassSkinSmoothing How To Smooth And Soften Skin With Photoshop 图像算法…