• 图形学之信号处理


    随着图形学学习深入,会遇到连续函数不能直接用于数字计算机,必须进行数字化处理的情况。处理连续函数最有效的方法之一,就是函数的采样值,将函数在多个不同点处的值存储起来,需要时就重构其他函数值。本节将概述采样与重构技术。

    一、数字音频:一维采样

    记录音频信号的数字方法是采样,模数转换器(ADC)每秒钟测量电压数千次,产生整数流。这些整数可以很容易的存储在媒体中。在播放录音时,按照适当的速度读出数据,然后送入数模转换器(DAC)中。

    要使重构出的音频具有较高的质量,每秒的采样次数取决于所记录声音的音调高低。

    采样干扰与走样

    数字音频记录链可以作为图形学采样与重构过程的具体模型。在图形学的图像或者其他采样信号中,也会出现同样的欠采样干扰和重构干扰现象。
    问题原因:采样频率太低。
    解决办法:采样前滤波,重构过程中再次滤波。

    二、卷积

    卷积概念在采样与重构算法中广泛被应用,它是一个简单的数学概念,是采样、滤波、重构等算法的基础。
    卷积是函数的运算,有两个函数产生一个新的函数。卷积可用于连续函数和离散序列;可用于一维、二维活高维定义域的函数(维度是按自变量个数计算得来)。

    (一)滑动平均

    举例:采用滑动平均对一位韩束进行平滑处理。
    为了获得任意点的平滑值,计算该店 (r) 邻域的函数平均值((r) 是指平滑运算的半径,是一个控制平滑程度的参数)。

    计算:

    1. 连续函数 (g(x)) —— 在某个区间上对 (g) 积分,然后除以区间长度2r:

    [h(x) = frac{1}{2r}int_{x-r}^{x+r}g(t)d_t ]

    1. 离散函数 (b[i]) —— 平均就是将索引范围内( (2r+1) )累加求平均:

    [c[i] = frac{1}{2r+1}sum_{j=i-r}^{i+r}b[j] ]

    卷积的本质是滑动平均思想,唯一的区别是卷积中的滑动平均是加权平均

    (二)离散卷积

    离散卷积计算:
    对离散序列 (a[i])(b[i])进行卷积,结果为离散序列 ((a * b)[i]),该过程类似爱用序列 (a) 所给的样本赋予加权值,对 b 进行滑动平均。
    例:索引为 (i-j) 的样本 (b[i-j])的权重为 (a[j])。这是 (a) 卷积 (b)(a*b))的计算公式表示:

    [(a * b)[i] sum_{j}a[j]b[i-j] ]

    上式是对所有整数的求和运算((- infty ightarrow + infty)

    在图形学中,一般两个函数中由一个具有有限支撑集(意味着旨在自变量的有限区域内取非零值)。假设 (a) 有限,存在半径为 (r) ,使得当(|j|>r)时,都有 (a[j]=0),上面的求和公式再完整为:

    [(a * b)[i] sum_{j=-r}^{r}a[j]b[i-j] ]

    (三)把卷积看做移位滤波器之和

    如果 (b) 是一个序列,那么将 (b) 序列向右移动 (j) 个位置,将得到新序列 (b_{ ightarrow j})((b_{ ightarrow j}[i] = b[i-j]))
    就可以把卷积公式写成整个 ((a * b))的形式:

    [(a*b) = sum_{j} a[j]b_{ ightarrow j} ]

    (四)与连续函数的卷积

    两个连续函数之间的卷积,用积分代替求和运算;

    [(f*g)(x) = int_{-infty}^{+infty}f(t)g(x-t)dt ]

    (x)(f*g) 的值,就是移动 (f) 使得 (f(0))(g(x)) 对应之后,两函数形成的曲线下面的面积。和离散情况一样,求卷积就是进行滑动平均,由滤波器提供权值。

    (五)离散-连续卷积

    离散与连续的相互转换存在有两种方式:

    1. 连续转离散:
      采样 —— 通过记录连续函数在所有的整数自变量处的值,而忽略其他位置的值。

    2. 离散(或有序)转连续:
      重构 —— 用连续滤波器 (f(x)) 对离散序列 (a[i]) 进行滤波:

    [(a * f)(x) = sum_{i} a[i] f(x-i) ]

  • 相关阅读:
    内存管理 Autorelease、retain、copy、assign的set方法和含义?
    解决 项目cocoapods diff: /../Podfile.lock: No such file or directory
    iOS按钮点击的频率 防止按钮连续点击时重复执行按钮的点击方法
    iOS 网络篇--PDF网络文件下载和打开
    使用runtime获取属性
    取到 tableview 自定义section header 上的button
    JavaScript第一天 改变DIV的样式
    iOS 因为reason: 'Pushing the same view controller instance more than once is not supported而奔溃(下)
    iOS 因为reason: 'Pushing the same view controller instance more than once is not supported而奔溃(上)
    iOS缓存功能
  • 原文地址:https://www.cnblogs.com/somedayLi/p/12571350.html
Copyright © 2020-2023  润新知