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

CV(3)--噪声滤波和特征

前言

仅记录学习过程,有问题欢迎讨论

图像噪声(需要主动干扰的场景):
  • 添加高斯噪声:概率密度函数服从高斯分布的一类噪声
    通过设置sigma和mean生成符合高斯分布的随机数,然后计算输出像素,放缩到0-255,循环所有像素,输出图像。

  • 添加椒盐噪声:随机出现的白点或者黑点
    设置信噪比SNR,总数SR,加噪的数量为SNR*SR;随机指定像素位置,指定像素点为0或者255,,输出图像。

图像滤波(消除噪声):
目的: 消除图像中混入的噪声;为图像识别抽取出图像特征。

  • 均值滤波:取像素平均值,替换中心像素值,计算速度快,算法简单;
    降低噪声的同时使图像产生模糊,特别是景物的边缘和细节部分

  • 中值滤波:取像素中值,替换中心像素值,计算速度慢,算法复杂;
    抑制效果很好,画面的清析度基本保持;对高斯噪声的抑制效果不是很好

  • 最大最小值滤波:排序替换中心为最大or最小值

  • 引导滤波:当需要求该函数上某一点的值时,只需计算所有包含该点的线性函数的值并做平均即可。这种模型,在表示非解析函数上,非常有用

图像增强:
点处理技术。只对单个像素进行处理。

  1. 线性变换:图像增强线性变换主要对图像的对比度和亮度进行调整
  2. 分段线性变换:对处于某个感兴趣的区域的x,将其对比度系数a增大或减小,从而增大或减小这个区域的对比度
  3. 对数变换:对数变换将图像的低灰度值部分扩展,将其高灰度值部分压缩,以达到强调图像低灰度部分的目的;
  4. 幂律变换:主要用于图像的校正,对漂白的图片或者是过黑的图片进行修正

领域处理技术。对像素点及其周围的点进行处理,即使用卷积核

  1. 直方图均衡化
  2. 各种滤波

特征选择(3选2):
选择尽可能少的子特征,模型的效果不会显著下降,并且结果的类别分布尽可能的接近真实的类别分布
目的:降维 提升效率 降低学习难度

特征提取(3变为2)
提取特征可以组合新的特征,和特征选择一致都属于降维

  • 基于图像传统特征

    • 主成分分析PCA(投影降维):
      目标:降维后同一维度的方差最大(差异大,可以体现区别),不同维度之间的相关性为0
    1. 对原始数据零均值化(中心化):平移使得所有数据的中心为0,0
    2. 求协方差矩阵(同一样本):按照不同维度求协方差矩阵求均值,体现特征之间相关性
    3. 对协方差矩阵求特征向量和特征值,这些特征向量组成了新的特征空间。
    4. 按照特征值大小排序,选择前n(降的维度)个特征向量,组成新的特征空间(基底)
    5. 将原始数据投影到新的特征空间,得到降维后的数据
  • 基于深度学习特征:CNN

高斯/椒盐噪声和PCA的实现

"""
week4 work
1.实现高斯噪声和椒盐噪声
2.实现PCA
"""
import randomimport cv2
import matplotlib.pyplot as plt
import numpy as np
import sklearn.decomposition as dp# 添加高斯噪声
def GaussianNoise(img, mean, sigma, per):img_gus = img.copy()# 随机的像素点个数random_num = int(img.shape[0] * img.shape[1] * per)for i in range(random_num):# 随机像素点random_x = random.randint(0, img.shape[0] - 1)random_y = random.randint(0, img.shape[0] - 1)img_gus[random_x, random_y] = img_gus[random_x, random_y] + random.gauss(mean, sigma)# 若灰度值小于0则强制为0,若灰度值大于255则强制为255if img_gus[random_x, random_y] < 0:img_gus[random_x, random_y] = 0elif img_gus[random_x, random_y] > 255:img_gus[random_x, random_y] = 255return img_gus# 添加椒盐噪声
def SaltAndPepperNoise(img, per):img_sp = img.copy()# 随机的像素点个数random_num = int(img.shape[0] * img.shape[1] * per)for i in range(random_num):# 随机像素点random_x = random.randint(0, img.shape[0] - 1)random_y = random.randint(0, img.shape[0] - 1)# 随机黑白点if random.random() >= 0.5:img_sp[random_x, random_y] = 0else:img_sp[random_x, random_y] = 255return img_sp# 实现PCA 降维
def PCA(data, k):# 计算均值mean = np.mean(data, axis=0)# 矩阵中心化data_mean = data - mean# 计算协方差矩阵cov = np.cov(data_mean, rowvar=False)# 计算特征值和特征向量eig_vals, eig_vecs = np.linalg.eig(cov)# 将特征值和特征向量组合成元组列表,并按特征值从大到小排序eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:, i]) for i in range(len(eig_vals))]print('特征值和特征向量:\n', eig_pairs)# 按特征值从大到小排序eig_pairs.sort(key=lambda x: x[0], reverse=True)# 对特征向量降为为k个维度eig_vecs = [eig_pairs[i][1] for i in range(k)]# 转化为array 3×2eig_vecs = np.transpose(eig_vecs)print('eig_vecs:\n', eig_vecs)# # 将特征向量组合成矩阵# 将数据投影到特征向量上data_pca = np.dot(data, eig_vecs)# 返回降维后的数据return data_pca# img = cv2.imread("lenna.png", 0)  # 注意后面参数 为0 变为一个通道
# cv2.imshow("original", img)
# img_gus = GaussianNoise(img, 2, 4, 0.8)
# cv2.imshow("gus_img", img_gus)# img_sp = SaltAndPepperNoise(img, 0.2)
# cv2.imshow("sp_img", img_sp)
# cv2.waitKey(0)X = np.array([[10, 15, 29],[15, 46, 13],[23, 21, 30],[11, 9,  35],[42, 45, 11],[9,  48, 5],[11, 21, 14],[8,  5,  15],[11, 12, 21],[21, 20, 25]])
K = np.shape(X)[1] - 1
print('样本集(10行3列,10个样例,每个样例3个特征):\n', X)
pca = PCA(X,K)
print('降维后的样本集:\n', pca)

相关文章:

CV(3)--噪声滤波和特征

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 图像噪声&#xff08;需要主动干扰的场景&#xff09;&#xff1a; 添加高斯噪声&#xff1a;概率密度函数服从高斯分布的一类噪声 通过设置sigma和mean生成符合高斯分布的随机数&#xff0c;然后计算输出像素&#xff0c;放缩…...

LDR6500:音频双C支持,数字与模拟的完美结合

在当今数字化快速发展的时代&#xff0c;音频设备的兼容性和性能成为了用户关注的重点。LDR6500&#xff0c;作为乐得瑞科技精心研发的USB Power Delivery&#xff08;PD&#xff09;协议芯片&#xff0c;凭借其卓越的性能和广泛的应用兼容性&#xff0c;为音频设备领域带来了新…...

python web app开发

背景: web app VS 本地GUI开发 web app开发以来一直被人诟病性能,无法访问本地设备,无状态的等缺点而被迫转向本地GUI开发;但本地开发如C++ QT,MFC,WinForm等开发结构又太重,使人望而生畏。web app有个有点就…...

redis数据结构和内部编码及单线程架构

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:数据库 JavaEE专栏:JavaEE 软件测试专栏:软件测试 关注博主带你了解更多知识 1. 数据结构和内部编码 Redis会在合适的场景选择合适的内部编码 我们可以通过objectencoding命令查询内部编码 : 2. 单线程架构 …...

【unity小技巧】分享vscode如何进行unity开发,且如何开启unity断点调试模式,并进行unity断点调试(2024年最新的方法,实测有效)

文章目录 前言一、前置条件1、已安装Visual Studio Code&#xff0c;并且unity首选项>外部工具>外部脚本编辑器选择为Visual Studio Code [版本号]&#xff0c;2、在Visual Studio Code扩展中搜索Unity&#xff0c;并安装3、同时注意这个插件下面的描述&#xff0c;需要根…...

AI大模型学习笔记|人工智能的发展历程、智能体的发展、机器学习与深度学习的基本理论

学习链接&#xff1a;冒死上传&#xff01;价值2W的大模型入门到就业教程分享给大家&#xff01;轻松打造专属大模型助手&#xff0c;—多模态、Agent、LangChain、ViT、NLP_哔哩哔哩_bilibili 百度网盘自己整理的笔记&#xff1a; 通过网盘分享的文件&#xff1a;1-人工智能的…...

C#实现一个HttpClient集成通义千问-多轮对话功能实现

多轮对话功能实现 视频教程实现原理消息的类型 功能开发消息类修改请求体修改发送请求函数修改用户消息输入 多轮对话的token消息完整文档消息类型 视频教程 .NetAI开发入门HttpClient实现通义千问集成-多轮对话功能实现 实现原理 一直保留更新messages 现在设置的meessages只…...

Java Web 7 请求响应(Postman)

前言&#xff08;SpringBoot程序请求响应流程&#xff09; 以上一章的程序为例&#xff0c;一个基于SpringBoot的方式开发一个web应用&#xff0c;浏览器发起请求 /hello 后 &#xff0c;给浏览器返回字符串 “Hello World ~”。 而我们在开发web程序时呢&#xff0c;定义了一…...

Android APP自学笔记

摘抄于大学期间记录在QQ空间的一篇自学笔记&#xff0c;当前清理空间&#xff0c;本来想直接删除掉的&#xff0c;但是感觉有些舍不得&#xff0c;因此先搬移过来。 Android导入已有外部数据库 2015.06.26在QQ空间记录&#xff1a;在Android中不能直接打开res aw目录中的数据…...

Linux 系统报打开的文件过多

1.问题 1804012290 [reactor-http-epoll-1] WARN i.n.channel.DefaultChannelPipeline - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception. - io.nett…...

javaWeb之过滤器(Filter)

目录 前言 过滤器概述 什么是过滤器 过滤器详细 过滤器的生命周期 过滤器的应用 创建一个简单的Filter类步骤 注意&#xff1a;指定拦截路径&#xff0c;我们有两种方式 实例 前言 本篇博客的核心 知道过滤器的整个拦截过程知道如何指定拦截路径知道过滤器的生命周期…...

ModStartBlog v10.0.0 发布时间自定义,多图快速粘贴,博客编辑器升级

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装 …...

Unexpected token ‘<‘, “<!doctype “... is not valid JSON

Unexpected token ‘<’, "<!doctype "… is not valid JSON 在前端开发时&#xff0c;遇到以下报错内容。 1.报错内容如下&#xff1a; // 报错内容 Uncaught (in promise) SyntaxError: Unexpected token <, "<!doctype "... is not valid…...

24/12/9 算法笔记<强化学习> PPO,DPPO

PPO是目前非常流行的增强学习算法&#xff0c;OpenAI把PPO作为目前baseline算法&#xff0c;首选PPO&#xff0c;可想而知&#xff0c;PPO可能不是最强的&#xff0c;但是是最广泛的。 PPO是基于AC架构&#xff0c;因为AC架构有一个好处&#xff0c;就是解决了连续动作空间的问…...

Linux下编译安装METIS

本文记录Linux下编译安装METIS的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1 一、安装依赖 1.1 下载GKlib sudo apt-get install build-essential sudo apt-get install cmake 2.2 编译安装GKlib 下载GKlib代码&#xff0c; …...

【数据库】关系代数和SQL语句

一 对于教学数据库的三个基本表 学生S(S#,SNAME,AGE,SEX) 学习SC(S#,C#,GRADE) 课程(C#,CNAME,TEACHER) &#xff08;1&#xff09;试用关系代数表达式和SQL语句表示&#xff1a;检索WANG同学不学的课程号 select C# from C where C# not in(select C# from SCwhere S# in…...

amazon亚马逊滑动识别验证码

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 本文识别已同步上线至OCR识别网站: http://yxlocr.nat300.top/ocr/other/15 亚马逊的滑动还原验证码数据集如下: 和某顶象的差不多,图片分割高度是中间固定的,…...

Android Studio 创建虚拟设备的详细图文操作教程

本篇文章主要讲解 Android Studio 创建模拟器详细图文操作&#xff0c;包含了每一步的详细操作&#xff0c;便于理解和掌握对模拟的创建。 日期&#xff1a;2024年12月9日 作者&#xff1a;任聪聪 运行效果&#xff1a; 说明&#xff1a;创建运行后&#xff0c;点击右侧如下图…...

网络安全法-附则

第七章 附 则 第七十六条 本法下列用语的含义&#xff1a; &#xff08;一&#xff09;网络&#xff0c;是指由计算机或者其他信息终端及相关设备组成的按照一定的规则和程序对信息进行收集、存储、传输、交换、处理的系统。 &#xff08;二&#xff09;网络安全&#xff…...

CSS核心(上)

CSS 介绍 层叠样式表&#xff08;英语&#xff1a;Cascading Style Sheets, 缩写:CSS; 又叫串样式列表&#xff0c;级联样式表&#xff0c;串接样式表&#xff0c;阶层式样式表&#xff09;是一种用来为结构化文档&#xff08;HTML或XML应用&#xff09;添加样式&#xff08;…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...