当前位置: 首页 > news >正文

不同卷积不同的滤波效果

1. 代码

import numpy as np
import matplotlib.pyplot as plt# 设置中文字体支持
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans', 'Arial']
plt.rcParams['axes.unicode_minus'] = False# 原始数据
original_data = np.array([20, 22, 24, 25, 28, 27, 26])# 定义四种不同的卷积核
kernels = {"均值平滑": np.array([0.33, 0.33, 0.34]),  # 近似平均"高斯平滑": np.array([0.25, 0.5, 0.25]),   # 高斯权重"边缘检测": np.array([-1, 0, 1]),          # 检测变化"自定义加权": np.array([0.5, 0.8, 0.5])    # 您提供的卷积核
}# 应用不同卷积核并计算结果
results = {}
padded_data_list = {}  # 存储填充后的数据for name, kernel in kernels.items():# 手动实现填充(两端各填充一个0)padded_data = np.pad(original_data, (1, 1), mode='constant', constant_values=0)padded_data_list[name] = padded_data# 使用'valid'模式计算卷积result = np.convolve(padded_data, kernel, mode='valid')results[name] = result# 打印填充后的数据
print("原始数据:", original_data)
print("\n填充后的数据:")
for name, padded_data in padded_data_list.items():print(f"{name}核填充后: {padded_data}")# 打印卷积结果
print("\n不同卷积核处理结果:")
for name, result in results.items():print(f"{name}: {np.round(result, 2)}")# 创建图表
plt.figure(figsize=(14, 10))# 绘制原始数据
plt.subplot(3, 2, 1)
plt.plot(original_data, 'o-', linewidth=2, markersize=8)
plt.title("原始数据")
plt.grid(True)# 绘制各卷积核处理结果
for i, (name, result) in enumerate(results.items(), 2):plt.subplot(3, 2, i)plt.plot(result, 's-', linewidth=2, markersize=8)plt.title(f"{name}核处理结果")plt.grid(True)# 添加所有结果的对比图
plt.subplot(3, 2, 6)
plt.plot(original_data, 'o-', linewidth=2, markersize=8, label='原始数据')
for name, result in results.items():plt.plot(result, 's-', linewidth=2, markersize=6, label=f'{name}结果')
plt.title("所有处理结果对比")
plt.legend()
plt.grid(True)plt.tight_layout()
plt.show()

2. 效果

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

http://www.dtcms.com/a/356183.html

相关文章:

  • 如何将OFD文件转换为PDF?总结在线OFD转PDF方法
  • QT5.14.2、CMake 扩展openCV
  • GPT-5原理
  • 第二章 Vue + Three.js 实现鼠标拖拽旋转 3D 立方体交互实践
  • Python- Visual Studio Code配置Anaconda
  • WebIDEPLOY 赋能数字校园建设:智慧管理系统的效能升级与实践路径 —— 以校园资源协同优化构建高效教育生态的探索
  • 洞悉核心,驭数而行:深入理解 Oracle SQL 优化器(RBO 与 CBO)的性能调优哲学
  • C# 一个投资跟踪程序的设计与实现:面向对象与设计模式的深度解析
  • ros、slam、激光雷达、自动驾驶相关学习内容和计划
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day15
  • PyTorch 机器学习基础(选择合适优化器)
  • 【Big Data】Alluxio 首个基于云的数据分析和开源AI数据编排技术
  • 补题报告08
  • 从零开始的云计算生活——第五十四天,悬梁刺股,kubernetes模块之组件与网络
  • 计算机是如何运行的
  • Kotlin 和 Java 的区别
  • 【Linux系统】线程控制
  • 《C++进阶之STL》【AVL树】
  • PlotJuggler如何安装和使用
  • JavaSE丨集合框架入门(二):从 0 掌握 Set 集合
  • DeepSeek大模型风靡云平台,百度智能云、阿里云、腾讯云等多个平台宣布上线DeepSeek模型
  • HGDB全文检索/中文分词的使用
  • 美食推荐|美食推荐小程序|基于微信小程序的美食推荐系统设计与实现(源码+数据库+文档)
  • 【项目思维】通过编写一个贪吃蛇小程序,并移植到嵌入式设备上,解析编程思维的本质
  • mysql中的通用语法及分类
  • Ubuntu下配置并远程连接MySQL
  • 平安养老险深分开展“金融护航,安居鹏城”新市民金融服务宣传活动
  • Unity+URP+WebGL抗锯齿设置
  • MTK Linux DRM分析(二十二)- MTK mtk_drm_crtc.c(Part1)
  • PDF,HTML,md格式文件在线查看工具