在深度学习的过程中,往往对输入图像的大小需要进行一个调整,特别是对于拥有全连接层的神经网络,因为全连接层的节点数是固定的。因此,为了满足全连接层的一个输入的要求,我们可以利用tensorflow自带的函数来进行图像大小的调整。

总体来说一共有三个函数。原始图像大小为1242*375.

一、tf.image.resize_images(image,shape,method)

一共有三个参数,第一个是原始图像,第二个是重采样目标影像大小,第三个是重采样的方法。双线性插值算法(Bilinear interpolation);Method取值为:0;最近邻居法(Nearest  neighbor interpolation);Method取值为:1;双三次插值法(Bicubic interpolation);Method取值为:2;

这个函数是通过插值的方式实现图像的大小变换,包括最近邻插值,双线性插值,双三次插值等。

双线性插值图像变小
双线性插值图像变大

二、tf.image.resize_image_with_crop_or_pad(image,IMG_W,IMG_H)

一共有三个参数,分别是原始图像,目标图像的宽,目标图像的高。

这个函数不是通过插值改变图像大小,而是直接通过裁剪和填充。这么做的好处就是不会让图像看上去又明显的畸变,但是会使得原始图像不完整。

cropping
padding

三、tf.image.central_crop(image,rate)

这个函数一共有两个参数,一个是原始图像,另一个是原始图像调整的比例。注意,这种算法rate只能在0-1之间,否则会出现错误。

raise ValueError('central_fraction must be within (0, 1]')ValueError: central_fraction must be within (0, 1]

这个函数是对原始图像整体的比例进行调整。实际上,有点类似于第二个函数,在缩小的时候实际上是采用了类似于裁剪的方法,图片中的部分物体是被裁剪掉的。

所有实验的源代码如下:

# -*- coding: utf-8 -*-
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt#这个可以用来
"""
Created on Thu Jul 19 15:42:38 2018@author: Lenovo
"""
IMG_W1 = 208  # resize图像,太大的话训练时间久
IMG_H1 = 208
IMG_W2=2000
IMG_H2=2000
BATCH_SIZE = 2picdir1 = 'E:/Study/研究生文档/密集匹配程序/train/image_2/000000_10.png'image_raw=tf.gfile.GFile(picdir1,'rb').read()
image_raw = tf.image.decode_png(image_raw)with tf.Session() as sess:plt.imshow(image_raw.eval())plt.show()#第一种方法,采用resize函数,采用双线性插值img_resized1 = tf.image.resize_images(image_raw, [100,800],method=0) img_resized1 = np.asarray(img_resized1.eval(),dtype='uint8')plt.imshow(img_resized1)plt.show()img_resized1 = tf.image.resize_images(image_raw, [900,2700],method=0) img_resized1 = np.asarray(img_resized1.eval(),dtype='uint8')plt.imshow(img_resized1)plt.show()croped = tf.image.resize_image_with_crop_or_pad(image_raw,300,300)    #目标图像大小<原始图像的大小,则截取原始图像的居中部分,padded = tf.image.resize_image_with_crop_or_pad(image_raw,1500,1500)    #目标图像大小>原始图像的大小,则会在原始图像的四周填充全为0背景plt.imshow(croped.eval())plt.show()plt.imshow(padded.eval())plt.show()central_cropped = tf.image.central_crop(image_raw,0.25)                #按照比例裁剪图像,第二个参数为调整比例,比例取值[0,1]plt.imshow(central_cropped.eval())plt.show()

总结,这次主要试验了三种不同的图像大小调整的方式。有些方式会产生形变,但内容中的物体不会丢失。有些方法虽然不会产生形变,但是内容中的物体会丢失。所以应该根据自己的需要使用。

参考博客:tensorflow改变图像大小

tensorflow入门之---------图像大小调整相关推荐

  1. Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图

    一步一步来吧 上一节:Python+Opencv图像处理新手入门教程(一):介绍,安装与起步 1.什么是图像 对于计算机而言,图像的本质是一个由像素点构成的矩阵. 例如我们用肉眼很容易分辨一辆汽车的后 ...

  2. TensorFlow学习笔记之图像大小调整(最全可运行的代码)

    一.图像编码处理 在之前的章节中提到一张RGBRGBRGB色彩模式的图像可以看成一个三维矩阵,矩阵中的每一个数表示了图像上不同位置,不同颜色的亮度.然而图像在存储时并不是直接记录这些矩阵中的数字,而是 ...

  3. 使用TensorFlow进行常用的图像处理-图像转为矩阵以及图像大小调整

    图像编码处理 将图像转为一个三维矩阵,并使用三维矩阵形成一个图像: import tensorflow as tf import matplotlib.pyplot as plt# 读取原始图像数据 ...

  4. 创建用于图像大小调整和裁剪器保持纵横比的ASP.NET控件

    目录 总览 图像尺寸调整算法 如何在网页上使用控件? 如何从控件中获取上传的图像? 源代码 参考文献 总览 我们在图像大小调整和裁剪方面存在长期问题.我们的问题是,如果我们在服务器端调整大小,图像质量 ...

  5. php 修改图像大小,PHP图像大小调整

    据我所知,您无法在上传图像之前调整图像大小. (我可能错了!)但是,当您上传图像时,它会进入一个临时文件.您可以调整临时图像的大小,并将调整后的图像复制到其最终目标. 因为(似乎)你想保持宽度不变,所 ...

  6. 调整图像大小调整图片大小

    B = imresize(A,scale) B = imresize(A,[numrows numcols]) [Y,newmap] = imresize(X,map,___) ___ = imres ...

  7. 接缝雕刻算法:一种看似不可能的图像大小调整方法

    作者|Samarendra Chandan Bindu Dash 编译|Flin 来源|analyticsvidhya 介绍 在本文中,我们将深入研究一种有趣的算法,称为"接缝雕刻" ...

  8. Matlab的SUBPLOT的图像大小调整

    解决方法: (1)subplot的子窗口都是固定的,其设置是内置的默认值,你可以通过axes函数来重新规定子窗口的大小和位置.如: axes('position',[.1  .1  .8  .6]) ...

  9. php 降低图像大小,在PHP中调整图像大小

    我想写一些PHP代码,自动将通过表单上传的任何图像大小调整为147x147px,但我不知道如何去做它(我是一个相对PHP新手). 到目前为止,我已经成功上传图片,文件类型被识别和名称清理,但我想添加r ...

最新文章

  1. linux lvm 逻辑卷 创建 扩容 缩减 删除
  2. 我对编程中常见名词的理解
  3. 树莓派linux系统识别u盘启动,树莓派Raspberry Pi实战之命令行下实现USB存储设备自动挂载...
  4. linux centos7修改默认启动的内核(升级及切换内核)
  5. hbase查询_【从零单排HBase】HBase高性能查询揭秘
  6. 自动化测试之一----基本概念
  7. java argv_argv的编码是什么?
  8. Python查找两个word中的相同内容
  9. T-SQL多个小计+合计,分类汇总
  10. 发力“创新宇宙”,酒店集团如何破局商业革新?
  11. DM达梦DSC共享集群+DW(单机)
  12. PHP删除多选checkbox,php一次性删除前台checkbox多选内容的简单示例
  13. python去马赛克
  14. 电脑文件丢失你都是怎么找回来的?
  15. ocaml_管理OCaml软件包的好工具
  16. 物联网卡无法激活使用的原因
  17. 使命召唤19发布时间曝光 确定将于10月28号发布
  18. 速速收藏——程序员接私活的七大平台
  19. linux卸载teamviewer,ubuntu 16.04 desktop + server LTS - TeamViewer 软件彻底卸载
  20. 热点解答:nmn抗衰老安全吗,nmn最安全的品牌是什么

热门文章

  1. 如何做好软文营销?这3个关键点要记好
  2. BIOS的二十四个解答
  3. 学习笔记 更相损减术
  4. 小米6系统 Android版本,小米6推送MIUI 10.4.2稳定版:正式升级安卓9.0!
  5. 笔记本散热知识你知多少
  6. CISA Cert Prep: 2 Information Technology Governance and Management for IS Auditors CISA证书准备2:IS审计员的信
  7. 手机自带计算机删了怎么恢复出厂设置,还原出厂设置会怎样_电脑如何恢复出厂设置...
  8. 华为荣耀10是Android,华为、荣耀公布升级安卓10.0名单,来看看有没有你的机型吧...
  9. iOS输入法—基于XCTest框架的异步测试
  10. 【文献翻译】Web应用防火墙:网络安全模型和配置​​​​​​​-Web Application Firewall: Network Security Models and Configuration