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

一个SciPy图像处理案例的全过程

本文利用SciPy进行图像处理,并记录图像处理的全过程,处理过程包含高斯模糊、腐蚀等操作。

代码

import matplotlib.pyplot as plt
import numpy as np
from scipy import ndimage# 设置图像的大小为 128x128,即 128x128 的逻辑像素
l = 128
# 生成的随机点的数量为 36。
n_pts = 36
# 记录图像处理过程中的图像
images_in_process = []def generate_synthetic_data():"""Synthetic binary data"""# 创建一个随机数生成器 rs,并设置种子为 0,以确保生成的随机数是可重复的。rs = np.random.RandomState(0)# 生成一个从 0 到 l 的二维网格坐标。x, y = np.ogrid[0:l, 0:l]images_in_process.append(x.copy())images_in_process.append(y.copy())# x和y计算时会产生广播机制,因此mask_outer的大小是(l,l)# 创建一个圆形掩码,定义在图像中心的圆形区域内的点为 True,其他点为 False。mask_outer = (x - l / 2.0) ** 2 + (y - l / 2.0) ** 2 < (l / 2.0) ** 2images_in_process.append(mask_outer.copy())# 初始化一个大小为 (l, l) 的全零矩阵,用于存储随机点。mask = np.zeros((l, l))# 生成 n_pts 个随机点,坐标范围在 [0, l) 之间。points = l * rs.rand(2, n_pts)# 将上一步生产的随机点在 mask 中对应的位置设置为 1。mask[(points[0]).astype(int), (points[1]).astype(int)] = 1images_in_process.append(mask.copy())# 对 mask 应用高斯模糊,使得随机点的边缘变得平滑。mask = ndimage.gaussian_filter(mask, sigma=l / n_pts)images_in_process.append(mask.copy())# 生成一个新的掩码 res,其中只有在 mask 大于其平均值且在 mask_outer 圆形区域内的点为 True。res = np.logical_and(mask > mask.mean(), mask_outer)images_in_process.append(res.copy())# 对 res 应用腐蚀操作,使白色前景区域变小。res_erosion = ndimage.binary_erosion(res)images_in_process.append(res.copy())# 异或操作会检测出白色前景区域边缘return np.logical_xor(res, res_erosion)data = generate_synthetic_data()
# 绘制图像
for i in range(len(images_in_process)):plt.figure(figsize=(10, 5))plt.imshow(images_in_process[i], cmap=plt.cm.gray, interpolation="nearest")plt.axis("off")plt.title("original image")plt.savefig(f"original_image_{i}.png")plt.figure(figsize=(10, 5))
plt.imshow(data, cmap=plt.cm.gray, interpolation="nearest")
plt.axis("off")
plt.title("original image")
plt.savefig(f"original_image_{len(images_in_process)}.png")

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

相关文章:

  • 小结:GRE VPN;IPSec
  • 【论文阅读/复现】RT-DETR的网络结构/训练/推理/验证/导出模型
  • 抱佛脚之学SSMSpringMVC数据绑定
  • JavaScript 作用域全面总结
  • Spring MVC 中解决中文乱码问题
  • 近期实践总结
  • 通信设备制造数字化转型中的创新模式与实践探索
  • 某高端制造企业知识中枢升级,基于悦数 Graph RAG 打造工业级「故障排查最强大脑」
  • 基于STM32、HAL库的DS28E25安全验证及加密芯片驱动程序设计
  • 有什么好用的工地全过程管理erp软件系统?如何推进数字化转型?
  • 去哪儿旅行 Bella Pre 分析
  • 53.[前端开发-JS实战框架应用]Day04-Bootstrap入门到项目实战
  • antd+react实现html图片预览效果
  • 面试手撕——快速排序
  • LLamaFactory如何在Windows系统下部署安装训练(保姆级教程)
  • 4.27比赛总结
  • 【滑动窗口】最大连续1的个数|将x减到0的最小操作数
  • OceanBase数据库-学习笔记5-用户
  • 大模型微调之LLaMA-Factory 系列教程大纲
  • ClickHouse副本集群
  • 开启征集!社会主义核心价值观公益广告征集展示活动启幕
  • 国家新闻出版署:5月份共130款国产网络游戏获批,14款进口网络游戏获批
  • 上海古镇“长效”发展需要提高社会资本参与
  • 演员辛柏青发讣告,妻子朱媛媛去世
  • 破局之路,阳光保险何以向“新”而行
  • 围绕加快科创中心建设,上海市委中心组学习会听取专题辅导报告