提高拍照稳定性,减少由于抖动带来的影响(角速度计算)

2024-03-21 11:20

本文主要是介绍提高拍照稳定性,减少由于抖动带来的影响(角速度计算),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本思路

大家应该都听过苏格拉底给学生讲的捡麦穗的故事,本文借鉴了这个想法:把前面一半路作为观察期,记住最好的那根稻穗,在接下来的路程中,若遇到比前面最好那根还要好的,则毫不犹豫的直接选择它。

计算步骤:

分为两步:
1.获取角速度的数据;
2.计算最稳定的时刻。


1.加速度数据的获取

手机下载app:phyphox,里面有测角速度的,并支持csv的表格导出,自己处理一下便可得到数据。
三列分别代表:x、y、z三个方向的数值,可以取一个波动大的来进行分析,这里取了x轴的
在这里插入图片描述

由于习惯,我是喜欢把数据写入txt,这里进行一下转换:

#encoding=utf-8
import csv
import os
# f1=open('D:/共享文件/acc/a1/data.txt','w+')def write_col(path):with open(path,'r') as csvfile:reader = csv.reader(csvfile)column = [row[0] for row in reader]return columnpath='D:/work/1.工作任务/8.防抖函数/a2/gyro/'
files = os.listdir(path)
n=0
for file in files:if file.endswith('csv'):n=n+1cols=write_col(path+file)for i in range(0,len(cols)):col=cols[i]print(col)f=open(path+str(n)+'.txt','a')f.write(col+'\n')f.close()

2.寻找最稳定的一刻
from __future__ import print_function
import math
import random
import numpy as np
import glob
import osdef avg(list1):average = float(sum(list1))/len(list1)return average#同时处理多个文件
f1=open('D:/work/1.工作任务/8.防抖函数/a2/data.txt','w+')
path='D:/work/1.工作任务/8.防抖函数/a2/gyro/'   #遍历的路径,找到txt文本
files = os.listdir(path)
for file in files:if file.endswith('txt'):print(file)n=0ff=open(path+file,'r')   #打开txtsourceInLine=ff.readlines()dataset=[]set2=[]for line in sourceInLine:n=n+1temp1=line.strip('\n')   #读行后去掉'\n'temp2=abs(float(temp1))dataset.append(temp2)    #按原来顺序放进datasetset2.append(temp2)       list_100=dataset[151:250]    #剩下的路程dataset=dataset[1:150]   #作为前面的一半路程dataset.sort()    #数组按升序排序dataset_len=len(dataset)m=max(dataset)print("最大值为:",m)h=int(dataset_len/2)print("中位数为:",dataset[h])f=int(dataset_len/4)print("四分位数为:",dataset[f])yuzhi=int(dataset_len/3)yuzhi=dataset[yuzhi]print("阈值为:",yuzhi)#计算倒数8位的数据的均值、方差a=set2[n-8:n]last_20_avg=avg(a)print("最后20位均值为:",last_20_avg)#从某刻起,开始计算与阈值的差list_100_dif=[]for i in range(99):dif=list_100[i]-yuzhilist_100_dif.append(dif)#上面得到的100个差值,每n个作为一组,若一组中最大值<0,则视为通过,计算均值,放到新列表n=0x=3   #选定连续多少个点,作为稳定点y=8   #计算稳定点后面y个点的均值front=[]f8=[]#计算前50个点的稳定点最小均值for i in range(0,47):list_f=list_100_dif[i:i+x]avg_f=avg(list_f)front.append(avg_f)list_f.sort()if list_f[x-1]<0:if list_100[i]<list_100[i-1]:list_f8=list_100[i+x:i+x+y]     #从i+x开始,往后推y个点avg_f8=avg(list_f8)f8.append(avg_f8)else:f8.append(avg_f)else:f8.append(avg_f)# min_f3=min(front)min_f8=min(f8)#在后50个点找稳定点for i in range(50,97):list_b=list_100_dif[i:i+x]    #1-,21-40,41-60,61-80,81-100avg_b=avg(list_b)list_b.sort()               #升序,如果数列中最后一个数<0,则代表数列所以都<0,即连续20个点都小于阈值if list_b[x-1]<0:if list_100[i]<list_100[i-1]:if avg_b<min_f8:list_b8=list_100[i+x:i+x+y]     #从i+x开始,往后推y个点avg_b8=avg(list_b8)n=n+1print("最优稳定点均值为:",avg_b8)compare = avg_b8 - last_20_avgprint("对比结果为:", compare)i=str(i)breakif n==0:print("没有找到稳定点,开拍吧!")avg_b8=last_20_avgcompare=0i=0line=file+","+str(m)+","+str(dataset[h])+","+str(dataset[f])+","+str(yuzhi)+","+str(last_20_avg)+","+str(avg_b8)+','+str(i)+","+str(compare)+"\n"f1.write(line)				

这篇关于提高拍照稳定性,减少由于抖动带来的影响(角速度计算)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/832522

相关文章

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

键盘快捷键:提高工作效率与电脑操作的利器

键盘快捷键:提高工作效率与电脑操作的利器 在数字化时代,键盘快捷键成为了提高工作效率和优化电脑操作的重要工具。无论是日常办公、图像编辑、编程开发,还是游戏娱乐,掌握键盘快捷键都能带来极大的便利。本文将详细介绍键盘快捷键的概念、重要性、以及在不同应用场景中的具体应用。 什么是键盘快捷键? 键盘快捷键,也称为热键或快捷键,是指通过按下键盘上的一组键来完成特定命令或操作的方式。这些快捷键通常涉及同