图像去噪--(1)

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、图像噪声
    • 1.1 噪声定义
    • 1.2 基本特征
  • 二、按照噪声概率分布分类
    • 1.高斯噪声
    • 2.泊松噪声
  • 三、去噪算法
    • 3.1 线性滤波
      • 3.1.1 高斯滤波
      • 3.1.2 均值滤波
    • 3.2 非线性滤波
      • 3.2.1 中值滤波
      • 3.2.2 双边滤波
  • 四、深度学习
  • 总结


前言


一、图像噪声

1.1 噪声定义

图像各像素点的值因为噪声的存在偏离真实数值,使得图像模糊,画质下降,甚至淹没图像特征。

1.2 基本特征

  1. 图像噪声和真实数据有可能叠加也有可能分离
  2. 绝大部分噪声在图像中大小和分布不均,具有随机性
  3. 大部分噪声服从一定的统计学规律

二、按照噪声概率分布分类

参考 图像噪声、去噪基本方法合集(Python实现)

1.高斯噪声

所有噪声使用最广泛的,根据高斯分布(正态分布)的形式描述。相机在拍摄时视场较暗且亮度不均匀造成的,同时相机长时间工作使得温度过高也会引起高斯噪声,另外电路元器件白身噪声和互相影响也是造成高斯噪声的重要原因之一。

在这里插入图片描述
给图片加噪声

import cv2
import random
import numpy as np

img = cv2.imread('tulip.jpg')

# 产生高斯随机数
noise = np.random.normal(0, 50, size=img.size).reshape(img.shape[0], img.shape[1], img.shape[2])
# 加上噪声
img_with_noise = np.clip(img + noise, 0, 255).astype(np.uint8)

# 保存带有高斯噪声的图像
cv2.imwrite('tulip_with_noise.jpg', img_with_noise)

在这里插入图片描述
在这里插入图片描述

2.泊松噪声

泊松噪声是一种常见的图像噪声,它主要出现在光子计数较低的成像条件下,例如在低光条件下拍摄的图像或者放射性成像中。泊松噪声的特点是在图像中的每个像素值上引入了随机变化,这种变化的强度与像素值本身呈正相关。泊松噪声在图像中表现为像素值的随机波动

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、去噪算法

空间域包括局部滤波和非局部滤波。局部滤波包括线性滤波和非线性滤波

3.1 线性滤波

3.1.1 高斯滤波

高斯滤波:具体来说,高斯滤波利用了高斯函数的特性,对图像中每个像素周围的邻域进行加权平均处理,使得图像中每个像素的值都受到其周围像素值的影响,从而实现平滑处理。这种平滑效果有助于去除噪声,并可以在一定程度上保留图像的边缘信息。

import cv2
import numpy as np

# 读取带有高斯噪声的图像
img_with_noise = cv2.imread('tulip_with_noise.jpg')

# 应用高斯滤波去噪
denoised_img = cv2.GaussianBlur(img_with_noise, (5, 5), 0)


# 保存去噪后的图像
cv2.imwrite('tulip_denoised.jpg', denoised_img)

在这里插入图片描述

3.1.2 均值滤波

对图像中的每个像素取周围像素的平均值,可以有效去除高斯噪声。用于减少图像中的噪声。在OpenCV中,可以使用 cv2.blur() 函数来应用均值滤波
在这里插入图片描述

3.2 非线性滤波

3.2.1 中值滤波

将每个像素的灰度值替换为其周围像素灰度值的中值

3.2.2 双边滤波

双边滤波(Bilateral Filtering)是一种常见的图像滤波技术,能够在减少噪声的同时保留图像的边缘信息。它结合了空间域和灰度值域的信息,在平滑图像的同时保持图像的细节。

  1. 对于输入图像中的每个像素,选择一个邻域窗口,包含该像素及其周围的像素。

  2. 对于窗口中的每个像素,计算它与中心像素之间的空间距离和灰度值差异。

  3. 根据空间距离和灰度值差异计算像素的权重。一般来说,空间距离越近且灰度值差异越小的像素权重越高。

  4. 使用权重对邻域内的像素进行加权平均。权重越高的像素对平均值的贡献越大。

四、深度学习

DnCNN/FFDNet
图像去噪包含 数据预处理,特征提取,去噪模型三部分
在这里插入图片描述

  1. 数据清洗
  2. 提取噪声块,对噪声水平高低做出初步估计
  3. 选择去噪模型,自主快速提取浅层像素级特征和深层语义特征

y = x+v
x:无噪声图像
y:噪声图像
x = y-R(y)
v = R(y)

R即为噪声模型


总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/462328.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Python进行数据可视化:Matplotlib和Seaborn指南【第123篇—Matplotlib和Seaborn指南】

如何使用Python进行数据可视化:Matplotlib和Seaborn指南 数据可视化是数据科学和分析中不可或缺的一部分,而Python中的Matplotlib和Seaborn库为用户提供了强大的工具来创建各种可视化图表。本文将介绍如何使用这两个库进行数据可视化,并提供…

(每日持续更新)jdk api之StringBufferInputStream基础、应用、实战

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿&…

前端学习笔记 | WebAPIs(DOM+BOM)

一、作用和分类 1、基本概念 作用:使用JS去操作HTML和浏览器 分类:DOM(文档对象模型)和BOM(浏览器对象模型) html的标签JS的DOM对象 2、获取DOM对象-参数必须加引号 (1)选择匹配的第…

使用 OpenAI 的 Embedding模型 构建知识向量库并进行相似搜索

OpenAI的embedding模型的使用 首先第一篇文章中探讨和使用了ChatGPT4的API-Key实现基础的多轮对话和流式输出,完成了对GPT-API的一个初探索,那第二步打算使用OpenAI的embedding模型来构建一个知识向量库,其实知识向量库本质上就是一个包含着一…

电脑自带dll修复在哪里打开呢?马上教会你

由于各种原因,电脑可能会出现一些问题,其中之一就是dll文件丢失。Dll文件是动态链接库文件,它们包含了许多程序运行所需的函数和资源。当这些文件丢失或损坏时,可能会导致程序无法正常运行或出现错误提示。本文将介绍电脑dll文件丢…

springboot蛋糕订购小程序的设计与实现

摘 要 相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低商家的运营人员成本,实现了蛋糕订购的标准化、制度化、程序化的管理,有效地防止了蛋糕订购的随意管理,提高了信息的处理速度和精确度,能够及时、准确…

工作总结!日志打印的11条建议

前言 大家好,我是 JavaPub。日志是我们定位问题的得力助手,也是我们团队间协作沟通(甩锅)、明确责任归属(撕B)的利器。没有日志的程序运行起来就如同脱缰的野🐎。打印日志非常重要。今天我们来…

Linux内存管理--系列文章貮

接上文,用户态写完,本章写内核态内存空间。 3.2内核态内存 大家会发现用户态空间不管32还是64位,这种内存分布是相差不大的。是因为使用虚拟内存的系统,会让应用程序感到和别的程序是相互独立的,互不干扰&#xff0c…

mysql索引 (索引的忧缺点 ,联合索引)

索引的忧缺点 优点 (增加读操作效率,排序成本) 1 查询效率高 2 降低排序成本,索引对应的字段 就已经 自动排序,因为索引本身就是一种排好序的数据结构 缺点(降低写操作效率,占用空间&#xf…

【Unity】读取Json的三种方法(JsonUtility,LitJson,Newtonsoft)

介绍 在Unity开发过程中,Json是比较常用的一种数据存储文本,尤其是在和第三方交互中,基本都是json格式。 先给出一个Json示例,我们来看看是如何解析的。 {"Player": [{"id": 1001,"name": "…

UCORE 清华大学os实验 lab0 环境配置

打卡 lab 0 : 环境配置 : 首先在ubt 上的环境,可以用虚拟机或者直接在windows 上面配置 然后需要很多工具 如 qemu gdb cmake git 就是中间犯了错误,误以为下载的安装包,一直解压不掉,结果用gpt 检查 结…

Js输入输出语句

输入语法 prompt("您想输入的是&#xff1f;")输出语法: 语法1: document.write(‘要出的内容’&#xff09; <body><script>document.write("你好")document.write("<h1>我是<h1>")</script> </body>作…

【开发】Spring整合MyBatis、MyBatisPlus

目录 前言 Spring整合MyBatis 1. 在项目中的pom.xml中导入MyBatis和Spring相关的依赖&#xff1a; 2. 配置数据源 3. 编写实体类 4. 编写API接口 5. 编写单元测试方法&#xff08;业务&#xff09; Spring整合MyBatis-Plus 1. 在项目中导入依赖&#xff1a; 2. 配置数…

电大搜题:开启学习新时代

身处信息化时代&#xff0c;学习的方式已经发生了巨大的变革。在这个多元化的学习环境中&#xff0c;传统的学习模式已经无法满足现代学习者的需求。然而&#xff0c;电大搜题应运而生&#xff0c;为学习者提供了一个高效、便捷的学习途径。 电大搜题&#xff0c;作为黑龙江开…

“智慧农业新篇章:AI大模型引领生态与气象科研的未来“

AI大模型引领未来智慧科研暨ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的应用 以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数…

鸿蒙开发实现弹幕功能

鸿蒙开发实现弹幕功能如下&#xff1a; 弹幕轮播组件&#xff1a;BannerScroll import type { IDanMuInfoList, IDanMuInfoItem } from ../model/DanMuData //定义组件 Component export default struct BannerScroll {//Watch 用来监视状态数据的变化&#xff0c;包括&#…

【Git版本控制系统】:起步

目录 前言 版本控制 集中式与分布式的区别 Windows安装Git 核心 文件状态 工作区域 基本工作流程 配置用户信息 获取帮助 在线资源 前言 本篇文件的环境是Windows环境下实现。 在日常工作中git少不了&#xff0c;所以编写本篇文章介绍Git基础&#xff0c;专栏会不…

【DAY3 3.16】

1.【刷题】 【知识点与思路】 用乘法求余公式&#xff0c;暴力计算最大的m。 ans1,2,6,24,120...。计算这些阶乘的和是否是能被ans其整除&#xff0c;也就是判断&#xff1a; A[1]!%ansA[2]!%ans....A[n]!%ans0 要是不行的话&#xff0c;就输出当前ans对应的阶乘数。 【代码】 …

为什么国外客户在你跟进的过程中“消失”了?

看着别人跟的客户终于下单了&#xff0c;再看看自己的&#xff0c;怎么跟着跟着就没了。很多时候我们的客户就是不知不觉就被我们给跟丢了&#xff0c;因为我们的跟进方法是有问题的&#xff0c;下面给大家一些比较好的跟进方式和思路。 首先要跟进哪些客户&#xff1f; 不是所…

解压即用,2024最简单好用AI开源换脸应用,整合包已备好

软件整合包&#xff1a;点击下载 关键词&#xff1a;#AI换脸 #开源应用 #可视化界面 #实时换脸 #高清修复 #多个模型 #人脸遮挡处理 #模糊修复 #性能优化 #操作简单 总结&#xff1a;本软件是一款2024年最强大、最易用的AI换脸开源应用。该应用界面经过汉化&#xff0c;操作简…