• 图像的几何变换(缩放、平移、旋转)


    图像的几何变换是指对图像进行缩放、平移和旋转等操作,从而改变图像在平面上的位置、大小和方向。这些变换可以通过数学计算和像素级别的操作来实现,常用于图像处理和计算机视觉领域。

    缩放变换: 缩放是指改变图像的尺寸大小,使其变大或变小。缩放变换可以应用于整个图像或者特定区域。在图像缩放中,可以通过插值算法来调整像素的位置和灰度值,常见的插值方法有最近邻插值、双线性插值和双立方插值等。
    缩放变换可以实现图像的放大和缩小效果。当将图像放大时,会导致图像失真和锯齿状边缘的出现;而将图像缩小时,可能会造成信息丢失和细节模糊。因此,在进行图像缩放时需要权衡保留图像细节和减少失真之间的关系。

    平移变换: 平移是指在图像平面上按照指定的平移量沿着 x 轴和 y 轴方向移动图像的位置。平移变换可以实现图像的横向或纵向平移,使得图像在平面上的位置发生改变。
    平移变换的实现很简单,只需要将图像的每个像素点按照指定的平移量进行偏移即可。平移变换常用于图像对齐、目标跟踪和图像拼接等应用中。

    旋转变换: 旋转是指按照指定的角度将图像绕着一个中心点进行旋转。旋转变换可以使图像在平面上发生旋转,改变图像的方向和角度。
    旋转变换的实现通常需要确定旋转角度和旋转中心点。通过对图像的每个像素点进行坐标变换,并使用插值算法计算旋转后的像素位置和灰度值,可以得到旋转后的图像。

    旋转变换常用于图像校正、目标识别和匹配等应用中。在数字图像处理中,旋转变换也是非常基础且重要的操作之一。

    总的来说,图像的几何变换包括缩放、平移和旋转等操作,它们可以改变图像的尺寸、位置和方向。这些变换在图像处理和计算机视觉领域中有广泛的应用,例如图像放大、图像对齐、目标跟踪、图像校正和匹配等。通过对图像进行几何变换,可以实现图像的形状调整、空间重构和图像配准等功能。

    图像的几何变换

    学习目标

    • 掌握图像的缩放、平移、旋转等
    • 了解数字图像的仿射变换和透射变换

    1 图像的缩放

    缩放是对图像的大小进行调整,即 使图像放大或缩小

    cv2.resize(src,dsize,fx=0,fy=0,interpolation=cv2.INTER_LINEAR)

    参数:

    • src :输入图像
    • dsize ;绝对尺寸 ,直接指定调整后图像的大小
    • fx,fy :相对尺寸,将dsize设置为None,然后将fx和fy设置为比例因子即可
    • interpolation: 插值方法
    • 在这里插入图片描述

    代码实现

    import cv2 as cv
    #读取图片
    
    img1 = cv.imread('lena.png')
    
    #图像的缩放
    
    #法1    :绝对尺寸
    
    rows, cols = img1.shape[:2]
    res  = cv.resize(img1 , (2*cols,2*rows),interpolation=cv.INTER_CUBIC)
    
    #法二  :相对尺寸
    res1 = cv.resize(img1,None,fx=0.5,fy=0.5)
    
    #图像显示
    cv.imshow("original",img1)
    cv.imshow("enlarge",res)
    cv.imshow("shrink",res1)
    cv.waitKey(0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    结果展示

    在这里插入图片描述

    2图像的平移

    在这里插入图片描述

    代码实现

    import numpy as np
    import cv2 as cv
    import matplotlib.pyplot as plt
    
    from pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    
    #读取图像
    img1 = cv.imread("lena.png")
    
    #图像的平移
    rows ,cols = img1.shape[:2]
    M= np.float32([[1,0,100],[0,1,50]])   #平移矩阵
    dst = cv.warpAffine(img1,M,(cols,rows))
    
    #图像的显示
    fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(7,4),dpi=100)
    axes[0].imshow(img1[:,:,::-1])
    axes[0].set_title("原图")
    
    axes[1].imshow(dst[:,:,::-1])
    axes[1].set_title("平移后的结果")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    结果展示

    在这里插入图片描述

    3 图像的旋转

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    代码实现

    import numpy as np
    import cv2 as cv
    import matplotlib.pyplot as plt
    
    from pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    
    
    #读取图像
    img = cv.imread("lena.png")
    
    #旋转图像
    
    rows ,cols = img.shape[:2]
    #生成旋转矩阵
    M = cv.getRotationMatrix2D((cols/2 ,rows/2),90,1)
    #进行旋转变换
    dst = cv.warpAffine(img,M,(cols,rows))
    
    
    #图像展示
    fig ,axes = plt.subplots(nrows=1,ncols=2,figsize=(5,4),dpi=100)
    axes[0].imshow(img[:,:,::-1])
    axes[0].set_title("原图")
    
    axes[1].imshow(dst[:,:,::-1])
    axes[1].set_title("旋转后的结果")
    
    plt.show()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    M = cv.getRotationMatrix2D((cols/2 ,rows/2),90,1)

    • cols/2 ,rows/2 :旋转中心
    • 90 : 逆时针旋转角度
    • 1:缩放比例(不进行缩放)

    结果展示

    在这里插入图片描述

  • 相关阅读:
    基于springboot小区物业管理系统
    flink对状态ttl进行单元测试
    MATLAB命令
    语法基础(字符串)
    [计算机网络基础]数据链路层
    卷积运算与互相关运算
    【C++】内存管理到用new申请堆内存
    【笔试强训】Day2
    计算机毕业设计Java家政服务系统(源码+系统+mysql数据库+lw文档)
    No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
  • 原文地址:https://blog.csdn.net/qq_53545309/article/details/132791750