尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CNN--不同的filter对图片进行卷积

CNN--不同的filter对图片进行卷积
📅 发布时间:2026/6/19 19:03:35
import os
import numpy as np
from PIL import Image, ImageDraw
import matplotlib.pyplot as plt# ============== 1) 使用你的图片 ==============
CUSTOM_PATH = "apple.png"def load_or_make_image():if CUSTOM_PATH and os.path.exists(CUSTOM_PATH):img = Image.open(CUSTOM_PATH).convert("L")title = f"Original ({os.path.basename(CUSTOM_PATH)})"else:# 备用: 生成一张灰度示例图H, W = 128, 128img = Image.new("L", (W, H), color=220)draw = ImageDraw.Draw(img)draw.rectangle([20, 20, 100, 60], fill=40)draw.ellipse([60, 70, 110, 120], fill=255)draw.line([0, 0, 127, 127], fill=90, width=3)title = "Original (synthetic)"return img, titleimg, orig_title = load_or_make_image()
img_np = np.array(img, dtype=np.float32)# ============== 2) 多个 3×3 卷积核 ==============
kernels = {"Sobel X": np.array([[1, 0, -1],[1, 0, -1],[1, 0, -1]], dtype=np.float32),"Sobel Y": np.array([[ 1,  1,  1],[ 0,  0,  0],[-1, -1, -1]], dtype=np.float32),"Laplacian": np.array([[0, -1,  0],[-1, 4, -1],[0, -1,  0]], dtype=np.float32),"Sharpen": np.array([[0, -1,  0],[-1, 5, -1],[0, -1,  0]], dtype=np.float32),"Box Blur": (1/9.0) * np.ones((3,3), dtype=np.float32),"Emboss": np.array([[-2, -1, 0],[-1,  1, 1],[ 0,  1, 2]], dtype=np.float32),"Outline": np.array([[-1, -1, -1],[-1,  8, -1],[-1, -1, -1]], dtype=np.float32),
}# ============== 3) 卷积函数 ==============
def conv2d_same(image: np.ndarray, kernel: np.ndarray) -> np.ndarray:kh, kw = kernel.shapepad_h, pad_w = kh//2, kw//2padded = np.pad(image, ((pad_h, pad_h), (pad_w, pad_w)), mode='constant')out = np.zeros_like(image, dtype=np.float32)for i in range(out.shape[0]):for j in range(out.shape[1]):region = padded[i:i+kh, j:j+kw]out[i, j] = float(np.sum(region * kernel))return outdef to_uint8_for_display(arr: np.ndarray) -> np.ndarray:a_min, a_max = float(arr.min()), float(arr.max())if a_max - a_min < 1e-6:return np.zeros_like(arr, dtype=np.uint8)norm = (arr - a_min) / (a_max - a_min) * 255.0return norm.astype(np.uint8)# ============== 4) 卷积 + 展示 ==============
results = {"Original": img_np}
for name, k in kernels.items():conv = conv2d_same(img_np, k)results[name] = to_uint8_for_display(conv)# 展示:所有图像在一行或两行
n = len(results)
cols = 4  # 每行展示 4 张图,可以改成 3 或 5
rows = int(np.ceil(n / cols))plt.figure(figsize=(4*cols, 4*rows))
for idx, (name, arr) in enumerate(results.items(), 1):plt.subplot(rows, cols, idx)plt.imshow(arr, cmap="gray")plt.title(name)plt.axis("off")plt.tight_layout()
plt.show()

苹果原图
image
不同的filter卷积之后展示的图片效果

image

相关新闻

  • 2025年10月北京口腔医院口碑榜:十家院区横向对比排行
  • 2025年冷风机厂家权威推荐榜:水冷环保空调/节能工业冷风机/车间降温设备源头厂家综合评测与选购指南
  • 10 22

最新新闻

  • 终极指南:用Parsec VDD免费扩展你的Windows虚拟显示器
  • 2026年新发布山东靠谱的罐罐酸奶加盟项目深度剖析:为何谷物全书罐罐酸奶成为市场焦点? - 品牌鉴赏官2026
  • 2026清远本地人必选防水补漏检测维修公司靠谱服务商TOP5推荐:房屋渗漏水检测维修/卫生间/厨房/天花板/阳台/外墙渗漏水检测补漏维修-暗管漏水检测专业仪器精准定位漏水点 - 即刻修防水
  • MPC5604P外部中断与DSPI时序参数深度解析与工程实践
  • DFT仿真实战:从STUCK-AT到AT-SPEED的验证要点解析
  • ReadCat安全最佳实践:终极插件安全与用户数据保护指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号