【python】OpenCV—Background Estimation(15)

2024-06-12 07:44

本文主要是介绍【python】OpenCV—Background Estimation(15),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

文章目录

  • 中值滤波
  • 中值滤波得到图像背景
  • 移动侦测

学习来自 OpenCV基础(14)OpenCV在视频中的简单背景估计

中值滤波

中值滤波是一种非线性平滑技术,主要用于数字信号处理,特别是在图像处理中去除噪声。

一、定义与原理

定义:中值滤波是将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。

原理:基于排序统计理论,通过把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点。

二、实现方法

在这里插入图片描述

选择一个窗口:通常选择一个(2n+1) x (2n+1)的窗口(如3x3或5x5),使窗口沿图像数据的行方向和列方向从左至右、从上至下滑动。

像素排序:对于窗口内的每个像素,按照其灰度值进行排序。

选择中值:从排序后的像素值中选择中间值作为输出灰度值。

三、特性与优点

抑制噪声:对脉冲噪声和椒盐噪声有良好的滤除作用。

保护边缘:在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。

简单高效:算法比较简单,也易于用硬件实现。

四、适用场景

适用于去除椒盐噪声等孤立噪声。

在图像处理中,常用于保护边缘信息,是经典的平滑噪声的方法。

五、缺点

对于一些点、线、尖顶的细节多的数字图像,以及纹理特征明显、空间信息量丰富、分辨率高的遥感图像的处理效果较差,易造成图像细节模糊、纹理信息丢失等。

六、快速算法

中值滤波的快速算法一般采用以下三种方式:

直方图数据修正法

样本值二进制表示逻辑判断法

数字和模拟的选择网络法

七、总结

中值滤波是一种有效的非线性信号处理技术,特别适用于消除椒盐噪声等孤立噪声,并保护图像边缘。尽管在某些复杂图像中可能存在局限性,但其简单的算法和高效的性能使其在数字信号处理领域得到广泛应用。

中值滤波得到图像背景

原始视频

在这里插入图片描述

我们随机取出 25 帧,用中值滤波计算出其中值,滤掉移动的汽车(异常点),得到背景

import numpy as np
import cv2# 打开视频
cap = cv2.VideoCapture('./video.mp4')# 随机选择25帧
frameIds = cap.get(cv2.CAP_PROP_FRAME_COUNT) * np.random.uniform(size=25)# 将选定的帧存储在数组中
frames = []
for fid in frameIds:cap.set(cv2.CAP_PROP_POS_FRAMES, fid)ret, frame = cap.read()frames.append(frame)# 计算沿时间轴的中值
medianFrame = np.median(frames, axis=0).astype(dtype=np.uint8)# 显示中值帧
cv2.imshow('frame', medianFrame)
cv2.waitKey(0)

看看效果

在这里插入图片描述
还是非常的 nice,过滤的很干净

移动侦测

前景减去背景,就可以得到移动的目标

import numpy as np
import cv2# 读取视频
cap = cv2.VideoCapture('./video.mp4')# 随之选择25帧
frameIds = cap.get(cv2.CAP_PROP_FRAME_COUNT) * np.random.uniform(size=25)# 将选定的帧存储在数组中
frames = []
for fid in frameIds:cap.set(cv2.CAP_PROP_POS_FRAMES, fid)ret, frame = cap.read()frames.append(frame)# 计算沿时间轴的中值
medianFrame = np.median(frames, axis=0).astype(dtype=np.uint8)# 显示中值帧
cv2.imshow('frame', medianFrame)
cv2.waitKey(0)# 重置帧号为0
cap.set(cv2.CAP_PROP_POS_FRAMES, 0)# 转换背景到灰度
grayMedianFrame = cv2.cvtColor(medianFrame, cv2.COLOR_BGR2GRAY)# 循环所有帧
ret = True
# index = 0while ret:# 读取帧ret, frame = cap.read()# 将当前帧转换为灰度frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 计算当前帧和中间帧的绝对差值dframe = cv2.absdiff(frame, grayMedianFrame)# 二值化th, dframe = cv2.threshold(dframe, 30, 255, cv2.THRESH_BINARY)# 显示cv2.imshow('frame', dframe)# cv2.imwrite(f"./images1/{index}.jpg", dframe)# index+=1cv2.waitKey(20)# 释放视频对象
cap.release()# 关闭所有窗口
cv2.destroyAllWindows()

输入视频
在这里插入图片描述
输出移动前景
请添加图片描述

这篇关于【python】OpenCV—Background Estimation(15)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Python实现一键PDF转Word(附完整代码及详细步骤)

《Python实现一键PDF转Word(附完整代码及详细步骤)》pdf2docx是一个基于Python的第三方库,专门用于将PDF文件转换为可编辑的Word文档,下面我们就来看看如何通过pdf2doc... 目录引言:为什么需要PDF转Word一、pdf2docx介绍1. pdf2docx 是什么2. by

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点