一种利用FFT自适应阈值处理失真杂散信号的方法
扫描二维码
随时随地手机看文章
引言
图像信号是个很广泛的概念,本文以最典型和最常见的图像信号一一电视视频信号一一为例来进行探讨。电视信号的发送和接收过程要经历多次转换来满足传输的各个环节。为了满足卫星传输、电缆传输、同时传送多套节目等需求,电视信号在传输过程中,要经过若干A/D、D/A、调制解调和数据格式变换。另外,电视信号在信道传播过程中,会受到信道中各种噪声的影响,从而使得有用信号受到干扰,严重时可能完全丢失。传输网络以及各种数模转换设备和数字处理设备的影响还可能导致信号的失真,失真后的信号偏离原信号的部分称为失真杂散信号,某些资料称其为失真产物或杂散产物。
失真分为线性失真和非线性失真,其各自产生原因有所不同。
线性失真一般由两方面因素造成:一是网络对输入信号中各频率成分的传递函数不一致(放大或衰减即增益不等),致使各频率分量相对幅度产生变化,造成选择性幅度失真;另一个因素是网络对输入信号的各频率成分产生的相移不与频率成正比,致使各频率分量相对相位发生变化,造成相位失真。这就是网络的幅频特性和相频特性引起的相位变化和幅度变化的失真产物。
非线性失真的主要因素:一是网络传递函数的非线性特性,诸如放大器的非线性、ADC/DAC的非线性、光或电发射机的非线性,致使输出信号的频率成分与输入信号不相同,从而增加了新的频率成分;二是前端设备对信号进行大量的变换和处理后,虽然是有目的地利用电路的非线性特性对信号进行调制、混频、变频,取其中需要的频率而去掉那些不需要的频率成分,但做得不彻底、不完善而产生少量不需要的新频率成分的非线性交调产物;三是信号因素,例如输入信号的电平过高产生的限幅削波、有线电视邻频干扰、本征频率不纯(相位噪声)、有谐波在非线性状态下产生差拍、叠加等寄生震荡输出,使信号频率成分发生变化,致使产生失真产物。
正常情况下,图像的失真表现为图像拉丝、波浪型纹波、马赛克等现象,严重时会出现图像噪点、图像停滞、图像消失。虽然大部分情况下失真杂散信号并不造成人视觉上的差异,但是,对于某些图像检测处理设备,随机的失真杂散信号将导致设备工作异常,使得这些设备发出错误报告,从而处理出错误结果。
1图像的YCBCR空间与RGB空间的互相转变
目前,主流的数字电视视频信号格式是656格式(对应于YCBCR空间),它与通常表示图像的RGB方式(对应于RGB空间)不同。由于本文屏蔽算法基于656格式,所以,这里首先简单介绍一下两种空间的相互转换关系。
RGB方式利用3个向量R,G,B来表示一幅图像,红色、绿色和蓝色是数字图像的三原色。656格式则用另外3个向量Y,Cb,Cr来表示一幅图像。其中,Y表示图像纹理特征,称为灰度值;b和Cr则表示色差分量。其转换关系为:
Y=0.299R+0.587G+0.114B
Cb=0.564(B-Y)
Cr=0.713(R-Y)
纹理特征包含了图像的最主要信息,本文屏蔽算法主要针对灰度Y值来进行处理。
2失真杂散信号的特征分析
为了反应真实的视频信号失真情况,本文采用了Chipscope工具软件。该工具软件是Xilinx公司用于分析其FPGA内部信号的一个窗口,以便于FPGA开发者能对其开发项目进行调试。Chipscope所反应的信号完全是客观真实的信号,能发现很多仅凭肉眼无法发现的信号失真,图1所示是红场信号的实际Y值。
图1红场信号真实Y值
理论上,红场的Y值应为70,并且作为一个平场信号,其Y值应一直维持70且不会改变,但实际的红场Y值不仅等于70的点极少,而且很难找到大范围Y值相同的区域,Y值在70附近波动幅度较大,且具有极大的随机性。由于人眼分辨的颜色数量有限,Y值在细微情况下的波动是无法识别的,我们看到的依然是一片红色,然而,此时对于视频帧静止检测设备和视频内容检测比对设备来说,可能就会使其产生错误的判断结果。
由于失真杂散信号的随机特性,仅仅从空域或时域上一般无法看出失真杂散信号的规律,而必须将其转换到频域上。这里,可以利用图1的Y值进行FFT运算,以观察其结果。图2所示是图1中Y值的FFT运算结果。
图2图1中Y值FFT运算结果
从图2所示的运算结果可以看出,除了直流分量外,其余谐波分量的模都很小,这是由于理想的红场信号只有直流分量,而失真杂散信号不可能产生能量成分很大的交流分量。
那么,对于原本既有直流分量,又有交流分量的视频信号,又会是怎样的情况呢?我们再举一个例子:
假设有一个信号,它含有2V的直流分量,频率为50Hz、相位为-30。、幅度为3V的交流信号,以及一个频率为75Hz、
相位为90。、幅度为1.5V的交流信号。它们的合成信号可用数
学表达式表述如下:
现以256Hz的采样率氏对这个信号进行采样,然后利用MATLAB进行FFT仿真的运算结果如下:
点:512+j0
模:(Re2+Im2)1/2=512
点:-2.6195*10-14-j1.4162*10-13
模:(Re2+Im2)1/2=14*10-14
点:-2.8586*10-14-j1.1898*10-13
模:(Re2+Im2)1/2=12*10-14
点:-6.2076*10-13-j2.1713*10-12
模:(Re2+Im2)1/2=22*10-13
点:332.55-j192
模:(Re2+Im2)1/2=384
点:-1.6707*10-12-j1.5241*10-12
模:(Re2+Im2)1/2=2.25*10-12
点:-2.2199*10-13-j1.0076*10-12
模:(Re2+Im2)1/2=10.3*10-13
点:3.4315*10-12+j192
模:(Re2+Im2)1/2=192
点:-3.0263*10-14+j7.5609*10-13
模:(Re2+Im2)1/2=75.6*10-14
很明显,1点、51点、76点的值都比较大,它附近的点值都很小,可以认为趋于0。
从上面的例子可以看出,无论原始信号有无交流分量,失真杂散信号均不会对原信号的几根主要谱线造成影响,也不会产生新的主谱线,因此,我们可以设计一个算法屏蔽掉这些失真谱线,从而达到处理图像失真的目的。
3基于FFT的自适应阈值屏蔽算法
认识到失真杂散信号的特征后,就可以设计出下面的算法来屏蔽掉失真杂散信号的频谱。其具体的方法如下:
将一幅图像从RGB空间转换到YCBCR空间,这个空间包含3个矩阵,Y,Cb,Cr;
读取Y矩阵的每一行进行FFT运算,产生Y的频域矩阵FFTY,计算FFTY矩阵的模值;
找出FFTY矩阵中模值明显大于其周围模值的点,记为主频谱点;
对于主频谱点周围的点,如果其模值小于主频谱点的
dB(即千分之一)以下,则记为0,否则保留原值,这个过程将改变原FFTY矩阵,记为FFTYNEW;
将FFTYNEW矩阵经过IFFT运算得到新的Y矩阵,记为YNEW;
将YNEW,Cb,Cr矩阵构成的YCBCR空间转换为RGB空间,然后显示图像。
在算法的第(4)步,由于不同图像主频谱点的数量和模值各不相同,而且同一图像的不同位置的模值也不一样,所以,此算法是根据不同图像的不同特征自适出不同的阀值来屏蔽掉失真杂散信号的。
MATLAB仿真实验及实际FPGA得到的结果
利用MATLAB编程实现该算法后,即可对增加了失真杂散信号的图像进行处理,而且得到了比较好的结果,图3和图4分别给出了平场信号和非平场信号的处理结果。
图3平场信号MATLAB实验结果
在这里要特别说明的是,本文介绍的处理失真杂散信号的方法并不是通常意义上的噪声滤波,而是使原本随机的失真杂散信号在经过处理后变得更加固定。随机的失真信号会导致本来静止的图像帧产生波动,产生“伪运动现象”此外,同一视频信号经过不同的信道传播之后,由于失真的随机性,在接收端就可能收到并不相同的信号,从而导致视频检测比对设备判断失误。而通过此方法处理后,则可以有效地保证这些专业的视频检测处理设备保持正常工作。
图4非平场信号MATLAB实验结果
图5所示是运用Chipscope观察到的FPGA内部来自不同路径的两路视频信号的特征数据。经过此方法处理后,可以明显看到:两路特征数据已经几乎一样了。
图5来自不同路径视频信号特征数据对比
图5中的doutBsm和doutAs分别是来自卫星接收器和有
线电视的视频信号的特征数据。
本文的方法主要是为了解决笔者实习单位的某些设备工作异常问题,通过该方法的实际应用,该单位设备工作异常问题得到了有效解决。该方法的提出得到了小波滤波去噪的启发。由于FFT计算可以利用Xinlix的DSP处理IP核,因此,该方法也能方便在FPGA上实现。
20210917_614433eea8f50__一种利用FFT自适应阈值处理失真杂散信号的方法