当前位置: 首页 > 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;…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

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

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

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

R 语言科研绘图第 55 期 --- 网络图-聚类

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

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...