图像处理技术与应用(二)

图像处理技术与应用入门

椒盐噪声

椒盐噪声,也称为脉冲噪声,是一种常见的数字图像噪声。它通常表现为图像中随机出现的白色(椒)或黑色(盐)像素点,这些像素点在图像上呈现为黑白杂点。椒盐噪声的成因多种多样,包括图像传感器故障、传输信道错误、解码处理问题等。在图像处理中,椒盐噪声会对图像分割、特征提取、图像识别等操作造成直接影响

去除椒盐噪声的常用方法包括中值滤波、自适应中值滤波、基于小波变换和阈值处理的去噪算法等。这些算法旨在降低噪声对图像质量的影响,同时尽量保留图像的原始细节和特征。

以下是生成椒盐噪声和使用中值滤波器和高斯模糊去除椒盐噪声的代码示例:

from skimage import io, dataimport numpy as npimg = data.hubble_deep_field()# 随机生成5000个椒盐rows, cols, dims = img.shapefor i in range(5000):x = np.random.randint(0, rows)y = np.random.randint(0, cols)img[x,y,:] = 255io.imshow(img)io.imsave('C:/Users/14919/OneDrive/Desktop/图像处理-工坊/22.jpg',img)rows, cols, dims = img.shapefor i in range(5000):x = np.random.randint(0, rows)y = np.random.randint(0, cols)img[x,y,:] = 255

在给定的图像 img 上随机选择 5000 个像素点,并将这些像素点的所有颜色通道(红、绿、蓝)的值设置为 255,即白色产生一种类似于噪声或散点图的效果。

中值滤波

import cv2# 读取带有椒盐噪声的图像img = cv2.imread('22.jpg')# 使用中值滤波器去除椒盐噪声median_img = cv2.medianBlur(img, 5)    # 显示去噪后的图像cv2.imshow('Denoised Image', median_img)cv2.waitKey(0)cv2.destroyAllWindows()

应用中值滤波器去除椒盐噪声。medianBlur函数的参数5表示滤波器的核大小,即滤波窗口的宽度和高度都是5像素。

中值滤波器会遍历图像的每个像素,并用该像素周围5x5区域内的中值替换它的值。这种方法对于去除随机分布的噪声点非常有效。

高斯模糊

import cv2image = cv2.imread('22.jpg')blurred_image = cv2.GaussianBlur(image, (5, 5), 0)    cv2.imshow('Blurred Image', blurred_image)cv2.waitKey(0)cv2.destroyAllWindows()

调用GaussianBlur函数对加载的图像应用高斯模糊。

高斯模糊是一种图像平滑技术,可以减少图像噪声和降低细节层次。

这里的(5, 5)是一个高斯核的尺寸,表示模糊窗口的宽度和高度都是5像素。参数0表示自动计算高斯核的标准差。

随机噪声

随机噪声是一种在时间上随机产生,其值在给定瞬间内无法预测的噪声。

这种噪声的特点是其幅度、波形及相位在任何一个时刻都是随机的,并且是一种前后独立的平衡随机过程。随机噪声通常服从于一定的统计分布规律,并且可以是多种类型的,包括脉冲噪声(如椒盐噪声)、窄带噪声(单频噪声)和起伏噪声(高斯噪声)等。脉冲噪声是突发性地产生、幅度大、持续时间短、间隔时间长的干扰;窄带噪声通常来自相邻电台或其他电子设备,看做是一种非所需的连续的已调正弦波;起伏噪声则在时域和频域内普遍存在,是通信系统中最基本的噪声源。

此外,随机噪声在数据集中表现为无规律的波动,且在数字滤波器和快速傅里叶变换的计算中,由于运算字长的限制,可能会产生有限字长效应,这种效应产生的噪声也可视为随机噪声。

以下是生成随机噪声和使用中值滤波器和高斯模糊去除随机噪声的代码示例:

添加随机噪声

import numpy as npimport cv2import matplotlib.pyplot as pltfrom skimage.io import imsave# 读取彩色图像image = cv2.imread('cc.jpg')# 设置噪声的均值和标准差mean = 0std_dev = 80# 生成随机噪声noise = np.random.normal(mean, std_dev, image.shape).astype(np.float32)# 向原始图像添加噪声noisy_image = image + noise# 裁剪噪声图像,确保数值在0-255之间noisy_image = np.clip(noisy_image, 0, 255).astype(np.uint8)# 显示原始图像和添加噪声后的图像plt.subplot(1, 2, 1)plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))plt.title('Original Image')plt.axis('off')plt.subplot(1, 2, 2)plt.imshow(cv2.cvtColor(noisy_image, cv2.COLOR_BGR2RGB))plt.title('Noisy Image')plt.axis('off')plt.show()# 保存添加噪声后的图片imsave('C:/Users/14919/OneDrive/Desktop/33.jpg',img)

红色文字段生成随机噪声并将其添加到原始图像中,然后对结果图像进行裁剪,以确保所有的像素值都在0到255的范围内,这是8位图像的标准像素值范围。

高斯滤波器

import numpy as npimport cv2import matplotlib.pyplot as plt# 读取彩色图像image = cv2.imread('33.jpg')  # 设置高斯噪声的均值和标准差mean = 0std_dev = 80# 生成随机高斯噪声noise = np.random.normal(mean, std_dev, image.shape).astype(np.float32)# 向原始图像添加噪声noisy_image = image + noise# 裁剪噪声图像,确保数值在0-255之间noisy_image = np.clip(noisy_image, 0, 255).astype(np.uint8)# 使用高斯滤波器对噪声图像进行降噪处理# ksize是高斯核的大小,sigmaX是高斯核在X方向的标准差denoised_image = cv2.GaussianBlur(noisy_image, (5, 5), sigmaX=0)# 显示原始图像、添加噪声后的图像和降噪后的图像plt.subplot(1, 3, 1)plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))plt.title('Original Image')plt.axis('off')plt.subplot(1, 3, 2)plt.imshow(cv2.cvtColor(noisy_image, cv2.COLOR_BGR2RGB))plt.title('Noisy Image')plt.axis('off')plt.subplot(1, 3, 3)plt.imshow(cv2.cvtColor(denoised_image, cv2.COLOR_BGR2RGB))plt.title('Denoised Image')plt.axis('off')plt.show()

红色文字段置高斯噪声的参数:均值 mean 为 0,标准差 std_dev 为 50。

生成一个与原始图像 image 大小相同的高斯噪声数组 noise,其中包含随机采样的值,这些值服从均值为 mean,标准差为 std_dev 的正态分布。噪声数组的数据类型被转换为 np.float32 以保持计算精度。

将生成的噪声 noise 与原始图像 image 相加,得到一个带有噪声的图像 noisy_image。

使用 np.clip 函数将 noisy_image 的像素值限制在 0 到 255 的范围内,并转换其数据类型为 np.uint8,以确保图像的像素值有效且适合显示。

通过应用高斯滤波器对 noisy_image 进行降噪处理,得到 denoised_image。高斯滤波器的核大小设置为 5x5,且在 X 方向上的标准差 sigmaX 设置为 0(这将自动计算为核大小的一半,即 sigmaX = 0.3 * (ksize - 1) + 0.8)。

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

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

相关文章

算法项目(9)—— 大模型实现PDF检索加QA

本文包含什么? 使用大语言模型进行多个PDF问答检索加QA.gradio实现的网页界面操作,全套代码以及代码介绍运行有问题? csdn上后台随时售后.项目说明 本项目实现使用大语言模型为核心,gradio框架,调用vicuna实现多个pdf QA 代码运行 python3 main.pyimport gradio as gr fr…

云计算革新:以太网 Scale-UP 网络为 GPU 加速赋能

谈谈基于以太网的GPU Scale-UP网络 Intel Gaudi-3 采用 RoCE 互联技术,促进了 Scale-UP 解决方案。业界专家 Jim Keller 倡导以太网替代 NVLink。Tenstorrent 成功应用以太网实现片上网络互联。RoCE 和以太网已成为互联解决方案的新兴趋势,为高性能计算提…

视频中为什么需要这么多的颜色空间?

在视频处理中,经常会用到不同色彩空间:非线性RGB,线性 RGB,YUV,XYZ……为什么需要这么多的色彩空间呢? 1、视频采集时的线性RGB颜色空间 由数码相机中的 CMOS 传感器产生并写入原始文件(Raw Fil…

艾瑞泽5汽车电子控制单元CAN通信数据读写车辆网络系统交互接口

艾瑞泽5的网关接口数据交换通常涉及车辆内部电子设备之间的信息传输,包括车身系统、娱乐系统、远程控制、车辆状态监控、CAN数据采集分析、整车DBC控制策略等信息。 艾瑞泽5作为一款采用CAN协议的汽车,其CAN通信的开发可以提高车辆的安全性、可靠性和实…

怎么设置 idea terminal 窗口的编码格式

1 修改Terminal 窗口为 Git bash 窗口 打开 settings 设置界面,选择 Tools 中的 Terminal (File -> settings -> Tools -> Terminal) 修改 Shell path 为你的 Git bash 安装路径,我的在 C:\my_software\java\Git\bin\bash.exe 2 解决中文显示…

抢单业务介绍

存在的问题 会出现多个人同时访问的问题 解决办法:在判断前加锁,使用户在抢单前先访问锁然后在执行之后的操作 常见的锁 1.基于数据库 2.基础缓存(Redis等) 3.基于Zookeeper

windows 本地部署 ChatGLM2-6b 教程

介绍 ChatGLM2-6B是智谱AI及清华KEG实验室发布的中英双语对话模型,它是 ChatGLM-6B 的第二代版本。 主要特点: 性能提升:ChatGLM2-6B 在初代模型的基础上进行了全面升级,使用了 GLM 的混合目标函数,并经过了 1.4T 中…

小白学习SpringCloud之Eureka

前言 需要搭建springcloud项目,eureka是其中的一个模块,依赖主要继承父依赖 学习视频:b站狂神说 便于理解,我修改了本地域名》这里!!! 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.comEureka入门案例 eureka…

API提取IP

API代理作为IP代理的一项重要业务,在绕开地域网络限制,提高作业效率等方面提供强大的技术支持。它能够帮助用户快速实现软件与软件间的交流,无障碍连通不同应用程序逻辑开发的系统应用。API代理用途范围广泛,如使用API提取代理IP、…

02-JVM学习记录-运行时数据区

二、运行时数据区 每个JVM只有一个Runtime实例,只有一个运行时数据区。 虚拟机栈、堆、方法区最重要 方法区和堆与虚拟机的生命周期相同(随虚拟机启动而创建,虚拟机退出而销毁),程序计数器、虚拟机栈、本地方法栈生命…

区块链技术与应用学习笔记(12-13节)——北大肖臻课程

目录 12.BTC-匿名性 一、什么是匿名? 1,有可能破坏比特币匿名性的两个方面 2,如何提高匿名性 一个比特币用户能采用什么样的方法尽量提高个人的匿名性? 分解: 1、网络层怎么提高匿名性? 2、应用层怎么提高匿名性? 零知…

2024年vue 开发环境 Node.js于win10环境下的安装

2024年vue 开发环境 Node.js于win10环境下的安装 导航 文章目录 2024年vue 开发环境 Node.js于win10环境下的安装导航一、下载node.js二、安装node.js三、测试(一)四、环境配置五、测试(二)六、安装淘宝镜像七、安装vue脚手架 一、下载node.js Node.js 官方网站下载&#xff…

cgroup 资源控制介绍

目录 一 cgroup 介绍 1,cgroup 是什么 2,cgroups有四大功能 二 cgroups对 CPU 的控制 1,cpu 的工作原理 2,设置CPU使用率上限 2.1 cgroups对 CPU 的控制 原理 2.2 --cpu-period 2.3 --cpu-quota 2.4 设置…

Linux(Centos)服务器探索ffmpeg笔记 (命令行、Nvidia硬件加速、GPU、CPU、CUDA、h264_nvenc、过滤器、加水印)

目录 前言内容简介为什么会有这篇文章 1、服务器上怎么使用ffmpeg1.1 使用编译好的(需要root权限)1.2 自己怎么编译(需要root权限) 2 、非Root用户要怎么安装和使用3、ffmpeg命令的一些使用引导和参数介绍3.1 编译参数3.2 查询支持…

uniapp H5实现签名

第一种&#xff1a;跳转签名页面 1、创建审核页面audit.vue <template><view><uni-section title""><view class"auditClass"><uni-forms :model"baseFormData" ref"baseFormRef" :rules"rules&quo…

【Flink入门修炼】2-3 Flink Checkpoint 原理机制

如果让你来做一个有状态流式应用的故障恢复&#xff0c;你会如何来做呢&#xff1f; 单机和多机会遇到什么不同的问题&#xff1f; Flink Checkpoint 是做什么用的&#xff1f;原理是什么&#xff1f; 一、什么是 Checkpoint&#xff1f; Checkpoint 是对当前运行状态的完整记…

elementui el-date-picker禁止选择今年、今天、之前、时间范围限制18个月

1、禁止选择今年之前的所有年份 <el-date-pickerv-if"tabsActive 0":clearable"false"v-model"yearValue"change"yearTimeChange"type"year"placeholder"选择年"value-format"yyyy":picker-options…

03 OLED显示屏实现

文章目录 前言一、软件模拟IIC协议1.开启IIC协议2.结束IIC协议3.传输数据 二、OLED的操作1.传输数据的准备2.写入命令3.写入数据4.初始化函数5.设置光标6.显示字符7.显示字符串8.清屏9.显示汉字10.显示图片11.显示动图 三、完整代码总结 前言 这一章主要是上一节没有讲完的项目…

前端项目中使用插件prettier/jscodeshift/json-stringify-pretty-compact格式化代码或json数据

同学们可以私信我加入学习群&#xff01; 正文开始 前言一、json代码格式化-选型二、json-stringify-pretty-compact简单试用三、prettier在前端使用四、查看prettier支持的语言和插件五、使用prettier格式化vue代码最终效果如图&#xff1a; ![在这里插入图片描述](https://im…

LLM应用实战:当KBQA集成LLM(二)

1. 背景 又两周过去了&#xff0c;本qiang~依然奋斗在上周提到的项目KBQA集成LLM&#xff0c;感兴趣的可通过传送门查阅先前的文章《LLM应用实战&#xff1a;当KBQA集成LLM》。 本次又有什么更新呢&#xff1f;主要是针对上次提到的缺点进行优化改进。主要包含如下方面&#…