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

图像处理-opencv(一)

目录

1、灰度图

1.1 定义

1.2 表示方法

1.3 特点

2、HSV

2.1 HSV 三要素定义

2.2 HSV 模型的特点

2.3 HSV 与 RGB 的区别

3、图像阈值

3.1 函数作用

3.2、参数含义与要求

3.3 阈值类型(type)及实例

3.3.1 cv2.THRESH_BINARY(二值化)

3.3.2 cv2.THRESH_BINARY_INV(反二值化)

3.3.3 cv2.THRESH_TRUNC(截断)

3.3.4 cv2.THRESH_TOZERO(归零)

3.3.5 cv2.THRESH_TOZERO_INV(反归零)

3.4 返回值ret的作用

4、图像平滑

4.1 核心原理

4.2 常见的图像平滑方法

4.2.1. 均值滤波(Mean Filtering)

4.2.2.  高斯滤波(Gaussian Filtering)

4.2.3.  中值滤波(Median Filtering)

4.2.4.  双边滤波(Bilateral Filtering)

4.3 平滑方法的选择依据


1、灰度图

灰度图(Grayscale)是指只含亮度信息,不含色彩信息的图像,其外观类似黑白照片

1.1 定义

灰度图中的每个像素只有一个亮度值,通常用一个 8 位或 16 位的整数表示。8 位灰度图的亮度值范围是 0 到 255,其中 0 代表黑色,255 代表白色,介于两者之间的值代表不同程度的灰色。

1.2 表示方法

灰度图是单通道图像,即每个像素仅由一个灰度值来表示其亮度水平,不像彩色图像那样由多个颜色通道组成。

1.3 特点

数据简化由于仅包含灰度信息,灰度图像的数据量比彩色图像小,处理起来更为简单高效。
易于处理:许多图像处理技术,如边缘检测、图像分割、特征提取等,在灰度图像上的实现更为直接和简单。

2、HSV

HSV(Hue, Saturation, Value)是一种基于人眼对色彩感知的颜色模型,它将颜色分解为三个直观的维度。

2.1 HSV 三要素定义

HSV 模型通过 色调(H)、饱和度(S)、明度(V) 三个独立分量描述颜色,三个维度共同决定最终呈现的色彩,具体含义如下:

2.2 HSV 模型的特点

相比 RGB(红、绿、蓝)等基于硬件的颜色模型,HSV 具有更贴近人类视觉感知的优势:
直观性强:调整颜色时,可独立控制 “色调(换颜色)”“饱和度(调鲜艳度)”“明度(调明暗)”,无需像 RGB 那样同时调整三个通道(如想让红色变亮,只需提高 V,无需修改 R/G/B 比例)。
分量独立:三个维度互不干扰 —— 例如,改变饱和度(S)不会影响色调(H)和明度(V),改变明度(V)也不会改变颜色的种类和纯净度。
适合色彩选择:在设计软件(如 Photoshop、Figma)或图像编辑工具中,HSV 色轮能快速定位目标颜色,尤其适合需要精细调整色彩氛围的场景(如将图片色调从 “冷蓝” 改为 “暖黄”,只需调整 H 值)。

2.3 HSV 与 RGB 的区别RGB 和 HSV 是两种最常用的颜色模型,但核心逻辑完全不同,具体差异如下:

对比维度

HSV 模型

RGB 模型

核心逻辑

基于人类视觉感知

(色调、饱和度、明度)

基于硬件显示

(红、绿、蓝三原色叠加)

分量含义

分量独立,对应色彩的直观属性

分量为三原色的亮度值,无直接 “色彩意义”

调色便捷性

高:可直接调整 “颜色种类 / 鲜艳度 / 明暗”

低:需同时调整三通道,且效果不直观(如 “让蓝色更鲜艳” 需调整 R/G/B 比例)

适用场景

图像编辑、色彩设计、视觉效果调整

屏幕显示、数字图像存储、硬件驱动

3、图像阈值

OpenCV 中图像阈值化的核心函数cv2.threshold(),它是将灰度图像转换为二值化图像(或特定阈值处理图像)的关键工具。以下是对该函数及各参数的详细解读,结合实例帮助理解:

3.1 函数作用

cv2.threshold()通过设定一个固定阈值,将单通道图像(通常是灰度图)的像素值根据阈值规则进行转换,实现图像的简化(如突出目标区域、去除背景)。

3.2、参数含义与要求

src 输入图像,必须是单通道图像(灰度图),不能直接输入彩色图(需先转灰度)。
dst 输出图像,与输入图像尺寸、类型一致,存储阈值处理后的结果。
thresh 设定的阈值(如 127),用于判断像素值的分割标准。
maxval 当像素值满足阈值条件时,赋予的最大值(通常设为 255,即白色)。
type 阈值处理的类型,决定像素值如何根据thresh和maxval转换(核心参数)。

3.3 阈值类型(type)及实例

像素值为p,阈值thresh=127,maxval=255,以下是 5 种类型的转换规则及效果:

3.3.1 cv2.THRESH_BINARY(二值化)

规则:p > thresh → maxval(255);p ≤ thresh → 0
效果:阈值以上为白色,以下为黑色(最常用的二值化方式)。

3.3.2 cv2.THRESH_BINARY_INV(反二值化)

规则:p > thresh → 0;p ≤ thresh → maxval(255)
效果:与THRESH_BINARY相反,阈值以上为黑色,以下为白色。

3.3.3 cv2.THRESH_TRUNC(截断)

规则:p > thresh → thresh(127);p ≤ thresh → p(不变)
效果:阈值以上的像素统一设为阈值(如 127),以下保持原样(图像亮部被 “截断”)。

3.3.4 cv2.THRESH_TOZERO(归零)

规则:p > thresh → p(不变);p ≤ thresh → 0
效果:阈值以下的像素设为黑色,以上保持原样(只保留亮部)。

3.3.5 cv2.THRESH_TOZERO_INV(反归零)

规则:p > thresh → 0;p ≤ thresh → p(不变)
效果:与THRESH_TOZERO相反,阈值以上的像素设为黑色,以下保持原样(只保留暗部)。

3.4 返回值ret的作用

函数返回两个值:ret和dst。
dst是处理后的图像(核心结果)。
ret是实际使用的阈值(在固定阈值场景下与thresh相同;在自适应阈值等场景中,ret可能是算法自动计算的阈值)。
ret, thresh1 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO_INV)titles = ['Original Image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]for i in range(6):plt.subplot(2, 3, i + 1), plt.imshow(images[i], 'gray')plt.title(titles[i])plt.xticks([]), plt.yticks([])
plt.show()

4、图像平滑

图像平滑(Image Smoothing)是一种基础的图像处理技术,主要通过抑制图像中的高频分量(如噪声、细节边缘)来减少图像噪声,使图像变得更模糊、更平滑,同时保留重要的低频信息(如大面积的区域特征)。它是图像预处理中的常用步骤,为后续的边缘检测、特征提取等操作提供更干净的图像数据。

4.1 核心原理

图像中的噪声通常表现为像素值的突变(高频信号),而平滑处理的本质是对像素周围的邻域进行加权平均,通过 “平均” 操作抵消突变的像素值,从而降低噪声。常见的实现方式是使用卷积核(滤波器) 对图像进行卷积运算:将卷积核覆盖在每个像素上,计算核内所有像素的加权和,作为中心像素的新值。

4.2 常见的图像平滑方法

根据卷积核的设计和计算方式不同,图像平滑可分为以下几类:

4.2.1. 均值滤波(Mean Filtering)

  • 原理:使用一个固定大小的滑动窗口(如 3×3、5×5),将窗口内所有像素的平均值作为中心像素的新值。
  • 卷积核:窗口内所有元素均为 1/(窗口面积)(确保加权和后亮度不变),例如 3×3 核为:
[[1/9, 1/9, 1/9],[1/9, 1/9, 1/9],[1/9, 1/9, 1/9]]
  • 特点
    • 简单高效,能有效去除高斯噪声等随机噪声。
    • 缺点:过度平滑会模糊图像边缘和细节(因为边缘也是高频信号,会被同时抑制)。
  • OpenCV 实现
import cv2
img = cv2.imread('image.jpg')
# 3×3均值滤波
mean_blur = cv2.blur(img, (3, 3))

4.2.2.  高斯滤波(Gaussian Filtering)

  • 原理:使用高斯核进行卷积,核内像素的权重遵循高斯分布(中心像素权重最高,向四周逐渐减小),更接近人眼对邻域像素的感知。
  • 卷积核:例如 3×3 高斯核(σ 为标准差,控制权重衰减速度):
[[0.0751, 0.1238, 0.0751], [0.1238, 0.2042, 0.1238], [0.0751, 0.1238, 0.0751]]
  • 特点
    • 相比均值滤波,在平滑噪声的同时,能更好地保留图像边缘(因为中心像素权重更高,对边缘的模糊更少)。
    • 适用于去除高斯噪声(图像中最常见的噪声类型之一)。
  • OpenCV 实现
# 3×3高斯滤波,sigmaX=1(X方向标准差)
gaussian_blur = cv2.GaussianBlur(img, (3, 3), sigmaX=1)

4.2.3.  中值滤波(Median Filtering)

  • 原理:与均值滤波类似,但不计算平均值,而是取窗口内所有像素值的中值作为中心像素的新值。
  • 特点
    • 椒盐噪声(Salt-and-Pepper Noise,即图像中的黑白斑点) 效果极佳(因为中值能有效剔除极端异常值)。
    • 相比均值滤波,边缘保留更好(不会因极端值影响平均结果)。
    • 缺点:计算速度较慢(需排序取中值),且对高斯噪声的抑制效果不如高斯滤波。
  • OpenCV 实现
# 3×3中值滤波
median_blur = cv2.medianBlur(img, 3)  # 注意:核大小为奇数(3,5,7...)

4.2.4.  双边滤波(Bilateral Filtering)

  • 原理:在高斯滤波的基础上,增加了像素值相似度权重—— 不仅考虑空间距离(越近权重越高),还考虑像素值差异(差异越小权重越高)。
  • 特点
    • 能在平滑噪声的同时,几乎不模糊边缘(因为边缘处像素值差异大,权重低,不会被过度平均)。
    • 适用于需要保留边缘的场景(如人像美颜、细节保留平滑)。
    • 缺点:计算复杂度高,速度较慢。
  • OpenCV 实现
# d=5(邻域直径),sigmaColor=100(颜色相似度标准差),sigmaSpace=100(空间距离标准差)
bilateral_blur = cv2.bilateralFilter(img, d=5, sigmaColor=100, sigmaSpace=100)

4.3 平滑方法的选择依据

噪声类型

推荐方法

核心优势

高斯噪声

高斯滤波

平滑效果好,边缘保留较好

椒盐噪声

中值滤波

有效剔除极端异常值

需保留边缘时

双边滤波

平滑噪声的同时不模糊边缘

简单快速处理

均值滤波

计算量小,适合快速预处理

http://www.dtcms.com/a/478494.html

相关文章:

  • 空包网站分站怎么做重庆市工程建筑造价信息网
  • 基于MATLAB的Excel文件批量读取与循环处理
  • 网站建设方案拓扑图平面设计现在怎么样
  • 高并发下的优雅延迟:Python异步爬虫(aiohttp)的速率限制实践
  • Python爬虫实战:获取同花顺股票资金流向数据并做分析
  • MyBatis的SpringBootVFS解析
  • 上海网站建设好处自建网站教程
  • 网站建设的作用是什么网站建设沟通准备
  • 【中间件Linux在环境安装】SpringBoot应用环境安装(一)-JDK安装
  • 【Linux环境下安装】SpringBoot应用环境安装(二)-Redis安装
  • 如何设置 Visual Studio 在调试停止时自动关闭控制台
  • 网站建设佰首选金手指三十wordpress 切换中文字体
  • 网站搭建服务器需要多少钱厦门网站建设u
  • MPLS技术详解2:LDP标签分发协议原理与操作流程
  • 网站跟别的做的一样的网站群怎么做
  • java注解+AOP切面:实现sql片段动态插入
  • 网络安全超详细系统教程、渗透测试与学习路线(2025年最新版)
  • 靖江网站制作多少钱网站的衡量标准
  • 一、前置基础(MVC学习前提)_核心特性_【C# 泛型入门】为什么说 List<T>是程序员的 “万能收纳盒“?避坑指南在此
  • OpenCV(十):NumPy中的ROI
  • Qt插件机制实现动态组件加载详解
  • 重大更新!基于VMD+Transformer-BiLSTM-CrossAttention 故障分类模型
  • YOLO系列——基于Ultralytics YOLOv11模型在C++ OpenCV DNN模块进行模型加载与推理(附源码)
  • 有哪些做统计销量的网站设计了网站
  • 做微信公众号的网站有哪些外贸网站建设团队
  • 广东省省考备考(第一百二十二天10.13)——资料分析、言语(强化训练)
  • MySQL中like模糊查询如何优化
  • 400G QSFP112 FR4光模块:高速数据中心互联的核心力量
  • 旅行商问题(TSP)(1)(Route.py)(TSP 问题中的点与路径核心类)
  • 学习笔记--文件上传