达内Python人工智能全日制就业课|2024年11月完结

dfdgl · · 11 次点击 · · 开始浏览    

达内Python人工智能全日制就业课|2024年11月完结

 

拼课》》》❤ 789it.top/14435/

图像的平移、缩放、旋转等几何变换是计算机图形学和图像处理的基础操作,其数学原理和实现方法涉及坐标系变换、像素插值等核心概念。以下从原理到实践的系统解析:

一、图像几何变换的数学基础

1. 二维仿射变换(Affine Transformation)

通用矩阵表示

[x′y′1]=[abtxcdty001][xy1]

x′y′1=ac0bd0txty1xy1

(x,y)(x,y):原图像素坐标

(x′,y′)(x′,y′):变换后坐标

tx,tytx,ty:平移量

a,b,c,da,b,c,d:控制旋转、缩放、错切

特殊形式

平移:a=d=1a=d=1, b=c=0b=c=0

缩放:tx=ty=0tx=ty=0, a,da,d为缩放因子

旋转:a=d=cos⁡θa=d=cosθ, b=−sin⁡θb=−sinθ, c=sin⁡θc=sinθ

2. 齐次坐标的作用

引入第三维的1将平移从加法变为矩阵乘法,统一线性变换与平移。

二、位置改变:平移(Translation)

1. 变换公式

{x′=x+txy′=y+ty{x′=x+txy′=y+ty

示例:向右平移100像素,向下平移50像素 → tx=100tx=100, ty=50ty=50

2. 边界处理

补黑边:平移后空白区域填充0(黑色)。

循环填充:图像边缘像素循环出现(适用于纹理)。

3. 代码实现(Python+OpenCV)

python

复制

import cv2import numpy as np

img = cv2.imread('image.jpg')rows, cols = img.shape[:2]M = np.float32([[1, 0, 100], [0, 1, 50]]) # 平移矩阵dst = cv2.warpAffine(img, M, (cols, rows))

三、大小改变:缩放(Scaling)

1. 变换公式

{x′=sx⋅xy′=sy⋅y{x′=sx⋅xy′=sy⋅y

等比例缩放:sx=sysx=sy(保持宽高比)。

非等比例缩放:sx≠sysx=sy(图像拉伸变形)。

2. 插值算法(关键)

最近邻插值:速度快但锯齿明显。

双线性插值:取周围4像素加权平均(OpenCV默认)。

双三次插值:16像素加权,效果更平滑但计算量大。

3. 代码实现

python

复制

# 等比例缩小50%dst = cv2.resize(img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR)# 指定目标尺寸(可能导致变形)dst = cv2.resize(img, (300, 200))

四、位置与大小同时改变:相似变换(Similarity Transformation)

1. 变换公式

{x′=s⋅(xcos⁡θ−ysin⁡θ)+txy′=s⋅(xsin⁡θ+ycos⁡θ)+ty{x′=s⋅(xcosθ−ysinθ)+txy′=s⋅(xsinθ+ycosθ)+ty

包含平移 (tx,ty)(tx,ty)、旋转 θθ、缩放 ss。

2. 应用场景

图像配准:将不同角度拍摄的图像对齐。

目标跟踪:根据目标的位置和大小变化调整检测框。

五、实现中的关键问题

1. 正向映射 vs 逆向映射

正向映射:遍历原图像素计算新位置 → 可能导致空洞(多个像素映射到同一位置)。

逆向映射:遍历输出图像,通过逆矩阵计算原图对应位置 → 无空洞问题(OpenCV采用)。

2. 图像边缘处理

填充策略

方法

效果

BORDER_CONSTANT 填充常数(如黑色)

BORDER_REFLECT 镜像边缘像素

3. 性能优化

矩阵运算加速:使用GPU(如CUDA)并行计算。

局部变换:仅对感兴趣区域(ROI)操作。

六、数学推导示例:旋转+缩放

假设图像绕中心点 (cx,cy)(cx,cy) 旋转30°并放大2倍:

步骤分解

平移图像使中心点对齐原点。

旋转和缩放。

平移回原中心。

变换矩阵

M=[2cos⁡30∘−2sin⁡30∘cx(1−2cos⁡30∘)+cy⋅2sin⁡30∘2sin⁡30∘2cos⁡30∘cy(1−2cos⁡30∘)−cx⋅2sin⁡30∘001]M=

2cos30∘2sin30∘0−2sin30∘2cos30∘0cx(1−2cos30∘)+cy⋅2sin30∘cy(1−2cos30∘)−cx⋅2sin30∘1

七、扩展:透视变换(Perspective Transformation)

应用场景:矫正倾斜拍摄的文档、AR虚拟物体投影。

矩阵形式

[x′y′w′]=[abcdefgh1][xy1]

x′y′w′

=

adgbehcf1

xy1

最终坐标需归一化:(x′/w′,y′/w′)(x′/w′,y′/w′)。

总结

几何变换本质:通过矩阵运算重新映射像素位置。

核心挑战:平衡插值质量与计算效率。

进阶方向:结合深度学习(如空间变换网络STN)实现自适应变换。

11 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传