图像的放大和缩小

一、知识简介

在计算机图像处理和计算机图形学中,图像缩放(image scaling)是指对数字图像的大小进行调整的过程。图像缩放是一种非平凡的过程,需要在处理效率以及结果的平滑度(smoothness)和清晰度(sharpness)上做一个权衡。当一个图像的大小增加之后,组成图像的像素的可见度将会变得更高,从而使得图像表现得“软”。相反地,缩小一个图像将会增强它的平滑度和清晰度。

二、图像的放大和缩小的基本原理

图像的放大和缩小的基本原理就是一种映射,即缩小后或者放大后的图像像素位置向原图的一个映射。简单理解就是,将放大或者缩小后的图像将其的坐标(长宽)拉伸或者压缩到和原图一样大时,其像素坐标点对应在原图上的位置就是其映射位置

由上图可以看出,放大或者缩小后的图像的像素值取决于其映射到原图相应位置周围的元素

三、实现和放大图像的方法

1、等间隔采样法实现图像的放大和缩小

1、等间隔采样其实就是在原图中每间隔一定的距离取像素点放到输出图像上。
2、图像时等比例缩小,不等时是不等比例缩小,缩小图像的长和宽的比例会发生变化。
3、图像放大时是将原图像的像素直接对应搬移到放大后的图像画布上

四、python实现

算法的实现步骤:

(1)创建画布大小
设原图的大小为HW,将其放大(缩小)为(zoom_hH)(zoom_wW) = new_h, new_w :zoom_h为高缩放比例zoom_w为宽缩放比例 new_h, new_w缩放后的高和宽创建画布大小:new_h, new_w
(2)将原图向的像素映射到目标画布上
h = int(isampling_interval_h -0.5)
w = int(j
sampling_interval_w -0.5)
h,w 是画布坐标 i,j是原图坐标 (3)当zoom_h==zoom_w时为等比例缩小;当zoom_h!=zoom_w时为不等比例放大(缩小);当zoom_h<1 &&
zoom_w<1时为图片缩小,zoom_h>1 && zoom_w>1时图片放大。

import numpy as np
def zoom_out_equal_interval(img, zoom_h, zoom_w):'''图像缩小—等间隔采样:param img: 原图:param zoom_h: 行缩放比例:param zoom_w: 列缩放比例:return:'''img_h, img_w ,channels = img.shape    # 获取图像大小new_h, new_w = int(img_h*zoom_h),int(img_w*zoom_w)  # 缩放后的图片大小print(new_h,new_w)zoom_img = np.zeros((new_h,new_w,channels),dtype= np.uint8)  # 创建缩放后的图片大小的矩阵sampling_interval_h = zoom_hsampling_interval_w = zoom_wfor i in range(img_h):for j in range(img_w):h = int(i*sampling_interval_h -0.5)   # 按比例放大或者缩小w = int(j*sampling_interval_w -0.5)zoom_img[h][w] = img[i][j]return zoom_imgimport cv2
img = cv2.imread("lenna.png", 1)
zoom_h = 1.5
zoom_w = 1.5
zoom_img = zoom_out_equal_interval(img, zoom_h, zoom_w)
cv2.imshow("zoom_img", zoom_img)
cv2.waitKey(0)

五、结果

原图

行列个缩小0.5
zoom_h = 0.5
zoom_w = 0.5

行列各放大1.5倍
zoom_h = 1.5
zoom_w = 1.5

六、分析

放大的图像由于是原图像素直接搬移到放大后的画布上,导致放大后的画布上的一些像素位置没有值(值为0)。解决这个现象需要利用插值法对没有值的位置进行插值

(三)图像的放大和缩小相关推荐

  1. rp导入图片大小_Axure制作图像的放大与缩小效果的四种方式

    1.新建Axure RP项目,取名"Axure制作图像的放大与缩小效果" 2.拖入动态面板控件,取名"放大缩小".设置大小为560*330px.坐标为x:300 ...

  2. java 图片放大缩小_java 图像的放大与缩小

    图像的放大,需要补充没有的像素,常用的方法有 1.最临近点插值算法(Nearest Neighbor) 2.双线性插值算法(Bilinear Interpolation) 3.双立方插值算法(Bicu ...

  3. 图像的放大与缩小(2)——双线性插值放大与均值缩小

    2019独角兽企业重金招聘Python工程师标准>>> 概述 基于上一节"等距采样法"实现图片放大与缩小的缺点.要对其进行改进,对图像的缩小则可以用"局 ...

  4. 图像的放大与缩小——双线性插值放大与均值缩小

    原文地址:http://blog.csdn.net/luoweifu/article/details/8069883 概述 基于上一节"等距采样法"实现图片放大与缩小的缺点.要对其 ...

  5. 双线性内插怎么缩小_图像的放大与缩小(2)——双线性插值放大与均值缩小

    概述 基于上一节"等距采样法"实现图片放大与缩小的缺点.要对其进行改进,对图像的缩小则可以用"局部均值法",对于图像的放大则可以用"双线性插值法&qu ...

  6. opencv:图像的放大与缩小

    1.涉及函数 函数功能 对图像进行缩放操作 函数原型 CV_EXPORTS_W void resize( InputArray src, OutputArray dst,Size dsize, dou ...

  7. matlab 图像 放大缩小,图像的放大与缩小(MATLAB 代码)

    首先第一种: function I=ImageZoom(I1,x,y) %功能:实现图像的任意倍数缩放 %x---水平缩放系数 %y---竖直缩放系数 if length(size(I1))>2 ...

  8. 【QT】QT从零入门教程(七):鼠标滚轮实现图像的放大缩小

    鼠标滚轮实现图像放大缩小的主要思想:通过wheelEvent来获得鼠标滚轮的angleDelta,即滚轮转角.然后通过数据类型转换,将读取的值转换成整型数值叠加到图像的尺寸长和宽上,从而实现图像的放大 ...

  9. 【图像处理】图像内插“最近邻插值 最近邻内插法(Nearest Neighbour Interpolate)”代码演示(调整图像大小、放大、缩小)

    文章目录 何为内插--最近邻插值,引用自<数字图像处理--第三版> 代码演示 1.设置缩放倍数来放大.缩小图像 2.设置图片最终分辨率来放大.缩小图像 代码中使用的源图 20200625 ...

最新文章

  1. rpm怎样在win安装mysql_centos7.6安装mysql的正确步骤
  2. 桌面虚拟化(八):扔掉你的电脑!电视就够了!
  3. MIT新研究:43%算法改进速度超摩尔定律,解决超大规模问题,算法比硬件更有用...
  4. Kotlin学习-基础知识点
  5. 【CodeForces - 347C 】Alice and Bob (思维,数学,等差数列)
  6. 常见电脑字符编码总结
  7. 【LeetCode】——根据前序和中序遍历构建二叉树
  8. linux resin 自动启动不了,linux下开机启动nginx+resin
  9. 莫烦python学习笔记之全局,局部变量
  10. ElasticSearch的javaAPI之Client
  11. Android实现全屏显示的方法
  12. xss漏洞java代码_Java处理XSS漏洞的工具类代码
  13. 微信开发者工具使用less
  14. 小米笔记本网卡驱动失效,无法联网
  15. 临床血液学综合练习题库【2】
  16. E1. Divisible Numbers (easy version)(数学)
  17. 毛头小子初学Java
  18. linux scp 指令使用
  19. raid是什么?raid的工作原理分析及raid数据恢复思路
  20. 远程锁定计算机,利用Microsoft帐户来远程退出并锁定你的Windows 10电脑

热门文章

  1. bzoj 1131: [POI2008]Sta(DPS)
  2. qscoj:默契值(状压DP)
  3. hibernate 并发获取session失败 空指针_高并发之|通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程...
  4. 小记:iOS 中一般对于 view 不依赖 model 的的两种代码书写形式
  5. 远程桌面发生身份验证错误,要求的函数不受支持
  6. 2017-10-湖南套题1
  7. js-JavaScript高级程序设计学习笔记2
  8. [ZPG TEST 115] 字符串【归类思想】
  9. Min(BZOJ 1441)
  10. 2-9 prev + next选择器 “远亲不如近邻” 返回且只返回唯一-个元素。 而通过prev + next选择器就可以查找与“prev”元素紧邻的下一个“next”元素...