当前位置:首页 >> 硬件技术 >> 【TensorFlow-windows】投影变换,费雪嘘嘘乐

【TensorFlow-windows】投影变换,费雪嘘嘘乐

cpugpu芯片开发光刻机 硬件技术 4
文件名:【TensorFlow-windows】投影变换,费雪嘘嘘乐 【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 npimport tensorflow as tfimport 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])

总结

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

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

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

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接