图像尺寸调整:缩放矩阵如何改变像素坐标?

目录

一、前言

二、图像是如何表示的

三、什么是图像缩放

四、缩放矩阵是什么

五、缩放矩阵如何作用于坐标

六、为什么需要矩阵运算

七、图像缩放流程

八、放大示例

九、缩小示例

十、使用NumPy模拟缩放矩阵

十一、批量处理多个像素

十二、OpenCV实现图像缩放

十三、按照比例缩放

十四、为什么会出现锯齿

最近邻插值

双线性插值

双三次插值

十五、OpenCV指定插值方式

十六、深度学习中的应用

YOLO

ResNet

ViT

十七、缩放矩阵与仿射变换

十八、总结


一、前言

在计算机视觉、图像处理以及深度学习领域,经常需要对图片进行尺寸调整。

例如:

复制代码
图片压缩

缩略图生成

目标检测

图像增强

神经网络输入预处理

假设有一张图片:

复制代码
1920 × 1080

而模型要求输入:

复制代码
640 × 640

此时就需要进行:

复制代码
图像缩放(Image Scaling)

很多人认为:

复制代码
缩放图片

只是改变宽高

实际上在数学层面,图像缩放的本质是:

利用缩放矩阵(Scaling Matrix)重新计算每个像素的坐标位置。


二、图像是如何表示的

在计算机中:

图片本质上是一个矩阵。

例如:

复制代码
5 × 5 图像

可以表示为:

复制代码
[
  10 20 30 40 50
  15 25 35 45 55
  20 30 40 50 60
  25 35 45 55 65
  30 40 50 60 70
]

其中:

复制代码
每个元素

表示一个像素值

而每个像素都对应一个坐标:

复制代码
(x, y)

例如:

复制代码
左上角

(0,0)

右下角

(4,4)

三、什么是图像缩放

假设原始图片大小:

复制代码
100 × 100

目标尺寸:

复制代码
200 × 200

那么:

复制代码
图片被放大2倍

反之:

复制代码
200 × 200

↓

100 × 100

则属于:

复制代码
图片缩小

无论放大还是缩小,本质都是:

复制代码
重新计算像素坐标

四、缩放矩阵是什么

二维空间中的缩放矩阵:

复制代码
[
  Sx   0
   0  Sy
]

其中:

复制代码
Sx

X方向缩放比例

Sy

Y方向缩放比例

例如:

放大2倍:

复制代码
[
 2 0
 0 2
]

横向放大2倍:

纵向放大3倍:

复制代码
[
 2 0
 0 3
]

五、缩放矩阵如何作用于坐标

假设一个像素坐标:

复制代码
P

=

[
 10
 20
]

表示:

复制代码
x = 10

y = 20

缩放矩阵:

复制代码
[
 2 0
 0 2
]

计算:

复制代码
[
 2 0
 0 2
]

×

[
10
20
]

结果:

复制代码
[
20
40
]

说明:

复制代码
原坐标

(10,20)

↓

新坐标

(20,40)

图片放大了2倍。


六、为什么需要矩阵运算

如果图片有:

复制代码
1920 × 1080

像素数量:

复制代码
2073600

超过200万个像素。

如果逐个手工计算:

复制代码
效率极低

因此:

复制代码
矩阵乘法

成为图像变换的核心工具。


七、图像缩放流程


八、放大示例

假设原图坐标:

复制代码
(1,1)

(2,2)

(3,3)

缩放矩阵:

复制代码
[
 2 0
 0 2
]

计算后:

原坐标 新坐标
(1,1) (2,2)
(2,2) (4,4)
(3,3) (6,6)

可以看到:

复制代码
所有坐标扩大2倍

九、缩小示例

缩放矩阵:

复制代码
[
0.5  0
0    0.5
]

原坐标:

复制代码
(100,60)

计算:

复制代码
[
0.5 0
0 0.5
]

×

[
100
60
]

结果:

复制代码
[
50
30
]

说明:

复制代码
图片缩小一半

十、使用NumPy模拟缩放矩阵

python 复制代码
import numpy as np

point = np.array([
    [10],
    [20]
])

scale_matrix = np.array([
    [2,0],
    [0,2]
])

new_point = scale_matrix @ point

print(new_point)

输出:

复制代码
[[20]
 [40]]

十一、批量处理多个像素

多个坐标:

python 复制代码
import numpy as np

points = np.array([
    [1,2],
    [2,3],
    [3,4]
])

scale = 2

scaled_points = points * scale

print(scaled_points)

输出:

复制代码
[
 [2 4]
 [4 6]
 [6 8]
]

十二、OpenCV实现图像缩放

安装:

复制代码
pip install opencv-python

读取图片:

python 复制代码
import cv2

img = cv2.imread("test.jpg")

print(img.shape)

输出:

复制代码
(1080,1920,3)

表示:

复制代码
高1080

宽1920

RGB三通道

缩放图片:

python 复制代码
import cv2

img = cv2.imread("test.jpg")

resized = cv2.resize(
    img,
    (640,640)
)

cv2.imwrite(
    "result.jpg",
    resized
)

生成:

复制代码
640 × 640

新图片。


十三、按照比例缩放

例如:

复制代码
缩小50%

代码:

python 复制代码
import cv2

img = cv2.imread("test.jpg")

resized = cv2.resize(
    img,
    None,
    fx=0.5,
    fy=0.5
)

cv2.imwrite(
    "small.jpg",
    resized
)

其中:

复制代码
fx

横向缩放比例

fy

纵向缩放比例

十四、为什么会出现锯齿

理论上:

复制代码
坐标变换后

可能出现小数坐标

例如:

复制代码
(10,20)

↓

(15.5,30.5)

但是:

复制代码
像素位置必须是整数

因此需要:

复制代码
插值算法

计算像素值。


常见插值方法:

最近邻插值

复制代码
Nearest Neighbor

速度最快。


双线性插值

复制代码
Bilinear

最常用。


双三次插值

复制代码
Bicubic

效果更平滑。


十五、OpenCV指定插值方式

双线性插值:

python 复制代码
resized = cv2.resize(
    img,
    (640,640),
    interpolation=cv2.INTER_LINEAR
)

双三次插值:

python 复制代码
resized = cv2.resize(
    img,
    (640,640),
    interpolation=cv2.INTER_CUBIC
)

十六、深度学习中的应用

在训练神经网络时:

通常需要统一输入尺寸。

例如:

YOLO

复制代码
640 × 640

ResNet

复制代码
224 × 224

ViT

复制代码
224 × 224

因此:

复制代码
缩放矩阵

是计算机视觉最基础的变换之一

几乎所有视觉模型都会使用。


十七、缩放矩阵与仿射变换

图像缩放实际上属于:

复制代码
仿射变换

的一种。

常见仿射变换包括:

复制代码
缩放

旋转

平移

镜像

错切

其中:

复制代码
缩放矩阵

负责改变大小

旋转矩阵

负责改变方向

十八、总结

图像缩放看似简单,但背后涉及线性代数中的矩阵变换思想。

核心公式:

复制代码
新坐标

=

缩放矩阵

×

原坐标

缩放矩阵:

复制代码
[
 Sx 0
 0 Sy
]

其中:

复制代码
Sx

横向缩放比例

Sy

纵向缩放比例

在实际项目中:

复制代码
图像压缩

目标检测

图像分类

深度学习预处理

都离不开缩放矩阵。

可以这样理解:

复制代码
图像缩放

不是简单改变图片大小

而是在数学上

重新计算每一个像素的位置

而缩放矩阵,正是完成这一过程的核心工具。

相关推荐
zandy1011几秒前
地址解析厂商推荐:分行业地址服务能力选型与技术分析
大数据·运维·人工智能
财迅通Ai几秒前
“光纤传感+AI”双轮驱动加速成长,光格科技步入资产数字化运维快车道
运维·人工智能·科技·光格科技
名不经传的养虾人4 分钟前
从0到1:企业级AI项目迭代日记 Vol.67|能运行,和能商用
人工智能·agent·ai编程·企业ai·多agent协作
tachibana26 分钟前
hot100 课程表(207)
java·数据结构·算法·leetcode
神仙别闹7 分钟前
编写基于C++ Huffman 算法的无损压缩程序和解压程序
java·c++·算法
金智维科技官方10 分钟前
DeepSeek接入企业系统:流程自动化新玩法
大数据·数据库·人工智能
声讯电子15 分钟前
AU-60 全功能 AI 语音处理模组,一站式解决 USB / 模拟 / I2S 全音频开发痛点
人工智能·语音识别·ai降噪·回声消除·回音消除·波束定向
Mr_凌宇19 分钟前
# AI 应用工程入门学习笔记 一
人工智能·面试·程序员
qiaozhangmenai20 分钟前
企业开源节流AI替代软件:2026年技术演进与选型指南
人工智能
大鱼>21 分钟前
宠物活动轨迹追踪系统:GPS/BDS+UWB+BLE多定位融合方案
人工智能·深度学习·算法·iot·宠物