Python图像表征空间频率域处理和模式分析

🎯要点

  1. Python空间滤波器:🎯卷积计算实现均值滤波器。🎯非线性中值滤波器。🎯最大值/最小值滤波器。🎯一阶导数滤波器:索贝尔(sobel)滤波器、普鲁伊特(Prewitt)滤波器、坎尼(Canny)滤波器。🎯二阶导数滤波器:拉普拉斯滤波器、高斯拉普拉斯滤波器。🎯弗朗吉(frangi)滤波器。
  2. Python图像增强方法:🎯图像线性逆变换。🎯伽玛校正。🎯对数变换。🎯直方图均衡化。🎯对比度拉伸。🎯sigmoid 校正。🎯局部对比度标准化。
  3. 仿射几何变换代码实现:🎯Python平移、旋转、缩放和插值。
  4. 代码实现傅里叶变换函数:🎯快速傅里叶变换。🎯Python实现低通滤波器二维卷积函数。🎯Python实现巴特沃斯低通滤波器卷积函数。🎯Python实现高斯低通滤波器卷积函数。🎯Python实现二维高通滤波器卷积函数。🎯Python实现巴特沃斯高通滤波器卷积函数。🎯Python实现高斯高通卷积函数。🎯Python实现带通滤波器。
  5. Python图像分割算法:🎯Python大津方法、Renyi基于熵的分割、自适应阈值方法、分水岭分割、Chan-Vese区域分割。
  6. 形态学运算Python实现:🎯二元膨胀、二元腐蚀、灰度膨胀和腐蚀、灰度开运算和闭运算、命中或错过变换、粗化和细化变换。
  7. 图像测量、神经网络、卷积神经网络。

🍇Python 去除椒盐噪声图像增强

图像增强是图像处理领域的一个基本过程,旨在提高图像的感知质量或使图像中的特定特征更加明显。 与图像恢复不同,图像恢复试图通过纠正已知的退化来将图像恢复到其原始形式,图像增强不依赖于对退化过程的详细理解。 相反,它应用更通用的技术来实现视觉上令人愉悦的结果。

技术包括:

  • 去噪/平滑
  • 对比度改善
  • 锐化

图像增强技术的类型:

  • 空间域增强
  • 频域增强
  • 直方图技术
  • 基于 Retinex 理论的增强
  • 色彩校正和增强
  • 边缘增强
  • 基于深度学习的增强

通过去除噪声来提高图像质量是图像处理中的关键步骤,特别是因为噪声会显着降低图像的视觉清晰度。 在图像捕获、传输或存储过程中可能会引入噪声,表现为图像强度的随机变化。 本节应用滤波器来减轻各种类型的噪声(例如高斯噪声、椒盐噪声、散斑噪声、泊松噪声和指数噪声),更深入地研究图像去噪的先进技术。

import numpy as np
import matplotlib.pyplot as plt
from skimage.io import imread
from skimage.color import rgb2gray
from skimage.util import random_noise
from skimage.metrics import peak_signal_noise_ratio as compare_psnr
from scipy.ndimage import uniform_filter, median_filter
def plt_hist(noise, title='Noise Histogram', bins=None):plt.grid()plt.hist(noise.ravel(), bins=bins, alpha=0.5, color='green')plt.tick_params(labelsize=15)plt.title(title, size=25)def plt_images(original_img, noisy_img, denoised_mean_img, denoised_median_img, noise, noise_type):fig, axes = plt.subplots(1, 4, figsize=(20, 5))ax = axes.ravel()ax[0].imshow(original_img, cmap='gray')ax[0].set_title('Original', size=20)ax[0].axis('off')ax[1].imshow(noisy_img, cmap='gray')ax[1].set_title(f'Noisy ({noise_type})', size=20)ax[1].axis('off')ax[2].imshow(denoised_mean_img, cmap='gray')ax[2].set_title('Denoised (Mean)', size=20)ax[2].axis('off')ax[3].imshow(denoised_median_img, cmap='gray')ax[3].set_title('Denoised (Median)', size=20)ax[3].axis('off')plt.figure()plt_hist(noise, title=f'{noise_type} Noise Histogram')plt.show()print(f"PSNR (Original vs Noisy): {compare_psnr(original_img, noisy_img):.3f}")print(f"PSNR (Original vs Denoised Mean): {compare_psnr(original_img, denoised_mean_img):.3f}")print(f"PSNR (Original vs Denoised Median): {compare_psnr(original_img, denoised_median_img):.3f}")Loading the image and converting to Gray scale
image_path = 'lena.png'  
original_img = rgb2gray(imread(image_path))

添加噪音用于演示目的

对于每种类型的噪声,我们将其引入原始图像,应用均值滤波器和中值滤波器,然后分析结果。 均值滤波器通过对邻域内的像素值进行平均来平滑图像,而中值滤波器则用其邻域内的强度值的中值替换每个像素的值,这对于对抗椒盐噪声特别有效。

noisy_img = random_noise(original_img, mode='gaussian', var=0.02)

去噪

denoised_mean_img = uniform_filter(noisy_img, size=5)
denoised_median_img = median_filter(noisy_img, size=5)
plt_images(original_img, noisy_img, denoised_mean_img, denoised_median_img, noisy_img-original_img, 'Gaussian')

添加盐和胡椒噪音

noisy_img = random_noise(original_img, mode='s&p', amount=0.05)

盐和胡椒去噪

denoised_mean_img = uniform_filter(noisy_img, size=5)
denoised_median_img = median_filter(noisy_img, size=5)
plt_images(original_img, noisy_img, denoised_mean_img, denoised_median_img, noisy_img-original_img, 'Salt & Pepper')
参阅:亚图跨际

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

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

相关文章

将图像转换为ASCII艺术形式

将图像转换为ASCII艺术形式 在本文中,我们将介绍一个使用OpenCV库将图像转换为ASCII艺术形式的简单程序。ASCII艺术是一种使用字符来表现图像的艺术形式,通过在终端或文本文件中显示字符的不同密度和颜色来模拟图像。这种技术已经存在了几十年&#xff…

【MySQL】7.MHA高可用配置及故障切换

什么是MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件 mha用于解决mysql的单点故障问题; 出现故障时,mha能在0~30秒内自动完成故障切换; 并且能在故障切换过程中&#xff0…

史上最强 PyTorch 2.2 GPU 版最新安装教程

一 深度学习主机 1.1 配置 先附上电脑配置图,如下: 利用公司的办公电脑对配置进行升级改造完成。除了显卡和电源,其他硬件都是公司电脑原装。 1.2 显卡 有钱直接上 RTX4090,也不能复用公司的电脑,其他配置跟不上。…

ARM FVP平台的terminal窗口大小如何设置

当启动ARM FVP平台时,terminal窗口太小怎么办?看起来非常累眼睛,本博客来解决这个问题。 首先看下ARM FVP平台对Host主机的需求: 通过上图可知,UART默认使用的是xterm。因此,我们需要修改xterm的默认字体设…

C++语言学习(一)——关键字、命名空间、输入输出

1. C关键字 C总计63个关键字,C语言32个关键字 2. 命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本…

vue3从精通到入门9:计算属性computed

在 Vue 3 中,computed 是一个用于创建计算属性的工具,它基于组件的响应式依赖进行复杂的计算,并返回一个新的响应式引用。计算属性是 Vue 的一个核心概念,它提供了一种声明式的方式来执行基于其依赖的响应式数据的计算。 compute…

详细总结前中后序、层次遍历二叉树(非递归方法)

二叉树 结构 //二叉树节点结构 class Node<V>{V value;Node left;Node right;}之前一直学的是用递归方法进行前中后序三种遍历方法&#xff0c;没想到用非递归方法也还是挺舒服的&#xff0c;对了解树结构的应用也很有帮助 &#xff08;主要用到的思路就是借助栈或者队列…

yolov5关键点检测-实现溺水检测与警报提示(代码+原理)

基于YOLOv5的关键点检测应用于溺水检测与警报提示是一种结合深度学习与计算机视觉技术的安全监控解决方案。该项目通常会利用YOLOv5强大的实时目标检测能力&#xff0c;并通过扩展或修改网络结构以支持人体关键点检测&#xff0c;来识别游泳池或其他水域中人们的行为姿态。 项…

【机器学习】《机器学习算法竞赛实战》思考练习(更新中……)

文章目录 第2章 问题建模&#xff08;一&#xff09;对于多分类问题&#xff0c;可否将其看作回归问题进行处理&#xff0c;对类别标签又有什么要求&#xff1f;&#xff08;二&#xff09;目前给出的都是已有的评价指标&#xff0c;那么这些评价指标&#xff08;分类指标和回归…

Java入门学习Day04

本篇文章主要介绍了&#xff1a;如何输入数据、字符串拼接、自增自减运算符、类型转换&#xff08;int&#xff0c;double等&#xff09; CSDN&#xff1a;码银 公众号&#xff1a;码银学编程 一、键盘输入练习 Scanner是Java中的一个类&#xff0c;用于从控制台或文件中读…

DOTS:Burst

目录 一&#xff1a;简介 1.1 Getting started 1.2 C# language support 1.2.1 HPC# overview 1.2.1.1 Exception expressions 1.2.1.2 Foreach and While 1.2.1.3 Unsupported C# features in HPC# 1.2.2 Static read-only fields and static constructor support 1.…

STM32-03基于HAL库(CubeMX+MDK+Proteus)输入检测案例(按键控制LED)

文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式&#xff0c;生成代码四、MDK打开生成项目&#xff0c;编写HAL库的按键检测代码五、运行仿真程序&#xff0c;调试代码 一、功能需求分析 搭建完成开发STM32开发环境之后&#xff0c;开始GPIO…

LC 110.平衡二叉树

110. 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a; root [3,9,20,null,null,15,7]…

【python】python 测试,为什么我们需要测试,pytest的使用

为什么需要测试 &#x1f525;测试&#xff0c;软件开发的秘密武器&#x1f525; ✨大家好&#xff0c;今天就来跟大家聊聊软件开发中的一项超级重要的环节——测试&#xff01;&#x1f440; &#x1f3af;测试&#xff0c;是软件开发的灵魂&#xff0c;是确保代码正确运行…

MySQL中innodb_status_output_locks含义和用法

innodb_status_output_locks 是一个MySQL系统变量&#xff0c;它决定了是否在 SHOW ENGINE INNODB STATUS 输出中包含详细的锁定信息。其主要用途是帮助分析和诊断InnoDB存储引擎中的锁定问题&#xff0c;比如事务死锁或长时间持有的锁导致的性能问题。 当innodb_status_outpu…

补充知识

补充知识1 内存的本质是对数据的临时存储 内存与磁盘进行交互时&#xff0c; 最小单位是4kb叫做页框(内存)和页帧(磁盘) 也就是&#xff0c; 如果我们要将磁盘的内容加载到内存中&#xff0c; 可是文件大小只有1kb&#xff0c; 我们也要拿出4kb来存他&#xff0c; 多余的就直…

基于Leaflet.js和Turf.js的等值线区间自定义及颜色自适应实践

目录 前言 一、Turf.js等值线相关制作 1、生成方法 2、主要参数 二、实际案例开发 1、新建展示页面 2、等值线生成 3、基于Leaflet的再优化 总结 前言 在气象方面的GIS应用当中&#xff0c;会根据实际的工作需要建立不同的监测站点。气象监测站的主要功能包括&#xff1…

pnpm--安装与使用

原文网址&#xff1a;pnpm--安装与使用-CSDN博客 简介 本文介绍pnpm的安装与使用。 pnpm由npm/yarn衍生而来&#xff0c;解决了npm/yarn内部潜在的bug&#xff0c;极大的优化了性能&#xff0c;扩展了使用场景&#xff0c;被誉为“最先进的包管理工具”&#xff0c;速度快、…

HTTP/2 牛逼在哪?(计算机网络)

兼容HTTP/ 1.1 第一点&#xff0c;HTTP/2 出来的目的是为了改善 HTTP 的性能。协议升级有一个很重要的地方&#xff0c;就是要兼容老版本的协议&#xff0c;否则新协议推广起来就相当困难&#xff0c; HTTP/2 做到了兼容 HTTP/1.1。 1.HTTP/2 没有在 URI 里引入新的协议名&…

变量重名情况

变量重名 变量的使用规则&#xff1a;就近原则 第一种情况&#xff1a;局部变量和成员变量重名&#xff0c;使用this关键字访问成员变量 第二种情况&#xff1a;子类成员变量和父类成员变量重名&#xff0c;使用super关键字访问父类成员变量 // 父类 public class Fu {int …