CV(3)--噪声滤波和特征
前言
仅记录学习过程,有问题欢迎讨论
图像噪声(需要主动干扰的场景):
-
添加高斯噪声:概率密度函数服从高斯分布的一类噪声
通过设置sigma和mean生成符合高斯分布的随机数,然后计算输出像素,放缩到0-255,循环所有像素,输出图像。 -
添加椒盐噪声:随机出现的白点或者黑点
设置信噪比SNR,总数SR,加噪的数量为SNR*SR;随机指定像素位置,指定像素点为0或者255,,输出图像。
图像滤波(消除噪声):
目的: 消除图像中混入的噪声;为图像识别抽取出图像特征。
-
均值滤波:取像素平均值,替换中心像素值,计算速度快,算法简单;
降低噪声的同时使图像产生模糊,特别是景物的边缘和细节部分 -
中值滤波:取像素中值,替换中心像素值,计算速度慢,算法复杂;
抑制效果很好,画面的清析度基本保持;对高斯噪声的抑制效果不是很好 -
最大最小值滤波:排序替换中心为最大or最小值
-
引导滤波:当需要求该函数上某一点的值时,只需计算所有包含该点的线性函数的值并做平均即可。这种模型,在表示非解析函数上,非常有用
图像增强:
点处理技术。只对单个像素进行处理。
- 线性变换:图像增强线性变换主要对图像的对比度和亮度进行调整
- 分段线性变换:对处于某个感兴趣的区域的x,将其对比度系数a增大或减小,从而增大或减小这个区域的对比度
- 对数变换:对数变换将图像的低灰度值部分扩展,将其高灰度值部分压缩,以达到强调图像低灰度部分的目的;
- 幂律变换:主要用于图像的校正,对漂白的图片或者是过黑的图片进行修正
领域处理技术。对像素点及其周围的点进行处理,即使用卷积核
- 直方图均衡化
- 各种滤波
特征选择(3选2):
选择尽可能少的子特征,模型的效果不会显著下降,并且结果的类别分布尽可能的接近真实的类别分布
目的:降维 提升效率 降低学习难度
特征提取(3变为2):
提取特征可以组合新的特征,和特征选择一致都属于降维
-
基于图像传统特征
- 主成分分析PCA(投影降维):
目标:降维后同一维度的方差最大(差异大,可以体现区别),不同维度之间的相关性为0
- 对原始数据零均值化(中心化):平移使得所有数据的中心为0,0
- 求协方差矩阵(同一样本):按照不同维度求协方差矩阵求均值,体现特征之间相关性
- 对协方差矩阵求特征向量和特征值,这些特征向量组成了新的特征空间。
- 按照特征值大小排序,选择前n(降的维度)个特征向量,组成新的特征空间(基底)
- 将原始数据投影到新的特征空间,得到降维后的数据
- 主成分分析PCA(投影降维):
-
基于深度学习特征: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)--噪声滤波和特征
前言 仅记录学习过程,有问题欢迎讨论 图像噪声(需要主动干扰的场景): 添加高斯噪声:概率密度函数服从高斯分布的一类噪声 通过设置sigma和mean生成符合高斯分布的随机数,然后计算输出像素,放缩…...

LDR6500:音频双C支持,数字与模拟的完美结合
在当今数字化快速发展的时代,音频设备的兼容性和性能成为了用户关注的重点。LDR6500,作为乐得瑞科技精心研发的USB Power Delivery(PD)协议芯片,凭借其卓越的性能和广泛的应用兼容性,为音频设备领域带来了新…...
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,并且unity首选项>外部工具>外部脚本编辑器选择为Visual Studio Code [版本号],2、在Visual Studio Code扩展中搜索Unity,并安装3、同时注意这个插件下面的描述,需要根…...

AI大模型学习笔记|人工智能的发展历程、智能体的发展、机器学习与深度学习的基本理论
学习链接:冒死上传!价值2W的大模型入门到就业教程分享给大家!轻松打造专属大模型助手,—多模态、Agent、LangChain、ViT、NLP_哔哩哔哩_bilibili 百度网盘自己整理的笔记: 通过网盘分享的文件:1-人工智能的…...

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

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

Android APP自学笔记
摘抄于大学期间记录在QQ空间的一篇自学笔记,当前清理空间,本来想直接删除掉的,但是感觉有些舍不得,因此先搬移过来。 Android导入已有外部数据库 2015.06.26在QQ空间记录:在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类步骤 注意:指定拦截路径,我们有两种方式 实例 前言 本篇博客的核心 知道过滤器的整个拦截过程知道如何指定拦截路径知道过滤器的生命周期…...

ModStartBlog v10.0.0 发布时间自定义,多图快速粘贴,博客编辑器升级
ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场,后台一键快速安装 …...
Unexpected token ‘<‘, “<!doctype “... is not valid JSON
Unexpected token ‘<’, "<!doctype "… is not valid JSON 在前端开发时,遇到以下报错内容。 1.报错内容如下: // 报错内容 Uncaught (in promise) SyntaxError: Unexpected token <, "<!doctype "... is not valid…...

24/12/9 算法笔记<强化学习> PPO,DPPO
PPO是目前非常流行的增强学习算法,OpenAI把PPO作为目前baseline算法,首选PPO,可想而知,PPO可能不是最强的,但是是最广泛的。 PPO是基于AC架构,因为AC架构有一个好处,就是解决了连续动作空间的问…...

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代码, …...

【数据库】关系代数和SQL语句
一 对于教学数据库的三个基本表 学生S(S#,SNAME,AGE,SEX) 学习SC(S#,C#,GRADE) 课程(C#,CNAME,TEACHER) (1)试用关系代数表达式和SQL语句表示:检索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 创建模拟器详细图文操作,包含了每一步的详细操作,便于理解和掌握对模拟的创建。 日期:2024年12月9日 作者:任聪聪 运行效果: 说明:创建运行后,点击右侧如下图…...
网络安全法-附则
第七章 附 则 第七十六条 本法下列用语的含义: (一)网络,是指由计算机或者其他信息终端及相关设备组成的按照一定的规则和程序对信息进行收集、存储、传输、交换、处理的系统。 (二)网络安全ÿ…...
CSS核心(上)
CSS 介绍 层叠样式表(英语:Cascading Style Sheets, 缩写:CSS; 又叫串样式列表,级联样式表,串接样式表,阶层式样式表)是一种用来为结构化文档(HTML或XML应用)添加样式(…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...