【数字图像处理系列笔记】Ch03:图像的变换

目录

一、图像的位置变换

平移

镜像

旋转

二、图像的形状变化

缩小

放大

错切

模拟哈哈镜

[​编辑 ​编辑](#编辑 编辑)

三、图像的一些操作

一、数值运算

[1.1 基本算术运算](#1.1 基本算术运算)

加法运算:

减法运算:

乘法运算:

除法运算:

[1.1. 2. 混合运算](#1.1. 2. 混合运算)

[1.1.3. 非线性运算](#1.1.3. 非线性运算)

二、逻辑运算

[1. 2基本逻辑运算](#1. 2基本逻辑运算)

与运算(AND):

或运算(OR):

非运算(NOT):

异或运算(XOR):

[1.2.2 组合逻辑运算](#1.2.2 组合逻辑运算)

形态学运算:

三、实际应用示例


一、图像的位置变换

★图像的平移、镜像、旋转

平移

定义:将图像中的所有像素点沿x轴和y轴方向移动指定的距离。

特点

  • 最简单的几何变换

  • 不改变图像内容,只改变位置

  • 平移后图像尺寸不变,边缘部分会缺失

镜像

旋转

定义:图像围绕某个中心点旋转一定角度。

特点

  • 旋转后图像尺寸通常会变大

  • 需要处理旋转后出现的空白区域

  • 可以选择不同的插值方法填补旋转后的像素

二、图像的形状变化

★图像的缩小、放大、错切

特点

  • s > 1时为放大,s < 1时为缩小

  • 可能导致图像信息丢失(缩小)或模糊(放大)

  • 需要选择合适的插值方法

缩小

图像的缩小一般分为按比例缩小和不按比例缩小两种。

图像缩小之后,因为承载的信息量小了,所以画布可相应缩小。

图像的缩小操作中,是在现有的信息里如何挑选所需要的有用信息。

图像的放大操作中,则需对尺寸放大后所多出来的空格填入适当的值。

这是信息的估计问题,所以较图像的缩小要难一些。

放大

错切

模拟哈哈镜

三、图像的一些操作

图像处理中的数值运算与逻辑运算

图像处理中的运算主要分为数值运算和逻辑运算两大类,它们在图像增强、分析和计算机视觉等领域有广泛应用。下面我将详细介绍这两类运算,并给出具体例子。

一、数值运算

数值运算是对图像像素值进行数学计算的操作,通常用于图像增强、混合、变换等。

1.1 基本算术运算
加法运算:
  • 公式:C(x,y) = A(x,y) + B(x,y)

  • 应用:图像叠加、亮度增加、多帧降噪

  • 例子:将两张低曝光照片相加得到更清晰的图像

python 复制代码
import cv2
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
result = cv2.add(img1, img2)  # 像素值相加
减法运算:
  • 公式:C(x,y) = A(x,y) - B(x,y)

  • 应用:背景消除、运动检测、变化检测

  • 例子:视频监控中通过帧差法检测运动物体

python 复制代码
difference = cv2.subtract(img1, img2)  # 像素值相减
乘法运算:
  • 公式:C(x,y) = A(x,y) × B(x,y)

  • 应用:图像掩膜、局部增强

  • 例子:将图像与二值掩膜相乘实现ROI提取

python 复制代码
mask = cv2.imread('mask.png', 0)  # 灰度掩膜
masked_img = cv2.multiply(img1, mask)  # 像素值相乘
除法运算:
  • 公式:C(x,y) = A(x,y) ÷ B(x,y)

  • 应用:归一化、图像校正

  • 例子:消除光照不均匀性

python 复制代码
mask = cv2.imread('mask.png', 0)  # 灰度掩膜
masked_img = cv2.multiply(img1, mask)  # 像素值相乘
1. 2 混合运算

线性混合:

  • 公式:dst = α·img1 + β·img2 + γ

  • 例子:图像渐变过渡效果

python 复制代码
alpha = 0.7  # img1的权重
beta = 0.3   # img2的权重
blended = cv2.addWeighted(img1, alpha, img2, beta, 0)
1.3.非线性运算

指数/对数运算:

  • 应用:伽马校正、动态范围压缩

  • 例子:增强暗部细节

python 复制代码
gamma = 0.5
lookUpTable = np.empty((1,256), np.uint8)
for i in range(256):
    lookUpTable[0,i] = np.clip(pow(i / 255.0, gamma) * 255.0, 0, 255)
gamma_corrected = cv2.LUT(img1, lookUpTable)

二、逻辑运算

逻辑运算是基于布尔代数的像素级操作,主要用于二值图像处理。

2.1基本逻辑运算
与运算(AND):
  • 公式:C(x,y) = A(x,y) ∧ B(x,y)

  • 应用:掩膜应用、交集区域提取

  • 例子:提取两幅二值图像的共同前景

python 复制代码
bitwise_and = cv2.bitwise_and(img1, img2)
或运算(OR):
  • 公式:C(x,y) = A(x,y) ∨ B(x,y)

  • 应用:区域合并

  • 例子:合并多个分割区域

python 复制代码
bitwise_or = cv2.bitwise_or(img1, img2)
非运算(NOT):
  • 公式:C(x,y) = ¬A(x,y)

  • 应用:图像反相

  • 例子:将黑白图像反色

python 复制代码
bitwise_not = cv2.bitwise_not(img1)
异或运算(XOR):
  • 公式:C(x,y) = A(x,y) ⊕ B(x,y)

  • 应用:差异检测、图像加密

  • 例子:检测两幅图像的差异区域

python 复制代码
bitwise_xor = cv2.bitwise_xor(img1, img2)
2.2 组合逻辑运算
形态学运算:
  • 基于逻辑运算的组合操作

  • 例子:膨胀、腐蚀、开运算、闭运算

python 复制代码
kernel = np.ones((5,5), np.uint8)
# 膨胀(扩大亮区)
dilation = cv2.dilate(img1, kernel, iterations=1)
# 腐蚀(缩小亮区)
erosion = cv2.erode(img1, kernel, iterations=1)
# 开运算(先腐蚀后膨胀,去除小噪点)
opening = cv2.morphologyEx(img1, cv2.MORPH_OPEN, kernel)
# 闭运算(先膨胀后腐蚀,填充小孔洞)
closing = cv2.morphologyEx(img1, cv2.MORPH_CLOSE, kernel)

三、实际应用示例

数值运算示例:图像增强

python 复制代码
# 增加亮度
brightened = cv2.add(img1, 50)  # 所有像素值加50

# 对比度拉伸
contrast = cv2.multiply(img1, 1.5)  # 所有像素值乘以1.5

逻辑运算示例:车牌提取

python 复制代码
# 转换为灰度图
gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
# 二值化
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# 定义车牌形状的结构元素
rect_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (15, 3))
# 闭运算填充车牌字符
closed = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, rect_kernel)
相关推荐
BreezeJuvenile6 小时前
外设模块学习(17)——5V继电器模块(STM32)
stm32·单片机·嵌入式硬件·学习·5v继电器模块
一个数据大开发6 小时前
【零基础一站式指南】Conda 学习环境准备与 Jupyter/PyCharm 完全配置
学习·jupyter·conda
无风听海6 小时前
神经网络之特征值与特征向量
人工智能·深度学习·神经网络
艾莉丝努力练剑6 小时前
【C++:红黑树】深入理解红黑树的平衡之道:从原理、变色、旋转到完整实现代码
大数据·开发语言·c++·人工智能·红黑树
九章云极AladdinEdu6 小时前
论文分享 | BARD-GS:基于高斯泼溅的模糊感知动态场景重建
人工智能·新视角合成·动态场景重建·运动模糊处理·3d高斯泼溅·模糊感知建模·真实世界数据集
希露菲叶特格雷拉特6 小时前
PyTorch深度学习笔记(二十)(模型验证测试)
人工智能·pytorch·笔记
NewsMash6 小时前
PyTorch之父发离职长文,告别Meta
人工智能·pytorch·python
IT_陈寒6 小时前
Python 3.12新特性实测:10个让你的代码提速30%的隐藏技巧 🚀
前端·人工智能·后端
Ztop7 小时前
GPT-5.1 已确认!OpenAI下一步推理升级?对决 Gemini 3 在即
人工智能·gpt·chatgpt
qq_436962187 小时前
奥威BI:打破数据分析的桎梏,让决策更自由
人工智能·数据挖掘·数据分析