当前位置: 首页 > news >正文

Python-初学openCV——图像预处理(二)

目录

一、图像仿射变换

1、基本性质

二、cv2.warpAffine() 函数

1、图像旋转

2、图像平移

3、图像缩放

4、图像剪切

三、 插值方法

1、最近邻插值

2、双线性插值

3、像素区域插值 

4、双三次插值 

5、Lanczos插值


一、图像仿射变换

仿射变换(Affine Transformation)是一种线性变换,保持了点之间的相对距离不变

        1、基本性质

                保持直线

                保持平行

                比例不变性

                不保持角度和长度

二、cv2.warpAffine() 函数

      cv2.warpAffine() 是 OpenCV 中用来对图像进行仿射变换的函数。仿射变换是一种保               直线和比例的变换,可以包括平移、旋转、缩放和倾斜等操作

#仿射变换函数
cv2.warpAffine(img,M,dsize)

参数:

img:输入图像

M:2x3的变换矩阵,类型为np.float32

dsize:输出图像的尺寸,形式为(width,height)

        1、图像旋转

                旋转图像可以将图像绕着某个点旋转一定的角度

                cv2.getRotationMatrix2D()函数

cv2.getRotationMatrix2D(center,angle,scale)

参数:

center:旋转中心点的坐标,格式为(x,y)

angle:旋转角度,单位为度,正值表示逆时针旋转、负值表示顺时针旋转

scale:缩放比例,若设为1,则不缩放

返回值(M):2x3的旋转矩阵

        2、图像平移

                 平移操作可以将图像中的每个点沿着某个方向移动一定的距离 

         3、图像缩放

                缩放操作可以改变图片的大小

        4、图像剪切

                剪切操作可以改变图形的形状,以便其在某个方向上倾斜,它将对象的形状改变为斜边            平行四边形,而不改变其面积

 

三、 插值方法

插值(Interpolation)是一种通过已知数据点之间的推断或估计来获取新数据点的方法,在图像处理中常用于处理图像的放大、缩小、旋转、变形等操作,以及处理图像中的像素值

图像插值算法是为了解决图像缩放或者旋转等操作时,由于像素之间的间隔不一致而导致的信息丢失和图像质量下降的问题。当我们对图像进行缩放或旋转等操作时,需要在新的像素位置上计算出对应的像素值,而插值算法的作用就是根据已知的像素值来推测未知位置的像素值

方法邻域大小平滑度计算速度适用场景
最近邻1 x 1最差最快像素艺术、实时预览
双线性2 x 2中等中等通用缩放
双三次4 x 4最佳最慢高质量放大/缩小
像素区域动态区域中等缩小抗锯齿

       

1、最近邻插值

CV2.INTER_NEAREST

原理与步骤

        距离计算:对于待插值的位置(如图像中的非整数坐标点),计算它与所有已知数据点的距                              离(通常用欧氏距离)。

        最近点选择:找到距离最近的那个已知数据点。

        赋值:直接将该最近点的值赋给待插值位置。

(最近邻插值适合对速度要求高、对质量要求低的场景)

        2、双线性插值

CV2.INTER_LINEAR

双线性插值(Bilinear interpolation)是图像缩放、旋转、几何校正中最常用的一种平滑插值方法。它通过两次一维线性插值(先水平、后垂直)来计算目标点的值,避免了最近邻插值的“锯齿”问题

        3、像素区域插值 

cv2.INTER_AREA

一种专为图像缩小(下采样)设计的插值方法。把目标图像的一个像素,反向映射回原图对应的一个“区域”,然后取该区域所有原像素的平均值作为结果

缩小图像时,一个目标像素可能覆盖原图的多个像素(例如缩小 50% 时,1 个目标像素对应原图 2×2=4 个像素)像素区域插值通过“区域平均”强制抗锯齿,效果更自然

        4、双三次插值 

cv2.INTER_CUBIC

双三次插值(Bicubic interpolation)是一种高阶、平滑的二维插值方法,通过对目标点周围 16 个(4×4)已知像素 进行三次多项式加权来得到插值结果。它是图像处理中放大图像时质量最好的算法之一

        5、Lanczos插值

cv2.INTER_LANCZOS4

Lanczos插值方法与双三次插值的思想是一样的,不同的就是其需要的原图像周围的像素点的范围变成了8*8,并且不再使用BiCubic函数来计算权重,而是换了一个公式计算权重

http://www.xdnf.cn/news/1180405.html

相关文章:

  • MySQL 表的操作
  • 大模型Prompt优化工程
  • Shell的正则表达式
  • JVM原理及其机制(二)
  • Web前端:JavaScript findIndex⽅法
  • MySQL数据库迁移至国产数据库测试案例
  • Spring MVC 统一响应格式:ResponseBodyAdvice 从浅入深
  • redis常用数据类型
  • 智慧工厂网络升级:新型 SD-WAN 技术架构与应用解析
  • Leetcode 07 java
  • 13-C语言:第13天笔记
  • C++第一节课入门
  • 基础NLP | 02 深度学习基本原理
  • PDF转Markdown - Python 实现方案与代码
  • 爬虫逆向--Day12--DrissionPage案例分析【小某书评价数据某东评价数据】
  • 使用爬虫获取游戏的iframe地址
  • 2025最新MySQL面试题实战记录,互联网公司常问题目
  • Mac电脑开发Python(基于vs code)
  • M²IV:面向大型视觉-语言模型中高效且细粒度的多模态上下文学习
  • 数字系统自动设计:从C++到门级网表
  • 如何使用 pdfMake 中文字体
  • 排序初识(上)-- 讲解超详细
  • Unity 多人游戏框架学习系列九
  • nuxt更改页面渲染的html,去除自定义属性、
  • 在Ubuntu上使用QEMU学习RISC-V程序(2)gdb调试
  • Java面试宝典:Spring专题二
  • 回调后门 函数
  • 如何彻底清除服务器上的恶意软件与后门
  • 基于Matlab图像处理的水果分级系统
  • Compose 适配 - 键鼠模式