图像去噪--(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 npimg = 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即为噪声模型


总结

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

加密算法详解

加密学的发展和应用 计算机加密学的发展历程可以大致分为以下几个阶段: 古典密码学时期(古代至20世纪初): 在古代,人们就已经开始使用简单的加密技术来保护通信内容,例如凯撒密码、维吉尼亚密码等。到了近…

2024年【天津市安全员C证】新版试题及天津市安全员C证模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 天津市安全员C证新版试题考前必练!安全生产模拟考试一点通每个月更新天津市安全员C证模拟考试题题目及答案!多做几遍,其实通过天津市安全员C证模拟考试题库很简单。 1、【多选题】《…

Linux安装使用one-api 格式访问所有的大模型

One API ✨ 通过标准的 OpenAI API 格式访问所有的大模型,开箱即用 ✨ [!NOTE] 本项目为开源项目,使用者必须在遵循 OpenAI 的使用条款以及法律法规的情况下使用,不得用于非法用途。 根据《生成式人工智能服务管理暂行办法》的要求&#xff…

主干网络篇 | YOLOv8更换主干网络之ShuffleNetV2(包括完整代码+添加步骤+网络结构图)

前言:Hello大家好,我是小哥谈。ShuffleNetV2是一种轻量级的神经网络架构,用于图像分类和目标检测任务。它是ShuffleNet的改进版本,旨在提高模型的性能和效率。ShuffleNetV2相比于之前的版本,在保持模型轻量化的同时&am…

inux(CentOS)/Windows-C++ 云备份项目(项目文件操作工具类设计,完成项目基本文件操作-读写-压缩-目录操作)

文章目录 1. 项目文件操作工具类设计 1. 项目文件操作工具类设计 根据前面的分析,这个文件类的基本属性如下: 文件大小信息文件最后修改时间文件最后一次访问时间,方便文件的热点管理文件名称,需要从http 请求行上的uri中获取基…

【智能算法】保姆级教程-如何使用CEC测试集,以及如何定义自己的优化问题

目录 1.准备工作2.使用CEC2005测试集3.自定义优化问题-无约束问题4.自定义优化问题-有约束问题5.代码实现 1.准备工作 一个CEC2005测试集 一个测试智能算法,比如麻雀搜索算法SSA 2.使用CEC2005测试集 以CEC2005测试集函数F7为例: 3.自定义优化问题…

请问腾讯云2核4G服务器最大能支持多少人访问?

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问?5M带宽下载速度峰值可达640KB/秒,阿腾云以搭建网站为例,假设优化后平均大小为60KB,则5M带宽可支撑10个用户同时在1秒内打开网站,并发数为10,经阿腾云测试&a…

JavaScript单元代码(1)

1.简单的JavaScript代码 <!doctype html> <html><head><meta charset"utf-8"><title>第一个简单的JavaScript程序</title></head><body><div style"font-size:18px;"><script type"text/j…

【在线AI绘画平台】哩布AI 在线生成图片、训练Lora、上传AI生成图简易实测

网址 https://www.liblib.ai/ | 在线生成 https://www.liblib.ai/sd 文章目录 一、主页面介绍1.1首页[网址 https://www.liblib.ai/](https://www.liblib.ai/)侧边栏可收起 1.2 模型页面1.2.1 按模型筛选相关1.2.2 封面的细节1.2.3 点击后进入封面&#xff1a; 二、在线生成图…

【Python】进阶学习:基于Numpy实现按指定维度拼接两个数组

【Python】进阶学习&#xff1a;基于Numpy实现按指定维度拼接两个数组 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希…

面试官:volatile如何保证可见性的,具体如何实现?

写在开头 在之前的几篇博文中&#xff0c;我们都提到了 volatile 关键字&#xff0c;这个单词中文释义为&#xff1a;不稳定的&#xff0c;易挥发的&#xff0c;在Java中代表变量修饰符&#xff0c;用来修饰会被不同线程访问和修改的变量&#xff0c;对于方法&#xff0c;代码…

【编程项目开源】微信飞机大战(鸿蒙版)

目标 仿微信飞机大战 效果 开发工具 下载DevEco Studio 工程截图 开源地址 https://gitee.com/lblbc/plane_game/tree/master/PlaneGame_hongmeng_ArkTS 关于 厦门大学计算机专业|华为八年高级工程师 专注《零基础学编程系列》 http://lblbc.cn/blog 包含&#xff1a;Ja…