精华内容
下载资源
问答
  • 中值法提取视频图像的背景-zhongzhi.m 把avi文件分成帧后,将前100帧进行中值滤波,得到图像的背景
  • 中值法简介 在惯性导航以及VIO等实际问题中利用IMU求解位姿需要对IMU测量值进行积分得到需要的位置和姿态,其中主要就是求解微分方程。但之前求解微分方程的解析方法主要是应用于一些简单和特殊的微分方程求解中,...

    在惯性导航以及VIO等实际问题中利用IMU求解位姿需要对IMU测量值进行积分得到需要的位置和姿态,其中主要就是求解微分方程。但之前求解微分方程的解析方法主要是应用于一些简单和特殊的微分方程求解中,对于一般形式的微分方程,一般很难用解析方法求出精确解,只能用数值方法求解。该系列主要介绍一些常用的常微分方程的数值解法,主要包括:

    这个系列后面文章会用到前面文章的理论和技术,所以建议按照顺序查看。

    简介

    [常微分方程的数值解法系列二] 欧拉法[常微分方程的数值解法系列三] 改进欧拉法(预估校正法)介绍了欧拉法以及改进版欧拉法。中值法思路和改进版欧拉法思路很类似。
    向前(显式)欧拉公式
    x i + 1 = x i + Δ t ⋅ f ( t i , x i ) x_{i+1}=x_{i} + \Delta t \cdot f(t_{i}, x_{i}) xi+1=xi+Δtf(ti,xi)
    中点公式
    x i + 1 = x i + Δ t ⋅ f ( t i + 1 2 , x i + 1 2 ) x_{i+1}=x_{i} + \Delta t \cdot f(t_{i+\frac{1}{2}}, x_{i+\frac{1}{2}}) xi+1=xi+Δtf(ti+21,xi+21)

    具体步骤

    利用向前(显式)欧拉公式预估一个 x ( t i + 1 2 ) \mathbf{x}(t_{i+\frac{1}{2}}) x(ti+21)的近似值
    x i + 1 2 = x i + 1 2 Δ t ⋅ f ( t i , x i ) , (1) x_{i+\frac{1}{2}} = x_{i} + \frac{1}{2} \Delta t \cdot f(t_{i}, x_{i}), \tag{1} xi+21=xi+21Δtf(ti,xi),(1)
    利用中点公式求得最终的估计值
    x i + 1 = x i + Δ t ⋅ f ( t i + 1 2 , x i + 1 2 ) , (2) x_{i+1}=x_{i} + \Delta t \cdot f(t_{i+\frac{1}{2}}, x_{i+\frac{1}{2}}), \tag{2} xi+1=xi+Δtf(ti+21,xi+21),(2)
    公式 ( 1 ) (1) (1)和公式 ( 2 ) (2) (2)就叫做中值法,也会叫做变形欧拉公式

    截断误差

    [常微分方程的数值解法系列一] 常微分方程文中公式 ( 3 ) (3) (3)可知常微分方程的数值解法的局部截断误差为
    e i = x i − x ( t i ) \boldsymbol{e}_i = x_i - \mathbf{x}(t_i) ei=xix(ti)
    所以对于改进欧拉法来说局部截断误差为:
    e i + 1 = x i + Δ t ⋅ f ( t i + 1 2 , x i + 1 2 ) − x ( t i + 1 ) , (5) \boldsymbol{e}_{i+1} = x_{i} + \Delta t \cdot f(t_{i+\frac{1}{2}}, x_{i+\frac{1}{2}}) - \mathbf{x}(t_{i+1}), \tag{5} ei+1=xi+Δtf(ti+21,xi+21)x(ti+1),(5)
    对式子右边 f ( t i + 1 , x i + 1 ) f(t_{i+1},x_{i+1}) f(ti+1,xi+1) x ( t i + 1 ) \mathbf{x}(t_{i+1}) x(ti+1)分别作泰勒展开
    f ( t i + 1 2 , x i + 1 2 ) = f ( t i + 1 2 Δ t , x i + 1 2 Δ t ⋅ f ( t i , x i ) ) = f ( t i , x i ) + 1 2 Δ t f t ′ ( t i , x i ) + ( 1 2 Δ t ⋅ f ( t i , x i ) ) ⋅ f x ′ ( t i , x i ) + O ( Δ t 2 ) = x ′ ( t i ) + 1 2 Δ t x ′ ′ ( t i ) + O ( Δ t 2 ) x ( t i + 1 ) = x ( t i + Δ t ) = x ( t i ) + Δ t x ′ ( t i ) + Δ t 2 2 ! x ′ ′ ( t i ) + O ( Δ t 3 ) \begin{aligned} f(t_{i+\frac{1}{2}}, x_{i+\frac{1}{2}}) &= f(t_i + \frac{1}{2}\Delta t, x_{i} + \frac{1}{2} \Delta t \cdot f(t_{i}, x_{i})) \\ &= f(t_i,x_i) + \frac{1}{2}\Delta t f_t^{\prime}(t_i,x_i) + (\frac{1}{2}\Delta t \cdot f(t_{i}, x_{i}))\cdot f_x^{\prime}(t_i,x_i) + \mathbf{O}(\Delta t^2) \\ &=\mathbf{x}^{\prime}(t_i) + \frac{1}{2}\Delta t \mathbf{x}^{\prime\prime}(t_i) + \mathbf{O}(\Delta t^2) \\ \mathbf{x}(t_{i+1}) &= \mathbf{x}(t_i + \Delta t) = \mathbf{x}(t_{i})+\Delta t \mathbf{x}^{\prime}(t_{i}) + \frac{\Delta t^2}{2!} \mathbf{x}^{\prime\prime}(t_{i}) + \mathbf{O}(\Delta t^3) \end{aligned} f(ti+21,xi+21)x(ti+1)=f(ti+21Δt,xi+21Δtf(ti,xi))=f(ti,xi)+21Δtft(ti,xi)+(21Δtf(ti,xi))fx(ti,xi)+O(Δt2)=x(ti)+21Δtx(ti)+O(Δt2)=x(ti+Δt)=x(ti)+Δtx(ti)+2!Δt2x(ti)+O(Δt3)
    带入公式 ( 5 ) (5) (5)可得
    e i + 1 = x i + Δ t ⋅ f ( t i + 1 2 , x i + 1 2 ) − x ( t i + 1 ) = x i + Δ t ( x ′ ( t i ) + 1 2 Δ t x ′ ′ ( t i ) + O ( Δ t 3 ) ) − x ( t i ) + Δ t x ′ ( t i ) + Δ t 2 2 ! x ′ ′ ( t i ) + O ( Δ t 3 ) = O ( Δ t 3 ) \begin{aligned} \boldsymbol{e}_{i+1} &= x_{i} + \Delta t \cdot f(t_{i+\frac{1}{2}}, x_{i+\frac{1}{2}}) - \mathbf{x}(t_{i+1}) \\ & = x_{i} + \Delta t(\mathbf{x}^{\prime}(t_i) + \frac{1}{2}\Delta t \mathbf{x}^{\prime\prime}(t_i) + \mathbf{O}(\Delta t^3)) - \mathbf{x}(t_{i})+\Delta t \mathbf{x}^{\prime}(t_{i}) + \frac{\Delta t^2}{2!} \mathbf{x}^{\prime\prime}(t_{i}) + \mathbf{O}(\Delta t^3) \\ & = \mathbf{O}(\Delta t^3) \end{aligned} ei+1=xi+Δtf(ti+21,xi+21)x(ti+1)=xi+Δt(x(ti)+21Δtx(ti)+O(Δt3))x(ti)+Δtx(ti)+2!Δt2x(ti)+O(Δt3)=O(Δt3)
    根据[常微分方程的数值解法系列一] 常微分方程文中局部截断误差定义得
    变形欧拉公式具有二阶精度(二阶解法)

    上面求解会用到二元函数的泰勒展开,这里给出三阶二元函数的泰勒展开公式 f ( x + Δ x , y + Δ y ) = f ( x , y ) + Δ x f x ′ ( x , y ) + Δ y f y ′ ( x , y ) + 1 2 ! Δ x f x x ′ ′ ( x , y ) + 1 2 ! Δ x Δ y f x y ′ ′ ( x , y ) + 1 2 ! Δ x Δ y f y x ′ ′ ( x , y ) + 1 2 ! Δ y f y y ′ ′ ( x , y ) + o 3 \begin{aligned} f(x+\Delta x, y + \Delta y) = & f(x, y) +\Delta xf_x^{\prime}(x,y) + \Delta yf_y^{\prime}(x,y) \\ &+ \frac{1}{2!}\Delta xf_{xx}^{\prime \prime}(x,y) + \frac{1}{2!}\Delta x \Delta yf_{xy}^{\prime \prime}(x,y) + \frac{1}{2!}\Delta x \Delta yf_{yx}^{\prime \prime}(x,y) + \frac{1}{2!}\Delta yf_{yy}^{\prime \prime}(x,y) + o^3 \end{aligned} f(x+Δx,y+Δy)=f(x,y)+Δxfx(x,y)+Δyfy(x,y)+2!1Δxfxx(x,y)+2!1ΔxΔyfxy(x,y)+2!1ΔxΔyfyx(x,y)+2!1Δyfyy(x,y)+o3

    例子

    使用[常微分方程的数值解法系列三] 改进欧拉法(预估校正法)中的例子,后面绘图会放在一起对比。
    利用中值法求解初值问题
    { x ′ ( t ) = x − 2 t x , 0 ≤ t ≤ 1 x ( t 0 ) = 1 \begin{cases} \mathbf{x}^{\prime}(t)=x - \frac{2t}{x}, \quad 0 \leq t \leq 1 \\ \mathbf{x}({t_0}) = 1 \end{cases} {x(t)=xx2t,0t1x(t0)=1
    x ( t = 1 ) \mathbf{x}(t=1) x(t=1)的近似值,步长 Δ t = 0.1 \Delta t = 0.1 Δt=0.1

    这里原函数为 x ( t ) = 1 + 2 t \mathbf{x}(t) =\sqrt{1+2t} x(t)=1+2t ,用于后面验证结果

    解:
    { x i + 1 2 = x i + 0.1 2 ( x i − 2 t i x i ) = 1.05 x i − 0.1 t i x i x i + 1 = x i + 0.1 ( x i + 1 2 − 2 t i + 1 2 x i + 1 2 ) x 0 = 1 \begin{cases} x_{i+\frac{1}{2}} = x_{i} +\frac{0.1}{2}(x_i-\frac{2t_i}{x_i}) = 1.05x_i-\frac{0.1t_i}{x_i} \\ x_{i+1}=x_{i} +0.1(x_{i+\frac{1}{2}} - \frac{2t_{i+\frac{1}{2}}}{x_{i+\frac{1}{2}}}) \\ x_0 = 1 \end{cases} xi+21=xi+20.1(xixi2ti)=1.05xixi0.1tixi+1=xi+0.1(xi+21xi+212ti+21)x0=1
    计算得:

    i i i t i t_i ti向前 x i x_i xi改进 x i x_i xi中值 x i x_i xi x ( t i ) \mathbf{x}(t_i) x(ti)
    001110
    10.11.11.0959091.0954761.095445
    20.21.1918181.1840971.1832981.183216
    30.31.2771381.2662011.2650561.264911
    40.41.3582131.3433601.3418591.341641
    50.51.4351331.4164021.4145161.414214
    60.61.5089661.4859661.4836381.483240
    70.71.5803381.5525141.5497021.549193
    80.81.6497831.6164751.6130881.612452
    90.91.7177791.6781661.6741061.673320
    101.01.7847701.7378671.7330121.732051

    绘制如下图所示
    红色: x ( t i ) \mathbf{x}(t_i) x(ti)
    绿色:向前 x i x_i xi
    蓝色:改进 x i x_i xi
    金色:中值 x i x_i xi
    在本例中,中值法比改进欧拉法还要好一些,几乎和真值重叠!!!
    在这里插入图片描述

    展开全文
  • 快速排序(三数中值法

    千次阅读 2018-10-29 10:49:12
    快速排序:快速排序的...该算法的平均运行时间是O(NlogN),而最坏的情形时性能为O(N^2),由此可见该算法的性能取决于枢纽元的选取上,因此在此采用了三数中值法来对枢纽元进行选取,可以有效规避最坏的情形。 三...

     快速排序:快速排序的主要思想即是在待排序数组中找到一个枢纽元,作为参考将数组分为大于枢纽元与小于枢纽元两部分来处理,然后运用分治法的思想进行递归,在分出来的两部分中分别再取一个枢纽元进行参考作类似的处理。该算法的平均运行时间是O(NlogN),而最坏的情形时性能为O(N^2),由此可见该算法的性能取决于枢纽元的选取上,因此在此采用了三数中值法来对枢纽元进行选取,可以有效规避最坏的情形。

    三数中值法:所谓三数中值法即是取待排序数组的首位数,中位数与末尾数优先进行简单排序,然后将排序后的值分别按大小顺序插入到原数组首部,中部及尾部并取三数的中的中值作为枢纽元。

    该排序适用于对数据量较大的数据进行排序,而对于数据量较小的数据则表现一般。

    package sort;
    
    public class QuickSort {//快速排序
    	public static void main(String[] args)
    	{
    		int[] array = {39,44,1,0,8,66,23,67,9,15,100,70,22,3,6,54};	
    		QuickSort qs=new QuickSort();
    		qs.quickSort(array,0, array.length-1);
    		for(int i:array)
    		{
    			System.out.println(i);
    		}
    	}
    	public void swap(int a[],int i,int j)
    	{
    		int temp=a[i];
    		a[i]=a[j];
    		a[j]=temp;
    	}
    	public int median3(int []a,int left,int right)//三数中值分割法
    	{
    		if(right-left+1>=3){
    		int center=(left+right)/2;
    		if(a[center]<a[left])
    			swap(a,left,center);
    		if(a[center]>a[right])
    			swap(a,center,right);
    		if(a[center]<a[left])
    			swap(a,left,center);
    		swap(a,right-1,center);//选定中值并排序,将中值置于倒数第一位便于排序时插入
    		return a[right-1];
    		}
    		else//针对于少于三个数的处理情况
    			if(a[left]>a[right])
    			swap(a,left,right);
    		
    			return 0;
    	}
    	public void quickSort(int []a,int left,int right)
    	{
    			int pivot=median3(a,left,right);
    			if(right-left+1>3)//对于长度小于三的情况median函数足以处理
    			{
    				int i=left;
    				int j=right-1;
    				while(true){	
    					while(a[++i]<pivot){}//从第二位向后询值
    					while(a[--j]>pivot){}//从中值之前,即倒数第二位向前询值
    				if(i<j)
    					swap(a,i,j);
    				else
    					break;
    				}
    				swap(a,i,right-1);//当i>j时将其中一个大于中值的值与中值交换位置
    				quickSort(a, left, i-1);
    				quickSort(a, i+1, right);
    				
    			}
    		
    	}
    }
    

     

    展开全文
  • 在数字图像识别条形码过程中...分析了EAN-13条码采集并二值化后图像的噪音特点,结合EAN-13条码的构造,从理论上研究了模块中值法。这是一种利用条形码的构造特点,降低二值化后图像噪音,并易于后续条形码识别的整形方法。
  • 请教各位大神,请问用中值法和均值法进行背景建模时,必须要用无运动目标的视频帧进行背景重构吗,我直接从视频提取的前几帧图像(里边包含运动目标),然后出来的背景也是含有运动目标的。(用的vs与opencv)
  • 中值法查找数

    2021-06-14 19:32:32
    int Binafindval(const int* br, int n, int val) { assert(br != nullptr); int right = n - 1, left = 0; int pos = -1; while (left<... int mid = (right - left) / 2 + left;... else if (br[mid] &g
    int Binafindval(const int* br, int n, int val)
    {
    	assert(br != nullptr);
    	int right = n - 1, left = 0;
    	int pos = -1;
    	while (left<=right)
    	{
    		int mid = (right - left) / 2 + left;
    		if (br[mid] < val)
    		{
    			left = mid + 1;
    		}
    		else if (br[mid] > val)
    		{
    			right = mid - 1;
    		}
    		else
    		{
    			if (mid > left && br[mid - 1] == val)
    			{
    				pos = mid;
    				break;
    			}
    			right = mid - 1;
    		}
    	}
    	return pos;
    }
    
    
    int main()
    {
    	int ar[] = { 15,15,45,51,32,65,28 };
    	int n = sizeof(ar) / sizeof(ar[0]);
    	int val;
    	scanf_s("%d", &val);
    	int pos=Binafindval(ar, n, val);
    	printf("%d", pos);
    	return 0;
    }
    
    展开全文
  • 中值法快速排序

    2020-10-22 00:10:04
    public static void quickSort(int left,int right,int nums[]){ if(left>=right){ return; } int i=left,j=right-1; int key=del(left,right,nums); while(i<j){ ...=n..
    
    
    public static void quickSort(int left,int right,int nums[]){
    	       
        if(left>=right){
    	     return; 
    	}
    	       
    	int i=left,j=right-1;
    	int key=del(left,right,nums);
    	       
    	while(i<j){
    	           
    	     while(i<j&&nums[i]<=nums[key]){
    	          i++;
    	     }
    	     while(i<j&&nums[j]>=nums[key]){
    	          j--;
    	     }
    	           
    	     if(i<j){
    	          swap(i,j,nums); 
    	     }
    	       
    	}
    	       
    	if(i<right-1){
    	    swap(i,right-1,nums);
    	}
    	       
    	quickSort(left,i-1,nums);
    	quickSort(i+1,right,nums);
    
    }
    	    
    public static void swap(int i,int j,int nums[]){
    	 
    	 int temp = nums[i];
    	 nums[i]  = nums[j];
    	 nums[j]  = temp;
    	 
    }
    	    
    public static int del(int left,int right,int nums[]){
    	         
    	 int mid=(right+left)/2;
    	        
    	 if(nums[left]>nums[right]){
    	     swap(left,right,nums);    
    	 }
    	 if(nums[left]>nums[mid]){
    	     swap(left,mid,nums);  
    	 }
    	 if(nums[mid]>nums[right]){
    	     swap(mid,right,nums); 
    	 }
    	        
    	 swap(mid,right-1,nums);
    	        
    	 return right-1;
    }
    
    展开全文
  • 温度PID控制时, 有多个温度测量点, 但最终只有一个...像这种情况下中值法比较有效. 原理如下: 对于一组温度, 模拟量转换为数字量后, 对温度值进行排序, 取中间的那个值作为PID反馈值. 如果是偶数, 取中间两个值除以2...
  • 先上代码 import java.util.Arrays;...public class A008_快排的优化_1_三点中值法 { static int cnt = 0; public static void main(String[] args) { int len = 2000; int max = 1000000000; in...
  • 三数中值法快速排序

    2020-03-18 08:22:11
    int Median3(int lt, int rt) //三平均划分 { int Middle = (lt + rt) / 2; if (sz[lt] > sz[Middle]) swap(sz[lt], sz[Middle]); if (sz[lt] > sz[rt]) swap(sz[lt], sz[rt]); if (sz[Middle] > sz[rt]) swap(sz...
  • 利用野火开发板STM32F103VET6 +超声波HC-SR04 完成倒车雷达功能,距离越近蜂鸣器频率越高,距离值通过中值滤波算法,以及卡尔曼滤波算法,算法系数可调,也可用在ADC数据采集滤波上,或者其他原始数据采集上
  • 快速排序及其优化(三数中值法

    千次阅读 2019-06-02 17:46:13
    传统的快速排序实现如下: def quickSort(L,left,right): if left>=right: return base=L[left] r=right l=left while left<right: while left<right and L[right]>=base: ...
  • 就是当顺序为逆序时或者大量重复的数时T(N) = O(N^2),方法一是中值枢纽法,即将第一个,中间的,和最后一个取中值,并将他们放在合适的位置,然后递归,这里有一点与普通法不同,i=left,j=right -1(中值法);...
  • 输入一幅灰度图像,分别采用邻域平均、均值滤波中值滤波对图像进行平滑去噪,在同一个窗口输出显示原始图像和3种结果图像。
  • 中值滤波.smart

    2020-05-22 17:19:26
    在上升阶段去掉了两个最大值和一个最小值,在下降阶段去掉了两个最小值和一个最大值。在最大值和最小值之间则直接刷新数据区,实现去掉一个最大值和去掉一个最小值后取平均(此时的计算数据个数为表长-2)。...
  • 浅层反射地震资料中面波一般比较发育,对有效信号形成干扰,现有压制面波等相干干扰的处理手段主要适用于中深部、深部地震勘探,但并不适用于浅层反射地震资料的处理,为此提出了倾角中值滤波。该方法是基于叠前地震...
  • 通过vc6.0实现了图片打开,读取中值滤波,附有测试图片
  • 中值滤波6. Matlab代码实现 1. 空间滤波增强 空间滤波是通过在图像空间借助模板进行邻域操作完成对图像的滤波操作,包括线性的和非线性的。 空域滤波的主要功能: 平滑:低通滤波器: 目的: 模糊化:在提取较大...
  • 实现中值区分算法 实验工具 python 3.7.0 pycharm 实验内容 实验一 题目 实现一种视频切换,将一张图片慢慢覆盖另一张图片,并通过一个开放的圆圈慢慢显现。写出公式,并在两个图片中获得正...
  • 快速排序之三数中值分割

    千次阅读 2018-06-30 11:29:24
    枢纽元:与其他数做大小比较作用,作为一个中间参考值。 步骤: 1.  通过选取第一个元素、最后一个元素和最中间一个元素的中间值作为枢纽...可以动手编程实践,实现三数中值分割的快速排序。(很有意义) 禁止转载!
  • 一种改进的中值滤波,效果非常明显,值得参考!
  • 本程序主要是基于噪声点判断的中值滤波,他可以更好的保留图像边缘
  • 采用中值滤波提取碳纤维增强树脂基复合材料孔隙形貌特征,刘欢,罗忠兵,提取孔隙复杂随机形貌特征是建立碳纤维增强树脂基复合材料(Carbon Fiber Reinforced Polymer, CFRP)超声检测模型的前提,本文从图像处理...
  • cpp代码-基于五元中值组取中值分割的线形时间选择算法,找出n个元素集合s中的第k个最小元素(在线形时间内解决问题)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,882
精华内容 9,152
关键字:

中值法