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

图像处理篇---图像预处理


文章目录

  • 前言
  • 一、通用目的
    • 1.1 数据标准化
      • 目的
      • 实现
    • 1.2 噪声抑制
      • 目的
      • 实现
        • 高斯滤波
        • 中值滤波
        • 双边滤波
    • 1.3 尺寸统一化
      • 目的
      • 实现
    • 1.4 数据增强
      • 目的
      • 实现
    • 1.5 特征增强
      • 目的
      • 实现:
        • 边缘检测
        • 直方图均衡化
        • 锐化
  • 二、分领域预处理
    • 2.1 传统机器学习(如SVM、随机森林)
      • 2.1.1 特点
      • 2.1.2 预处理重点
        • 灰度化
        • 二值化
        • 形态学操作
        • 特征工程
    • 2.2 深度学习(如CNN、Transformer)
      • 2.2.1 特点
      • 2.2.2 预处理重点
        • 通道顺序调整
        • 批量归一化
        • 高级增强
        • 预训练模型适配
    • 2.3 其他领域
      • 2.3.1医学影像(如MRI、CT)
        • 去伪影
        • 标准化
      • 2.3.2 卫星遥感
        • 多光谱融合
        • 辐射校正
      • 2.3.3 工业检测
        • 背景分割
        • 高动态范围
  • 三、工具与库
    • 3.1 OpenCV
    • 3.2 PIL/Pillow
    • 3.3 scikit-image
    • 3.4 TensorFlow
    • 3.5 PyTorch
  • 四、总结
    • 4.1 目标检测
    • 4.2 语义分割
    • 4.3 低光照场景


前言

图像预处理是机器学习和计算机视觉任务中至关重要的一环,其核心目的是通过对原始图像进行优化和调整提升模型性能、降低噪声干扰、增强关键特征,并适应模型的输入要求。以下是分领域的详细说明:


一、通用目的

1.1 数据标准化

目的

目的:统一输入数据的分布,避免因像素值范围差异(如0-255或0-1)导致模型训练不稳定。

实现

#归一化到 [0, 1]
image_normalized = image / 255.0
#标准化(均值中心化 + 方差归一化)
image_standardized = (image - mean) / std

1.2 噪声抑制

目的

目的:消除图像中的随机噪声(如高斯噪声、椒盐噪声),提升特征提取的鲁棒性

实现

高斯滤波

高斯滤波:cv2.GaussianBlur()

中值滤波

中值滤波:cv2.medianBlur()

双边滤波

双边滤波:保留边缘的同时去噪,cv2.bilateralFilter()

1.3 尺寸统一化

目的

目的:确保所有输入图像尺寸一致,适配模型输入层(如CNN要求固定尺寸)。

实现

resized_image = cv2.resize(image, (width, height))

1.4 数据增强

目的

目的:通过**几何变换(旋转、翻转、裁剪)颜色扰动(亮度、对比度调整)**扩充数据集,防止过拟合。

实现

#使用OpenCV或深度学习框架(如TensorFlow的ImageDataGenerator)
flipped = cv2.flip(image, 1)  # 水平翻转
rotated = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)

1.5 特征增强

目的

目的:突出目标区域的关键特征(如边缘、纹理)

实现:

边缘检测

边缘检测:Sobel算子、Canny算子

直方图均衡化

直方图均衡化:cv2.equalizeHist()(增强对比度)

锐化

锐化:拉普拉斯算子或自定义卷积核

二、分领域预处理

2.1 传统机器学习(如SVM、随机森林)

2.1.1 特点

特点:依赖手工提取特征(如HOG、LBP、颜色直方图)。

2.1.2 预处理重点

灰度化

灰度化:减少计算量,cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

二值化

二值化:cv2.threshold()(如文档OCR任务

形态学操作

形态学操作:腐蚀、膨胀(去除小斑点或连接断裂区域

特征工程

特征工程:提取统计特征(均值、方差)或结构特征。

2.2 深度学习(如CNN、Transformer)

2.2.1 特点

特点:端到端学习特征,但依赖大量数据和标准化输入。

2.2.2 预处理重点

通道顺序调整

通道顺序调整:适配框架要求(如TensorFlow的HWC格式或PyTorch的CHW格式)。

批量归一化

批量归一化:在数据加载阶段统一处理(如torchvision.transforms.Normalize)。

高级增强

高级增强:MixUp、CutMix等基于混合样本的策略。

预训练模型适配

预训练模型适配:输入需与预训练数据分布一致(如ImageNet的均值方差)。

2.3 其他领域

2.3.1医学影像(如MRI、CT)

去伪影

去伪影:消除扫描过程中的运动伪影或设备噪声

标准化

标准化:使用Z-score或直方图匹配**(不同设备间的数据一致性**)。

2.3.2 卫星遥感

多光谱融合

多光谱融合:合并不同波段的图像(如红外与可见光)。

辐射校正

辐射校正:消除大气干扰。

2.3.3 工业检测

背景分割

背景分割:提取ROI(如产品表面缺陷检测)。

高动态范围

高动态范围(HDR):处理过曝或欠曝区域

三、工具与库

3.1 OpenCV

OpenCV:基础操作(滤波、几何变换、颜色空间转换)。

3.2 PIL/Pillow

PIL/Pillow:简单的图像增强(缩放、裁剪)。

3.3 scikit-image

scikit-image:高级滤波和特征提取(如局部二值模式)。

3.4 TensorFlow

TensorFlow:tf.image模块

3.5 PyTorch

PyTorch:torchvision.transforms

四、总结

图像预处理的选择需结合具体任务:

4.1 目标检测

目标检测:可能更关注多尺度输入颜色增强

4.2 语义分割

语义分割:需保留空间信息,避免过度下采样

4.3 低光照场景

低光照场景:需Retinex算法或深度学习去噪(如AutoEncoder)。

通过合理设计预处理流程,可显著提升模型泛化能力收敛速度


相关文章:

图像处理篇---图像预处理

文章目录 前言一、通用目的1.1 数据标准化目的实现 1.2 噪声抑制目的实现高斯滤波中值滤波双边滤波 1.3 尺寸统一化目的实现 1.4 数据增强目的实现 1.5 特征增强目的实现:边缘检测直方图均衡化锐化 二、分领域预处理2.1 传统机器学习(如SVM、随机森林&am…...

探针泄露(WEB)

##解题思路 题目提示是探针泄露,未及时删除的探针可能造成严重的数据泄露 探针的文件常见命名为tz.php,访问它 对于php相关参数,我们是可以点击的,点击phpinfo访问 跳转后搜索flag,得到flag...

Webpack总结

Webpack是一个前端模块打包工具。它可以将多个模块按照依赖关系进行静态分析,并生成一个或多个打包后的文件。 Webpack的核心概念包括entry(入口)、output(输出)、loader(加载器)和plugin&…...

什么是物理信息神经网络PINN

定义原理 物理信息神经网络(PINN)是一种创新的机器学习方法,将深度学习与物理知识相结合,旨在解决偏微分方程(PDE)相关问题。PINN的核心思想是在神经网络的训练过程中引入物理定律,从而提高模型的泛化能力和预测精度。 PINN的工作原理基于以下关键步骤: 构建神经网络…...

Java面向对象(中)

面向对象(中) 1.继承性 继承性的好处: 减少了代码的冗余,提高了代码的复用性。 便于功能的拓展。 为多态性的使用提供了前期。 格式: class A extends B {} A:子类,派生类,subclass。 B:父类&#x…...

ospf单区域

OSPF单区域是指将整个自治系统(AS)内的所有路由器划分到同一个逻辑区域(Area 0,即骨干区域)中运行的OSPF协议模式。以下是其核心要点: 一、定义与核心特点 ‌区域统一性‌ 所有路由器均属于同一区域&…...

kali之nmap

kali之nmap Nmap(Network Mapper)是 Kali Linux 中最著名的网络扫描工具之一,广泛用于网络发现、端口扫描、服务识别、操作系统检测等任务。它是一个功能强大且灵活的开源工具,适用于渗透测试、网络管理和安全审计。 1. Nmap 的主…...

【Rust基础】排序和分组

排序 简单排序 整数排序 #[test] fn test_sort(){let mut list vec![1, 5, 3, 2, 4];list.sort(); //✔assert_eq!(list, vec![1, 2, 3, 4, 5]); }小数排序 #[test] fn test_sort(){let mut list vec![1, 5, 3, 2, 4];//❌ 不能直接使用sort,因为f32和f64未实现O…...

HarmonyOS NEXT开发实战——HUAWEI DevEco Studio 开发指南

概述 HUAWEI DevEco Studio(以下简称 DevEco Studio)是基于 IntelliJ IDEA Community 开源版本打造的一站式开发平台,专为 HarmonyOS 系统上的应用和元服务(以下简称 应用/元服务)提供高效的开发环境。 作为一款专业…...

R 语言科研绘图 --- 密度图-汇总

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

【拒绝算法PUA】LeetCode 2270. 分割数组的方案数

系列文章目录 【拒绝算法PUA】0x00-位运算 【拒绝算法PUA】0x01- 区间比较技巧 【拒绝算法PUA】0x02- 区间合并技巧 【拒绝算法PUA】0x03 - LeetCode 排序类型刷题 【拒绝算法PUA】LeetCode每日一题系列刷题汇总-2025年持续刷新中 C刷题技巧总结: [温习C/C]0x04 刷…...

k8s 配置两个deployment主机级别互斥部署

在 Kubernetes 中,要实现两个 Deployment 的 Pod 在主机级别互斥部署,可以使用 podAntiAffinity 配置。通过设置 podAntiAffinity,可以确保两个 Deployment 的 Pod 不会被调度到同一节点上。 实现步骤 定义 Deployment: 为每个…...

Axure大屏可视化原型模板及素材:数据可视化的高效解决方案

数据可视化已成为企业决策、运营分析、市场洞察的重要工具。数据可视化大屏,作为数据展示和交互的直观平台,能够实时呈现关键数据,帮助企业快速做出决策。Axure作为原型设计领域的领先工具,以其丰富的组件库、强大的交互设计能力和…...

AGI大模型(2):GPT:Generative Pre-trained Transformer

1 Generative Pre-trained Transformer 1.1 Generative生成式 GPT中的“生成式”指的是该模型能够根据输入自动生成文本内容,而不仅仅是从已有的文本库中检索答案。 具体来说: 生成(Generative):GPT是一个生成式AI模型,能够根据给定的提示(Prompt)动态生成连贯、…...

Profinet转Profinet以创新网关模块为核心搭建西门子和欧姆龙PLC稳定通讯架构案例​

你是否有听过PROFINET主站与PROFINET主站之间需要做数据通讯有需求? 例如西门子1500与霍尼韦尔DCS系统两个主站之间的通讯。应用于PROFINET为主站设备还有欧姆龙、基恩士、罗克韦尔、施耐德、GE、ABB等品牌的PLC或DCS、FCS等平台。在生产或智能领域有通讯需求。两头…...

函数调用汇编

目录 一、核心概念 二、函数调用过程(以 x86 cdecl 为例) 三、x86 vs x64 区别 四、示例分析(C代码 → 汇编) 五、常见问题 一、核心概念 调用约定 (Calling Convention) 规定参数传递顺序(如 cdecl 是右到左&…...

LabVIEW 线性拟合

该 LabVIEW 程序实现了 线性拟合(Linear Fit),用于计算给定一组数据点的斜率(Slope)和截距(Intercept),并将结果可视化于 XY Graph 中。本案例适用于数据拟合、实验数据分析、传感器…...

在办公电脑上本地部署 70b 的 DeepSeek 模型并实现相应功能的大致步骤

以下是为客户在办公电脑上本地部署 70b 的 DeepSeek 模型并实现相应功能的大致步骤: 硬件准备: 70b 模型对硬件要求较高,确保办公电脑有足够强大的 GPU(例如 NVIDIA A100 等高端 GPU,因为模型规模较大,普通…...

国产编辑器EverEdit - 脚本(解锁文本编辑的无限可能)

1 脚本 1.1 应用场景 脚本是一种功能扩展代码,用于提供一些编辑器通用功能提供不了的功能,帮助用户在特定工作场景下提高工作效率,几乎所有主流的编辑器、IDE都支持脚本。   EverEdit的脚本支持js(语法与javascript类似)、VBScript两种编程…...

网络安全需要学多久才能入门?

网络安全是一个复杂且不断发展的领域,想要入行该领域,我们需要付出足够多的时间和精力好好学习相关知识,才可以获得一份不错的工作,那么网络安全需要学多久才能入门?我们通过这篇文章来了解一下。 学习网络安全的入门时间因个人的…...

H5端vue3 SSR 项目报错小计

H5端vue3 SSR 项目报错小计 环境 "vue-router": "^4.1.6" "vue": "^3.2.45", "vant": "^3.4.9",报错复现 ①.页面刷新点击 RouterLink 跳转链接, 页面无法跳转 问题排查 ①.去除 van-popup 使用的 teleport“…...

【Node.js入门笔记4---fs 目录操作】

Node.js入门笔记4 Node.js---fs 目录操作一、目录操作1.fs.mkdir():创建目录。异步,非阻塞。创建单个目录创建多个目录创建目前之前需要确认是否存在: 2. fs.mkdirSync():用于创建一个新的目录。异步,非阻塞。3.fs.rmd…...

xcode 旧版本、历史版本下载

下载链接:https://developer.apple.com/download/all/ 版本发布日志:https://developer.apple.com/documentation/xcode-release-notes 需要登录开发者账号,搜索下载即可: 再贴一下网友做的版本统计macOS 版本对应的 Xcode 版本&…...

(十一) 人工智能 - Python 教程 - Python元组

更多系列教程,每天更新 更多教程关注:xxxueba.com 星星学霸 1 元组(Tuple) 元组是有序且不可更改的集合。在 Python 中,元组是用圆括号编写的。 实例 创建元组: thistuple ("apple", "b…...

【计算机视觉】工业表计读数(1)--基于关键点检测的读数识别方案

随着工业自动化和智能制造的发展,对设备状态实时监控和数据采集提出了更高要求。本文提出了一种基于YOLO的工业表计读数识别方法,通过首先利用YOLO进行表计目标检测,提取出单独的表计图像,然后分别对表针和刻度进行关键点检测&…...

Redis--Zset类型

目录 一、引言 二、介绍 三、命令 1.zadd 2.zrange,zrevrange,zrangebyscore 3.zcard,zcount 4.zpopmax,bzpopmax,zpopmin,bzpopmin 5.zrank,zrevrank,zscore 6.zrem,zremrangebyrank&a…...

Java 大视界 -- 基于 Java 的大数据机器学习模型的迁移学习应用与实践(129)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

SpringBoot 第一课(Ⅲ) 配置类注解

目录 一、PropertySource 二、ImportResource ①SpringConfig (Spring框架全注解) ②ImportResource注解实现 三、Bean 四、多配置文件 多Profile文件的使用 文件命名约定: 激活Profile: YAML文件支持多文档块&#xff…...

期望最大化(EM)算法

MLE (最大似然估计)是一种非常有效的参数估计方法,但当分布中有多余参数或数据为截尾或缺失时,其 MLE 的求取是比较困难的。于是 Dempster 等人于 1977 年提出了 EM 算法,其出发点是把求 MLE 的过程分两步走&#xff1…...

DeepSeek与人工智能:技术演进、架构解析与未来展望

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 1. DeepSeek技术全景解析1.1 DeepSeek技术定位1.2 核心技术组件 2. 人工智能发展路线2.1 技术…...

Keepalived 多主模型与 LVS 高可用

一.Keepalived多主模型 Keepalived多主模型概念 如上图,keepalived主从架构性能损耗较严重,如果业务分类明确,则可以配置keepalived多主模型降低损耗,两台keepalived互为主备,如:订单业务走keepalived1&am…...

AGI大模型(6):提示词模型进阶

1 零样本提示 如今,经过⼤量数据训练并调整指令的LLM能够执⾏零样本任务。 代码如下: from openai import OpenAI from dotenv import load_dotenv load_dotenv() # 初始化 OpenAI 服务。 client = OpenAI()prompt = """ 将⽂本分类为中性、负⾯或正⾯。 ⽂…...

群体智能优化算法-旗鱼优化算法 (Sailfish Optimizer, SFO,含Matlab源代码)

摘要 旗鱼优化算法(Sailfish Optimizer, SFO)是一种模拟旗鱼(Sailfish)和沙丁鱼(Sardine)之间捕食关系的新型元启发式算法。通过在搜索过程中模拟旗鱼对沙丁鱼的捕食行为,以及沙丁鱼群的逃逸与…...

适合企业内训的AI工具实操培训教程(37页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 资料解读:适合企业内训的 AI 工具实操培训教程 在当今数字化时代,人工智能(AI)技术迅速发展,深度融入到各个领域,AIGC(人工智能生成内容)更是成…...

用 Python 进行比特币数据分析:从入门到实战

用 Python 进行比特币数据分析:从入门到实战 前言 比特币,这个“数字黄金”,已经成为全球金融市场不可忽视的存在。无论是短线交易、长期投资,还是链上数据分析,都离不开数据的支撑。而 Python,作为数据分析的瑞士军刀,为我们提供了一整套强大的工具。 本篇文章将带你…...

CT重建笔记(四)——三维重建

人如果不思考不学习,天天刷短视频,跟咸鱼有什么区别? 平行的线积分数据(X射线变换) 平行光束图像重建的理论基础是中心切片定理(二维情形见我的博客https://leslielee.blog.csdn.net/article/details/134…...

蓝桥杯刷题周计划(第三周)

目录 前言题目一题目代码题解分析 题目二题目代码题解分析 题目三题目代码题解分析 题目四题目代码题解分析 题目五题目代码题解分析 题目六题目代码题解分析 题目七题目代码题解分析 题目八题目代码题解分析 题目九题目代码题解分析 题目十题目代码题解分析 前言 大家好&#…...

Qt 控件概述 QWdiget 1.1

目录 qrc机制 qrc使用 1.在项目中创建一个 qrc 文件 2.将图片导入到qrc文件中 windowOpacity: cursor 光标 cursor类型 自定义Cursor font tooltip focusPolicy styleSheet qrc机制 之前提到使用相对路径的方法来存放资源,还有一种更好的方式…...

Type_ C和锂电池自切换电路

支持Type_ C和锂电池双供电的供电方案: Type_ C插入,PMOS关断,电池切断,后级电路由Type_ C供电; 锂电池插入,Type_ C不接的时候,PMOS导通,锂电池供电; 1、没有插入USB电…...

CTP开发爬坑指北(九)

CTP API开发中有很多需要注意的小细节,稍有不慎就会出问题,不然,轻则表现与预期不符,重则程序崩溃影响策略盈利。本系列将容易遇到的坑列出来,以供开发时参考,如有疑义之处,欢迎指正。 在国内期…...

算法之双指针

移动零 题目链接:https://leetcode.cn/problems/move-zeroes 题目的要求是不能改变原数组的非零元素的顺序,也不得再额外开个空间。 算法原理:将数组划分,数组分块。 将所有的非零元素移到左边,零元素移到右边。 方…...

关于ISP Pipeline LSC(镜头阴影校正)位置的一些想法

关于LSC校正的一些基本原理可以参考如下链接: ISP之LSC 【ISP】浅析Lens Shading ISP-镜头阴影校正(LSC) 这篇博文不打算讲具体的LSC校正原理。 主要是答复一位网友关于LSC校正在ISP Pipeline的问题。 网友问题如下: Rin_Cyn…...

x012-MSP430F249智能步进电动百叶窗_proteus_光敏电阻_步进电机_仿真

https://www.dong-blog.fun/post/1997 46 、智能步进电动百叶窗 基本要求: 用一台步进电机控制百叶窗叶片的旋转(正转/反转) 用 LED 数码管显示旋转角度 设置按键: 手动/自动切换、手动正转和手动反转,停止/启动键 用一…...

WordPress调用当前文章作者头像

制作wordpress博客主题时经常会到用&#xff0c;需要调用wordpress当前文章作者头像的时候&#xff0c;用下面的这段代码即可。 <?php if (have_posts()) : the_post(); update_post_caches($posts); ?> //wodepress.com <?php echo get_avatar( get_the_author_e…...

Mysql表的查询

一&#xff1a;创建一个新的数据库&#xff08;companydb),并查看数据库。 二&#xff1a;使用该数据库&#xff0c;并创建表worker。 mysql> use companydb;mysql> CREATE TABLE worker(-> 部门号 INT(11) NOT NULL,-> 职工号 INT(11) NOT NULL,-> 工作时间 D…...

25.单例模式实现线程池

一、线程池的概念 1.1 线程池的介绍 线程池是一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅…...

欢乐力扣:基本计算器

文章目录 1、题目描述2、思路代码括号 1、题目描述 基本计算器。  给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。  注意:不允许使用任何将字符串作为数学表达式计算的内置函数&#xff0c;比如 eval() 。 2、思路 本人也不太会&#xff0c…...

app.config.globalProperties

目录 一:基础使用 1、简介 2、使用 3、打印结果: 二:封装 1、创建一个.ts文件(utils/msg.ts) 2、在main.ts中全局注册 3、在页面中使用 4、打印结果 一:基础使用 1、简介 app.config.globalProperties 是 Vue 3 应用实例&#xff08;app&#xff09;的一个配置属性&…...

Javascript BOM,DOM 知识简介

JSON 一种数据交换格式,作为数据载体,传输数据, Json比xml 更简单,可读性更高.js的对象和Json可以相互转换. //json定义格式: var varName{"key1":value1,"key2":value2};value的数据类型为数字,字符串(在双引号中),布尔值,数组(在方括号中),对象(在花括…...

记第一次跟踪seatunnel的任务运行过程四——getJobConfigParser().parse()的动作

前绪 记第一次跟踪seatunnel的任务运行过程三——解析配置的具体方法getLogicalDag 正文 书接上文 ImmutablePair<List<Action>, Set<URL>> immutablePair getJobConfigParser().parse(null);在前一篇文章中说到getLogicDag()方法的第一行&#xff08;如…...