CN101742316B - 一种基于niosⅱ的视频处理方法 - Google Patents

一种基于niosⅱ的视频处理方法 Download PDF

Info

Publication number
CN101742316B
CN101742316B CN 200910254404 CN200910254404A CN101742316B CN 101742316 B CN101742316 B CN 101742316B CN 200910254404 CN200910254404 CN 200910254404 CN 200910254404 A CN200910254404 A CN 200910254404A CN 101742316 B CN101742316 B CN 101742316B
Authority
CN
China
Prior art keywords
para
interpolation
signal
linear interpolation
result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN 200910254404
Other languages
English (en)
Other versions
CN101742316A (zh
Inventor
唐小华
王花朋
山浩哲
唐晓放
张新
唐琨
庞胜利
蒋励
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xi'an Post & Telecommunication College
Original Assignee
Xi'an Post & Telecommunication College
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xi'an Post & Telecommunication College filed Critical Xi'an Post & Telecommunication College
Priority to CN 200910254404 priority Critical patent/CN101742316B/zh
Publication of CN101742316A publication Critical patent/CN101742316A/zh
Application granted granted Critical
Publication of CN101742316B publication Critical patent/CN101742316B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Processing (AREA)

Abstract

本发明提供一种基于NIOS II的视频处理方法,属于嵌入式视频监视技术领域,包括:[1.1]解码;[1.2]去隔行;[1.3]视频缩放;[1.4]时序调配;[1.5]视频缩放;[1.6]数字视频信号格式转换;[1.7]时序调配;[1.8]信号选择。解决了现有的视频处理的方法未能充分利用NIOS II软核,且方法单一的技术问题。具有适用性强、图像清晰度高等的优点。

Description

一种基于NIOSⅡ的视频处理方法
技术领域
本发明属于嵌入式视频监视技术领域,具体涉及一种基于NIOS II的视频处理方法。
背景技术
视频监视近年来得到了迅速的发展,应用范围不断地扩展。以往国内使用的视频监视系统主要是模拟系统,到了20世纪90年代末,随着网络宽带、计算机处理能力和存储容量的迅速提高,以及各种实用视频信息处理技术的出现,视频监视从模拟视频监视进入了数字化的网络时代,即数字视频监视系统。数字视频监视系统将摄像机获得的模拟信号转变成数字信号,便于计算机处理.在计算机显示器上显示或者在监视器上显示实时活动图像的同时,还可以将视频信号存储于计算机的硬盘内,或者在网络上进行传输。
传统的视频监视的嵌入式设计架构是应用MCU+ASIC来实现系统硬件基础,由操作系统调度不同的任务实现系统的运行。但系统硬件的可裁剪性较差,系统优化、升级不是很方便。
传统的视频监视方法中的MCU为系统总控制中枢,一般可用高档单片机或ARM.其它功能模块可以用专用的芯片来实现。CVBS模拟视频信号经过视频的模数转换芯片输出数字视频信号,MCU控制整个系统的运行,数字视频信号经过数字视频处理芯片,输出需要的视频信号,经过压缩存储(可选),最后传输到显示终端。因此,传统的视频监视的硬件需要用多个元件来实现,集成度不高,且系统成本较高,系统单板一旦做成,系统更改、升级比较困难。
现有的基于NIOS II软核的视频监视方法,实现了视频处理和NIOS II系统的结合。CVBS模拟视频信号经过模数转换芯片输出数字视频信号,数字视频信号经过视频采集处理模块和NIOS II系统控制协同工作,最后输出视频信号传输到显示终端。但现有的NIOS II软核的视频监视方法仅局限于视频的简单处理,实时监控,不能同时满足视频监视的实时监视、采集、存储和传输的要求,也没有充分发挥出基于NIOS II软核的特色。
现有的视频处理的视频缩放大多采用线性插值方法,方法简单,但由于线性插值平坦的通带过窄,对图像高频部分有很大衰减,若要得到较好的插值结果,又需要高阶滤波函数来实现,这无疑增加了计算复杂度、具体实现困难较大。
发明内容
本发明目的在于提供一种基于NIOS II的视频处理方法,解决了现有的视频处理的方法未能充分利用NIOS II软核,且方法单一的技术问题。
本发明针对上述技术问题的技术解决方案如下:
一种基于NIOS II的视频处理方法,其特殊之处在于,该方法包括以下步骤:
[1.1]解码:将BT656视频信号通过BT656解码解码为隔行的YCbCr数字视频信号及隔行的同步信号I;
[1.2]去隔行:将隔行的YCbCr数字视频信号及隔行的同步信号I通过去隔行转换为逐行的YCbCr数字视频信号及逐行的同步信号I;
[1.3]视频缩放:将逐行的YCbCr数字视频信号以及逐行的同步信号I通过视频缩放至YCbCr转RGB,转换为RGB数字视频信号;
[1.4]时序调配:将RGB数字视频信号以及NIOS II配置时钟信号通过VGA时序发生消隐调配为RGB数字视频信号、同步信号II以及供VGA显示的时钟信号;
[1.5]视频缩放:根据VGA时序发生输出的同步信号II、NIOS II控制系统提供的配置缩放参数、去隔行输出的同步信号I,将去隔行输出的逐行的YCbCr数字视频信号通过视频缩放缩放为YCbCr数字视频信号;
[1.6]数字视频信号格式转换:将缩放的YCbCr数字视频信号通过YCbCr转RGB转换为RGB数字视频信号;
[1.7]时序调配:RGB数字视频信号以及NIOS II配置时钟信号通过VGA时序发生输出RGB数字视频信号、VGA同步信号II以及供VGA显示的时钟信号;将RGB数字视频信号、同步信号II以及供VGA显示的时钟信号一路输至MUX选择,另一路经NIOS II控制系统22输至MUX选择;
[1.8]信号选择:VGA时序发生输出的RGB数字视频信号、VGA同步信号II以及供VGA显示的时钟信号直接经MUX选择输出供VGA显示,或VGA时序发生输出的RGB数字视频信号、VGA同步信号II以及供VGA显示的时钟信号经NIOS II控制系统控制后再经MUX选择输出供VGA显示。
以上所述的步骤[1.5]具体的实现方法为:
1)计算插值步长
视频缩放(213)根据输入的同步信号I和同步信号II计算插值步长,即计算:插值步长=同步信号I/同步信号II得插值步长;
1.1)确定新像素点X插值的位置
根据插值步长来确定新像素点X插值位置;
2)计算当前像素点X的非线性插值结果x_lans
以2n个原始像素点为方阵式区域,形成X1~X2n个像素点,得到X位置的像素值即非线性插值结果x_lans,其中n取≥4的偶数;
3)确定当前像素点的线性插值结果x_bi;
4)通过自适应判断确定最终插值结果。
以上所述的步骤2)的具体实现方法是:
2.1)计算方阵的列缩放系数para_v、方阵的行缩放系数para_h、
应用Lanczos非线性插值函数,
来确定方阵的列缩放系数para_v以及方阵
的行缩放系数para_h;
2.2)确定查找表
将步骤2.1)所得的方阵的列缩放系数para_v、方阵的行缩放系数para_h写入查找表;
2.3)确定每列的垂直向系数
查找步骤2.2)中所得查找表的方阵的列缩放系数para_v,计算归一化的系数的和sum1以及每列的垂直向系数;
归一化的系数的和sum1为方阵的列缩放系数para_v之和;
计算:垂直向系数X_m1=(X1*para_v1+X5*para_v2+X9*para_v3+X13*para_v4)/sum1
垂直向系数X_m2=(X2*para_v1+X6*para_v2+X10*para_v3+X14*para_v4)/sum1
垂直向系数X_m3=(X3*para_v1+X7*para_v2+X11*para_v3+X15*para_v4)/sum1
垂直向系数X_m4=(X4*para_v1+X8*para_v2+X12*para_v3+X16*para_v4)/sum1
则得每列的垂直向系数;
2.4)确定最终X位置的非线性插值结果X_lans
查找步骤2.2)中所得查找表的方阵的行缩放系数para_h计算水平向归一化的系数的和sum2;
水平向归一化的系数的和sum2为方阵的行缩放系数para_h之和;
计算:X_lans=(X_m1*para_h1+X_m2*para_h2+X_m3*para_h3+…)/sum2,得非线性插值结果X_lans;
2.5)过冲和下冲控制
2.5.1)选取方阵相邻列的原始像素点位置的最大值XL_max以及方阵相邻列的原始像素点位置的最小值XL_min;
2.5.2)根据设计要求选择n位过冲控制门限0T_ctrl和n位下冲控制门限UT_ctrl,其范围是0~2n-1;
2.5.3)判定过冲和下冲控制以确定非线性插值结果X_lans1;
2.5.3.1)将经步骤2.4)所得的非线性插值结果X_lans与原始像素点位置的最大值XL_max进行比较后,控制过冲,确定非线性插值结果X_lans1;
2.5.3.2)将经步骤2.4)所得的非线性插值结果X_lans与原始像素点位置的最小值X_min进行比较后,进行下冲控制,确定非线性插值结果X_lans1。
以上所述的步骤3)的具体实现方法是:
3.1)确定待插值的水平左右点
计算:
待插值的水平左点LL1=[X1*N_ctrl1+X2*(2n-N_ctrl1)]/2n
待插值的水平右点LR1=[X4*N_ctrl1+X3*(2n-N_ctrl1)]/2n
待插值的水平左点LL2=[X5*N_ctrl1+X6*(2n-N_ctrl1)]/2n
待插值的水平右点LR2=[X8*N_ctrl1+X7*(2n-N_ctrl1)]/2n
待插值的水平左点LL3=[X9*N_ctrl1+X10*(2n-N_ctrl1)]/2n
待插值的水平右点LR3=[X12*N_ctrl1+X11*(2n-N_ctrl1)]/2n
待插值的水平左点LL4=[X13*N_ctrl1+X14*(2n-N_ctrl1)]/2n
待插值的水平右点LR4=[X16*N_ctrl1+X15*(2n-N_ctrl1)]/2n
其中n位门限N_ctrl1选取范围为0~2n-1,得待插值的水平左右点;
3.2)确定线性插值点
计算:
线性插值点X_l1=LL1*(1-x_offset)+LR1*x_offset,
线性插值点X_l2=LL2*(1-x_offset)+LR2*x_offset,
线性插值点X_l3=LL3*(1-x_offset)+LR3*x_offset,
线性插值点X_l4=LL4*(1-x_offset)+LR4*x_offset,
其中x_offset为水平向偏移量,得线性插值点;
3.3)确定垂直方向的上点X_UP,垂直方向的下点X_DN
计算:
垂直方向的上点X_UP=[X_11*N_ctrl1+X_l2*(2n-N_ctrl1)]/2n
垂直方向的下点X_DN=[X_l3*N_ctrl1+X_l4*(2n-N_ctrl1)]/2n
得垂直方向上的点X_UP及垂直方向的下点X_DN;
3.4)得到线性插值结果X_bi
计算:
X_bi=X_UP*(1-y_offset)+X_DN*y_offset,其中y_offset为垂直向偏移量,得线性插值结果X_bi;
以上所述的步骤4)的具体实现方法是:
将线性插值结果X_bi与非线性插值结果X_lans1进行对比以确定最终插值结果;
4.1)选取原2n个像素点的位置的最大值Ymax,选取原2n个像素点的位置的最小值Ymin;
4.2)将原2n个像素点的位置的最大值Ymax与原2n个像素点的位置的最小值Ymin的差值和n位门限N_ctrl2进行比较,确定插值结果;
以上所述的步骤2.1)的具体实现方法为:
计算方阵的列缩放系数para_v=sinc(距X位置的垂直向行数-X)*sinc((距X位置的垂直向行数-X)/a),其中X取0/256~256/256中的任意值,a=n/2,则得方阵的列缩放系数;
计算方阵的行缩放系数para_h=sinc(距X位置的水平向列数-X)*sinc((距X位置的水平向列数-X)/a),其中X取0/256~256/256中的任意值,a=n/2,则得方阵的行缩放系数。
以上所述的步骤2.5.3.1)的具体实现方法为:
2.5.3.1.1)如果X_lans>X_max,则非线性插值结果X_lans1=X_lans-(X_lans-X_max)*0T_ctrl/2n
当X_lans1>255时,则非线性插值结果X_lans1值确定为X_lans1=255;
2.5.3.1.2)如果非线性插值结果X_lans<原始像素点位置的最小值X_min,则非线性插值结果X_lans1=X_lans+(X_min-X_lans)*UT_ctrl/2n;当非线性插值结果X_lans1<0时,则非线性插值结果X_lans1值确定为X_lans 1=0。
以上所述的步骤4.2)的具体实现方法是:若原2n个像素点的位置的最大值Ymax-原2n个像素点的位置的最小值Ymin>n位门限N_ctrl2,则插值结果为线性插值X_bi;若原2n个像素点的位置的最大值Ymax-原2n个像素点的位置的最小值Ymin<n位门限N_ctrl2,则插值结果为非线性插值结果X_lans,其中n位门限N_ctrl2的取值范围为0~2n-1。
以上所述的步骤[1.1]中的去隔行(212)采用双口RAM来实现。
以上所述的步骤[1.6]中的YCbCr转RGB(214)应用矩阵
R G B = 1 1.403 0 1 - 0.714 - 0.344 1 0 1.770 × Y Cr Cb 来实现。
本发明的优点如下:
1)适用性强,输出不同的VGA制式可通过参数配置;
2)本发明使用多相位插值方法减少计算的复杂度;
3)本发明使用插值系数查找表方法易于更新:
在视频处理的过程中只需要调整查找表的内容,即可实现视频处理中的视频缩放;
4)本发明插值精度达到1/256个像素值,使得图像清晰度更高;
5)本发明理论上可无限放大视频信号,可将视频信号最小缩至原视频信号的1/2。
附图说明
图1为本发明视频监视系统框图;
图2为本发明视频处理示意框图;
图3为本发明视频信号转换输出的BT656行信号时序图;
图4为本发明BT656解码接口示意图;
图5为本发明BT656解码接口时序图;
图6为本发明偶场同步信号1时序图;
图7为本发明奇场同步信号1时序图;
图8为本发明双口RAM工作监测波形图;
图9为本发明去隔行接口示意图;
图10为本发明YCbCr输出时序图;
图11为本发明视频缩放接口示意图;
图12为本发明视频缩放的流程示意图;
图13为本发明一实施例计算插值点X的位置示意图;
图14为本发明一实施例示意图;
图15为本发明一实施例的非线性插值函数Lanczos公式中a的值的幅频响应示意图;
图16为本发明YCrCb转RGB的接口示意图;
图17为本发明VGA时序发生接口示意图;
图18为本发明行同步信号IIVGA时序图;
图19为本发明场同步信号IIVGA时序图;
图20为本发明NIOSII控制系统结构示意图;
图21为本发明NIOSII硬件连接图;
图22为本发明SDRAM控制核结构示意图;
图23为本发明DMA控制核结构示意图;
图24为本发明串行接口控制核结构示意图;
图25为本发明采集控制核结构示意图;
图26为本发明Avalon总线的从端口读传输时序图;
图27为本发明FIFO传输模块仿真波形图;
图28为本发明VGA控制核结构示意图;
图29为本发明流模式从端口写传输时序;
图30为本发明VGA时序发生器仿真图;
图31为本发明SDRAM存储数据的流程示意图;
图32为本发明图像显示流程示意图。
图33为本发明UART传输流程示意图。
具体实施方式
参见图1,视频监视系统一般主要由视频信号转换1(ADV7181B)、视频计算处理/系统控制2、数据存储/通信3、视频显示信号转换4(DAV7213)以及VGA显示5构成;其中视频计算处理/系统控制2由视频处理21和NIOS II控制系统22构成,视频监视系统实现方法如下所述:a.将模拟视频信号输至视频信号转换1(ADV7181B),经视频计算处理/系统控制2中的NIOSII控制系统22控制后,该模拟视频信号转换为数字视频信号以及同步信号I;b.将数字视频信号以及同步信号I经视频计算处理/系统控制2中视频处理21的处理,输出RGB数字视频信号以及同步信号II;c.将视频计算处理/系统控制2中的视频处理21输出的RGB数字视频信号以及同步信号II直接输至视频显示信号转换4(DAV7213),转换为模拟的RGB数字视频信号;或者将视频处理21输出的RGB数字视频信号以及同步信号II经NIOSII控制系统22输至数据存储/通信3中的SDRAM32存储后,输至视频显示信号转换4(DAV7213)转换为模拟的RGB数字视频信号;或者将将视频处理21输出的RGB数字视频信号以及同步信号II经NIOSII控制系统22先输至数据存储/通信3中的串行接口31,后经串行接口31上传至上位机;d.将模拟的RGB数字视频信号输至VGA显示5以供输出。
以下结合附图对本发明具体实现方法进行详细阐述,视频处理的主要实现方法参见图2。
[1.1]解码:BT656视频信号以及同步信号I是视频计算处理/系统控制2中的NIOS II控制系统21控制视频信号转换1(ADV7181B),将NTSC/PAL/S-Video模拟视频信号转换为数字视频信号,进行视频解码,输出的标准8位BT656视频信号以及同步信号I,供后端的BT656解码211处理。
BT656解码211要遵守BT.656时序及数据格式得到隔行的YCbCr数字视频信号,同步信号I的输出信号,其中YCbCr数字视频信号具体的可以是4∶4∶4、4∶4∶2等的YCbCr数字视频信号。
参见图3,视频信号转换2(ADV7181B)输出BT656行信号时序,“80 10…”表示当前视频信号处于行消隐阶段。“FF 00 00 XY”是时间参考代码。当XY的bit6=’1’,是EAV(有效视频结束),bit6=’0’,是SAV(有效视频开始)Cb Y Cr Y…为有效视频信号(占用1440个CCL)。XY时间参考代码参见表1。
表1
  数据比特号   第一字节   第二字节   第三字节   第四字节
  7(MSB)   1   1   1   1
  6   1   1   1   F
  5   1   1   1   V
  4   1   1   1   H
  3   1   1   1   P3
  2   1   1   1   P2
  1   1   1   1   P2
  0   1   1   1   P0
XY定义为:
F=“0”forField 0,F=“1”for Field 1;V=“1”during vertical blanking;H=“0”at SAV H=“1”at EAV; P 3 = V ⊗ H ; P 2 = F ⊕ H ; P 1 = F ⊕ V ; P 0 = F ⊕ V ⊕ H .
BT656解码211的输入信号是视频信号转换1(ADV7181B)输出的BT656视频信号、同步信号I,输出的是YCbCr数字视频信号及同步信号I。BT656解码主要接口参见图4:Clk_bt656是FPGA 27MHZ时钟;BT656_in[7:0]:视频信号转换1(ADV7181B)输出的BT656视频信号;Hsync1:BT656解码解出的行同步信号I;Vsync1:BT656解码解出的场同步信号I;Data_valid1:BT656解码输出的有效数据信号;Field1:BT656解码输出的场标志信号,0代表偶场,1代表奇场;Y_data1,Cb_data1,Cr_data1:BT656解码输出的YCbCr信号。BT656解码接口时序参见图5。
[1.2]去隔行:去隔行212的输入信号是BT656解码211得到的隔行的YCbCr数字视频信号及同步信号I。为节省资源,去隔行采用行复制的转逐行方法,即奇、偶数行每行多复制一行输出。这样,奇、偶数场各可以拼成一帧输出。
偶场同步信号I时序及奇场同步信号I时序分别参见图6、图7。
因为要完整的复制每一行数据,并且要保存下一行的数据,可采用双口RAM来存数据。因视频信号转换2采样的BT656数字视频信号以及同步信号I的传输速率为13.5MHz,而去隔行212输出的YCrCb数字视频信号以及同步信号I的传输速率为27MHz,去隔行211采用双口RAM,去隔行212每一行数据读两次,回复频率,同时完成隔行扫描到逐行扫描的转换。
去隔行212采用双口RAM,可缓存一场数据。去隔行212的读写是同时进行。双口RAM工作监测波形参见图8,address_a为写地址计数,地址计数时钟为13.5M.使能地址计数为TD_HS,低电平有效;address_b为读地址计数,地址计数时钟为27M.使能地址计数为BLANK,高电平有效。从信号波形看,address_a和address_b计数相等为720,满足设计要求。同时每写入一场可准确读出两场数据,没有偏差,完全符合设计要求。
去隔行212接口参见图9,Hsync2去隔行212输出的逐行的行同步信号I;Vsync2去隔行212输出的逐行的场同步信号I;Data_valid2去隔行212输出的有效数据信号;Y_data2,Cb_data2,Cr_data2去隔行212输出的YCbCr数字视频信号。
完整YCbCr输出时序参见图10,当data_valid2为高电平时,YCrCb输出有效视频数据,为低电平时,输出消隐数据,Y输出”0x00”,Cr、Cb输出”0x80”。
[1.3]视频缩放:将逐行的YCbCr数字视频信号以及逐行的同步信号I通过视频缩放213至YCbCr转RGB214,转换为RGB数字视频信号;
[1.4]时序调配:将RGB数字视频信号以及NIOS II配置时钟信号通过VGA时序发生215消隐调配为RGB数字视频信号、同步信号II以及供VGA显示的时钟信号;
[1.5]视频缩放:视频缩放213根据NIOSII配置缩放参数、由去隔行212输出的逐行的同步信号I、以及又VGA时序发生215输出的同步信号II,对由去隔行212输出的YCbCr数字视频信号进行缩放。
视频缩放213的功能是把输入的视频水平和/或垂直缩放成显示需要的格式。例如将输入的YCbCr数字视频信号以及同步信号I(720X480或720X576)缩小为YCbCr数字视频信号以及同步信号II(640X480)。视频缩放213的接口参见图11,其中Clk_27为系统27MHZ时钟;Clk_vga为系统VGA显示时钟;Hsync_vga,vsync_vga为VGA时序发生215输出的供VGA显示的同步信号II;Y_data,Cb_data,Cr_data为经视频缩放213输出的视频数据信号。
视频缩放213具体应用如下的方法来实现,其流程示意图参见图12。
1)视频缩放213根据输入的同步信号I和同步信号II计算插值步长,计算:插值步长=同步信号I/同步信号II得插值步长。
1.1)根据插值步长来确定新像素点X插值位置。
例如输入视频缩放213的逐行同步信号I为720X480,输入视频缩放的同步信号II是640X480,则可得缩放比(640*480)/(720*480)=0.889。根据缩放精度确定以一个或多个有效像素为一个像素点单位。例如每一个有效像素为一个像素点单位,那么得到需要插值的步长是(720x480)/(640*480)=1.125。
参见图13,以原始每个有效像素点的步长为1,则所产生的插值点步长1.125,2.25,3.375…是新像素点的位置即要插值点X的位置,见图示的虚点。虚点表示要产生640X480的一行像素点,实点表示原始720X480的一行像素点。
2)以16个原始像素点为方阵式区域,形成X1~X16个像素点,得到X位置的像素值即非线性插值结果x_lans。
从当前像素点周围的16个像素点得到当前像素点的非线性插值结果x_lans。例如以16个原始像素点为方阵,形成X1~X16个像素点,得到X位置的像素值,参见图14。
具体实现方法如下:
2.1)计算方阵的列缩放系数para_v、方阵的行缩放系数para_h、
由于非线性插值函数频谱具有很宽的通带特性,可以得到高频损失较少的插值结果。因此这里用Lanczos非线性插值函数,通过多相位插值以及查找表的形式来实现,表的值可以通过软件来配置。
在查找表中,采用128X4个插值,即128个位置,根据函数对称性,可以得到256个采样位置。所以精度可以达到1/256像素位置。
下面的公式是Lanczos非线性插值函数
Figure G2009102544042D00091
Lanczos公式中a的值的幅频响应参见图15,这里采用多相位插值函数方式,取插值点周围四个点对应的插值系数para_v1,para_v2,para_v3,para_v4,这四个点每个点之间间隔是单位1,范围是-2<x<2,因此取a=2。
例若取x插值位置为其中某一个值(0/256,1/256,2/256…255/256,256/256),根据下述公式,得到四个插值像素点对应的系数分别是,para_v1,para_v2,para_v3,para_v4。
para_v1=sinc(-1-x)*sinc((-1-x)/2);
para_v2=sinc(-x)*sinc(-x/2);para_v3=sinc(1-x)*sinc((1-x)/2);
para_v4=sinc(2-x)*sinc((2-x)/2);
2.2)确定查找表
将步骤2.1)所得的方阵的列缩放系数para_v、方阵的行缩放系数para_h写入查找表。
得到查找表参见表2:
  插值位置x   para_v1   para_v2   para_v3   para_v4
  0/256   0.000   1.000   0.000   0.000
  1/256   0.002   1.000   0.003   0.000
  2/256   -0.005   1.000   0.005   -0.000
  ...   ...   ...   ...   ...
  129/256   0.065   0.584   0.562   0.062
  130/256   0.062   0.562   0.584   0.065
  ...   ...   ...   ...   ...
  256/256   -0.000   0.000   1.000   0.000
因为所用的插值函数具有偶对称关系,因此,从表2中可看出,偏移x从129/256到256/256和偏移x从127/256到0/256的插值系数具有对称关系,所以只需要从0/256到128/256的查找表系数即可。
查表时,比如,当X垂直插值位置是0时,即偏移位置是0/256,通过查找表,可以得到4个插值系数为[0,1,0,0]。当X垂直插值位置是7/256时,即偏移位置是7/256,通过查找表,可以得到4个插值系数为[-0.016,0.998,0.018,0]。
同理,可以通过水平偏移,查表得到水平方向的插值系数。
2.3)查找步骤2.2)中所得查找表的方阵的列缩放系数para_v,计算归一化的系数的和sum1以及每列的垂直向系数以确定每列的垂直向系数。
归一化的系数的和sum1为方阵的列缩放系数para_v之和;
计算:
垂直向系数X_m1=(X1*para_v1+X5*para_v2+X9*para_v3+X13*para_v4)/sum1
垂直向系数X_m2=(X2*para_v1+X6*para_v2+X10*para_v3+X14*para_v4)/sum1
垂直向系数X_m3=(X3*para_v1+X7*para_v2+X11*para_v3+X15*para_v4)/sum1
垂直向系数X_m4=(X4*para_v1+X8*para_v2+X12*para_v3+X16*para_v4)/sum1
则得每列的垂直向系数。
2.4)查找步骤2.2)中所得查找表的方阵的行缩放系数para_h计算水平向归一化的系数的和sum2以确定最终X位置的非线性插值结果X_lans。
水平向归一化的系数的和sum2为方阵的行缩放系数para_h之和。
计算:X_lans=(X_m1*para_h1+X_m2*para_h2+X_m3*para_h3+X_m4*para_h4)/sum2得非线性插值结果X_lans。
2.5)为了控制视频插值点的平滑度,需要对插值结果X进行过冲和下冲控制。具体实现方法是:
2.5.1)选取方阵相邻列的原始像素点位置的最大值XL_max以及方阵相邻列的原始像素点位置的最小值XL_min。
即:XL_max=MAX(X6,X7,X10,X11);XL_min=MIN(X6,X7,X10,X11)
2.5.2)根据设计要求选择n位过冲控制门限0T_ctrl和n位下冲控制门限UT_ctrl,其范围是0~63。
2.5.3)判定过冲和下冲控制以确定非线性插值结果X_lans1。
2.5.3.1)将经步骤2.4)所得的非线性插值结果X_lans与原始像素点位置的最大值XL_max进行比较后,控制过冲,确定非线性插值结果X_lans1。
2.5.3.2)将经步骤2.4)所得的非线性插值结果X_lans与原始像素点位置的最小值X_min进行比较后,进行下冲控制,确定非线性插值结果X_lans1。
X_lans>X_max,则X_lans1=X_lans-(X_lans-X_max)*0T_ctrl/64;
若X_lans<X_min,则X_lans1=X_lans+(X_min-X_lans)*UT_ctrl/64
最终插值结果X_lans1要限制在0~255,若X_lans1>255则确定非线性插值结果X_lans1的值为255;若X_lans1<0则确定非线性插值结果X_lans1的值为0。
3)通过线性插值方法,从当前像素点周围的16个像素点得到当前像素点的线性插值结果x_bi。
具体实现方法如下:
3.1)计算:
待插值的水平左点LL1=[X1*N_ctrl1+X2*(64-N_ctrl1)]/64
待插值的水平右点LR1=[X4*N_ctrl1+X3*(64-N_ctrl1)]/64
待插值的水平左点LL2=[X5*N_ctrl1+X6*(64-N_ctrl1)]/64
待插值的水平右点LR2=[X8*N_ctrl1+X7*(64-N_ctrl1)]/64
待插值的水平左点LL3=[X9*N_ctrl1+X10*(64-N_ctrl1)]/64
待插值的水平右点LR3=[X12*N_ctrl1+X11*(64-N_ctrl1)]/64
待插值的水平左点LL4=[X13*N_ctrl1+X14*(64-N_ctrl1)]/64
待插值的水平右点LR4=[X16*N_ctrl1+X15*(64-N_ctrl1)]/64
其中n位门限N_ctrl1选取范围为0~63,得待插值的水平左右点。
3.2)计算:
线性插值点X_l1=LL1*(1-x_offset)+LR1*x_offset,
线性插值点X_l2=LL2*(1-x_offset)+LR2*x_offset,
线性插值点X_l3=LL3*(1-x_offset)+LR3*x_offset,
线性插值点X_l4=LL4*(1-x_offset)+LR4*x_offset,
其中x_offset为水平向偏移量,得线性插值点。
3.3)计算:
垂直方向的上点X_UP=[X_l1*N_ctrl1+X_l2*(64-N_ctrl1)]/64,
垂直方向的下点X_DN=[X_l3*N_ctrl1+X_l4*(64-N_ctrl1)]/64,
得垂直方向上的点X_UP及垂直方向的下点X_DN。
3.4)计算:
线性插值结果X_bi=X_UP*(1-y_offset)+X_DN*y_offset,其中y_offset为垂直向偏移量。
得线性插值结果X_bi。
在噪声情况下,线性插值可以得到较好的插值效果,因为其低通滤波特性使其有很好的降噪的功能。
4)通过自适应判断确定最终插值结果:
将线性插值结果X_bi与非线性插值结果X_lans1进行对比以确定最终插值结果。
4.1)选取原16个像素点的位置的最大值Ymax,选取原16个像素点的位置的最小值Ymin。
4.2)将原16个像素点的位置的最大值Ymax与原16个像素点的位置的最小值Ymin的差值和n位门限N_ctrl2进行比较,确定插值结果。
若原16个像素点的位置的最大值Ymax-原16个像素点的位置的最小值Ymin>n位门限N_ctrl2,则插值结果为线性插值X_bi;若原16个像素点的位置的最大值Ymax-原16个像素点的位置的最小值Ymin<n位门限N_ctrl2,则插值结果为非线性插值结果X_lans,其中n位门限N_ctrl2的取值范围为0~63。
[1.6]数字视频信号格式转换:由视频缩放213输出的缩放的YCbCr数字视频信号输至YCbCr转RGB214,经YCbCr转RGB 214转换后得到的RGB数字视频信号输至VGA时序发生215。
YCrCb转RGB214接口参见图16。其中Y_data2,Cb_data2,Cr_data2为从视频缩放输出的数据;Y_data2指亮度,Cb_data2指蓝色分量,Cr_data2指红色分量。输出是转换了的RGB数据,R_data指红色,G_data指绿色,B_data指蓝色。
所用转化方阵如下式所示:
R G B = 1 1.403 0 1 - 0.714 - 0.344 1 0 1.770 × Y Cr Cb
R=Y+1.403Cr=Y+Cr+0.403Cr=Y+Cr+0x19CCr
为计算方便把0x19C表示为小数0.403右移10位的十六进制计算出的R,G,B最后还要通过纠正,因有些坏值使RGB值大于1023或小于0。当大于1023时,纠正RGB值为1023,小于0时,RGB赋值0。这样RGB可用10位二进制来表示。
[1.7]时序调配:RGB数字视频信号以及NIOS II配置时钟信号输入VGA时序发生215进行调配,经VGA时序发生215调配后输出的同步信号II、RGB数字视频信号以及供VGA显示的时钟信号一路输至MUX选择;另一路经NIOSII控制系统22输至MUX选择216;同时经VGA时序发生215消隐调配后输出的同步信号II反馈至视频缩放213。
VGA时序发生215产生VGA显示需要的时序,与输出有效数据同步,产生标准的640*480的VGA显示数据的行场同步信号II。
一般计算机VGA(640×480,60Hz)图像格式的信号时序,其点时钟DCLK为25.175MHz,场频为59.94Hz。场周期为16.683ms,每场有525行,其中480行为有效显示行,45行为场消隐期。场同步信号Vs每场有一个脉冲,该脉冲的低电平宽度为63μs(2行)。场消隐期包括场同步时间、场消隐前肩(13行)、场消隐后肩(30行),共45行。行周期为31.78μs,每显示行包括800点,其中640点为有效显示,160点为行消隐期(非显示区)。行同步信号Hs每行有一个脉冲,该脉冲的低电平宽度为3.81μs(即96个DCLK);行消隐期包括行同步时间,行消隐前肩(19个DCLK)和行消隐后肩(45个DCLK),共160个点时钟。复合消隐信号是行消隐信号和场消隐信号的逻辑与,在有效显示期复合消隐信号为高电平,在非显示区域它是低电平。
VGA时序发生215接口参见图17。其中Clk_vga为VGA的显示时钟,也是模块的时钟。R_data1,g_data1,b_data1为输出给视频显示信号转换4(DAV7213)的最终数据。Hsync,vsync,是输出给视频显示信号转换4(DAV7213)的同步信号II,也是给视频缩放213输入的信号。
行同步信号II(hsync)产生的时序参见图18,其中第一个下降沿到第二个下降沿为一个完整周期,共800个像素点,其中有效像素点为640个。
场同步信号II(vsync)产生的时序参见图19第一个下降沿到第二个下降沿为一个完整周期,共525个行,其中有效像行为480个。
[1.8]信号选择:VGA时序发生215输出的RGB数字视频信号、同步信号II以及供VGA显示的时钟信号直接经MUX选择216输出供VGA显示,或VGA时序发生215输出的RGB数字视频信号、同步信号II以及供VGA显示的时钟信号经NIOS II控制系统22控制后再经MUX选择216输出供VGA显示。
参见图20,NIOSII控制系统22主要由NIOSIICPU224、采集控制核225、SDRAM控制核221、DMA控制核223、串行接口控制核222以及VGA控制核226构成。
在SOPC中添加了用户自定义外设,简化硬件的设计。在SOPCBuilder中生成的NIOSII控制系统22的硬件连接参见图21。其中Cpu_0为NIOSII CPU;tri_state_bridge为Avalon总线;timer0,timer1为定时器;sdram为SDRAM控制核;button_pio,switch_pio为输入/输出端口;Dma为DMA控制核;UART_0为串行接口(UART)控制核;Vga为VGA控制核,to_sdram为采集控制核。
NIOSII控制系统22的控制方法主要包括以下步骤:
[2.1]NIOSIICPU224控制采集控制核225将视频处理21输出的数据经DMA控制核223传输到SDRAM控制核221和串行接口控制核222;
[2.2]NIOSIICPU224控制SDRAM控制核221中的数据经DMA控制核223存至SDRAM32;
[2.3]NIOSIICPU224控制VGA控制核226将转换后的数据输出至视频处理21;
[2.4]NIOSIICPU224控制SDRAM控制核221将数据经DMA控制核223送至VGA控制核226;
[2.5]NIOSIICPU224控制串行接口控制核222将采集控制核225中的数据传输至上位机。
以下结合附图对于NIOSII控制系统22中的相关控制核进行详细的阐述。
SDRAM芯片时钟和AVALON总线接口的时钟驱动必须同步,像其它的同步设计,必须确保地址,数据,控制信号在时钟边沿到来时必须保持稳定。所以必须用锁相环PLL在SDRAM控制核221和SDRAM芯片之间稳定时钟。在低速时钟的时候,时钟相对延时较小,锁相环PLL可以不用。SDRAM控制核221接口示意图参见图22。
AVALON从接口是SDRAM控制核221的用户接口部分。当访问从接口时,SDRAM控制核221整个传输协议对用户是透明的。可通过控制逻辑控制AVALON从接口的地址(Adress),数据(Data),等待请求(Waitrequest),读取数据有效(Readdatavalid)信号经由SDRAM接口适配处理后来实现SDRAM芯片读写操作。
时钟源(Clock source)是NIOSII控制系统22时钟50Mhz,通过锁相环PLL相位调整,产生50MHZSDRAMclock(SDRAM芯片时钟)和50MHz不同相位的SDRAM控制核时钟(controllerclock)。
在NIOSII控制系统22设计中,采用DMA控制核传输SDRAM的数据操作,视频数据通过AVALON总线由DMA方式传输到SDRAM控制核221。通过SDRAM控制核221将视频数据批量写入SDRAM32。
DMA控制核223由AVALON从接口控制实现批量数据的传输。主读端口(READ MASTER PORT)连接读数据源模块,主写端口(WRITE MASTER PORT)连接写数据目的模块。DMA控制核可以非常有效的传输数据,只要配置好DMA控制核内部寄存器,连接好读写模块,DMA控制核就可以批量的传输数据。当DMA控制核传输结束时,DMA控制核223发出中断请求信号,NIOSIICPU224可对其响应。DMA控制核223接口示意图参见图23.
采集的视频数据通过AVALONG总线端口传输到的DMA控制核223,通过NIOSIICPU224控制DMA控制核223批量传输视频数据到SDRAM控制核221。
串行接口(UART)控制核222为嵌入式系统和外部器件之间通信传输提供了方便。串行接口(UART)控制核222遵守RS-232协议时序经波特率分频提供了可调的波特率,奇偶校验位,停止位和数据位。串行接口控制核222接口示意图参见图24。
串行接口控制核222连接AVALON从接口,经由控制寄存器将并行数据转换成串行数据后上传至上位机;输入的串行数据经由控制寄存器转换为并行数据后传至AVALON从接口从而实现了串行接口通信。
采集控制核225主要由采集模块和FIFO传输模块构成,NIOSIICPU224控制采集控制核225中的采集模块采集视频处理21输出的数据,并将数据写入采集控制核225中的FIFO传输模块。
采集控制核225符合Avalon总线规范,该采集控制核225将视频处理21输出的的数据通过DMA控制核223完整送入SDRAM控制核,实现数据的存储和处理。
视频处理21输出的数据频率是27MHz,每帧图像数据为640×480×16bit像素。然而NIOSIICPU224工作时钟为50MHz,因此需要FIFO传输模块实现前后传输的连贯性。采集控制核225结构示意图参见图25。
采集控制核225包括采集模块和FIFO传输模块。采集模块实现视频处理21输出数据的采集,其输入接口有:写时钟(write_clk)、写使能(write_en)与16位数据总线(RGB[15:0])。挂在Avalon总线上的接口有数据输出总线(FIFO Q[15:0])、片选信号(chipselect)、读请求信号(read_req)、Avalon总线地址(address)、读空信号(read_empty)、读时钟(read_clk)。
使用视频处理21输出的同步信号II(RGB USEFUL)作为写使能信号,NIOSIICPU224控制采集控制核225中的采集模块向FIFO传输模块写数据。由于FIFO传输模块输出时钟大于写时钟,所以不会将FIFO传输模块写满,而只会读空FIFO传输模块。所以读请求信号(read_req)由Avalon总线发出,经读空信号(read_empty),由NIOSIICPU控制DMA控制核读取FIFO传输模块中数据的时间,在读空信号(read_empty)为低电平即FIFO传输模块为非空时开始读取FIFO传输模块中的数据。Avalon总线的从端口读取传输的数据时序参见图26,其中有效RGB数据信号(Data available)接FIFO传输模块输出的读空信号(read_empty)。FIFO传输模块仿真波形参见图27。
参见图26,当FIFO传输模块非空,即Data available为1时,Avalon总线的片选信号(chipselect)、读使能信号(read_en)同时为高,读取FIFO传输模块输出的数据;当FIFO传输模块为空时,即有效数据(Data available)为0时,Avalon总线的片选信号(chipselect)、读使能信号(read_en)同时为低,等待读取FIFO传输模块的数据,直到FIFO传输模块非空时,Avalon总线的片选信号(chipselect)、读使能信号(read_en)同时为高,继续读取数据。
VGA控制核226包括VGA时序发生器、FIFO存储模块其结构示意图参见图28。通过Avalon总线接口的RGB数字视频信号、同步信号II、输至VGA控制核226然后输出到视频显示信号转换4。
参见图29,当FIFO存储模块非满时,即读数据(read for data)为1时,Avalon总线的片选信号(chipselect),写信号(write)同时为高,FIFO存储模块读取Avalon总线输出数据,当FIFO存储模块写满时,即读数据(read for data)为0时,Avalon总线的片选信号(chipselect),写信号(write)同时为低,FIFO存储模块等待Avalon总线输出数据,直到FIFO存储模块非满时,Avalon总线的片选信号(chipselect),写信号(write)同时为高,FIFO存储模块继续读取Avalon总线输出数据。
由于NIOSIICPU224系统时钟为50MHz,而VGA显示时序发生输入时钟为25MHz,这需要FIFO存储模块起一个缓冲作用,而控制FIFO存储模块读写数据的是另一个外设——DMA控制核223。在NIOSII控制系统22中,NIOSIICPU224控制采集控制核225采集的视频处理21输出的数据,NIOSIICPU224控制SDRAM控制核221将采集的数据经由DMA控制核223存入SDRAM32。然后使用DMA控制核223提供数据传输通道,并且控制FIFO存储模块读写使能,使FIFO存储模块在50MHz和25MHz的时钟频率调配时数据不溢出。从FIFO存储模块以25MHz时钟读出的数据经过VGA时序发生器产生VGA需要的同步信号II、RGB数字视频信号、供VGA显示的时钟信号。
单独对VGA时序发生器进行仿真,其仿真后波形图参见图30。
步骤[2.2]中的具体实现方法如下,其流程示意图参见图31。
(1)初始化DMA控制核:按照设计要求配置DMA控制核的内部寄存器。
初始化DMA控制核223主要是配置DMA控制核223的寄存器参数。DMA控制核223共有5个寄存器。分别是:
状态寄存器:寄存器的每位代表DMA控制核223当前传输状态,可通过读该寄存器值判断DMA控制核223的状态,该寄存器的值不能写入。状态寄存器包括传输完成标志(done)、忙碌标志(busy)、DMA控制核223传输完毕是由于读端口发出包结束事件(reop)、DMA控制核223传输完毕是由于写端口发出包结束事件(weop)、DMA控制核223传输完毕是由于传输字节数满足指定长度(len)。
读地址寄存器:向此寄存器写入DMA控制核223读取外端口或SDRAM芯片的地址。
写地址寄存器:向此寄存器写入DMA控制核223输出外端口或SDRAM芯片的地址。
传输字节长度寄存器:规定DMA控制核223传输的总字节长度,DMA控制核223每传输一字节寄存器值减1,直到寄存器值为0时,DMA控制核223传输结束。
控制寄存器:控制DMA控制核223传输数据的方式。控制寄存器每位的名称及其功能描述见表3,DMA控制核223的传输方式、传输方向、传输性质(地址的固定性)及其他使能均由控制寄存器控制。
表3
  位序号   位名称   功能描述
  0   BYTE   字节传输
  1   HW   半字传输
  2   WORD   字传输
  3   GO   DMA使能
  4   LEN   中断使能
  5   REEN   读端包结束使能
6 WREN 写端包结束使能
  7   LEEN   指定长度结束
  8   RCON   固定地址读
  9   WCON   固定地址写
初始化DMA控制核223首先将控制寄存器和状态寄存器清零,向长度寄存器(LENGTH)写入需要传输的数据长度,接着配置主读端口开始地址、主写端口的开始地址,最后配置控制寄存器,使DMA控制核223处于从固定地址读数据、使能DMA控制核223传输、半字节传输状态。此功能是从FIFO传输模块中读取数据传输到SDRAM32中。因此,在该模块中,DMA控制核223的工作是将长度为640×480×16的一帧图片数据从主读端口(地址为0x00c010b8)写入主写端口(SDRAM的指针基地址)。对照表3将控制寄存器配置成394,完成采集数据的存储。
配置完DMA控制核223的传输参数后,便可控制DMA控制核223读取数据。DMA控制核223开始从FIFO传输模块读数据的使能信号由NIOSII控制系统22的写控制开关和有效像素信号提供。一旦使能DMA控制核223,DMA控制核223自行传输,NIOSIICPU224可处理别的事务,只要处理DMA控制核223何时终止传输即可。在软件里通过DMA控制核223的使能信号调用DMA控制核223传输函数,每使能一次DMA传输,可传送一帧图像数据存入系统主内存。
若读取存放于SDRAM32的多帧图像数据,用NIOS IICPU224直接调度传输会耗费太多NIOSIICPU224资源且不宜控制,而DMA控制核223可实现大量数据的传输,控制简单,准确率高。
(2)使能DMA控制核223
对DMA控制核223进行使能以判定DMA控制核223能否传输数据;
(3)数据存储
(3.1)判定FIFO传输模块是否为空:
若FIFO传输模块为空,则执行DMA控制核223等待。
若FIFO传输模块为非空,则DMA控制核223控制FIFO传输模块将图像数据存储至SDRAM32。
(3.2)判定存储至SDRAM32的图像数据是否为一帧,当一帧数据未存完,则返回至步骤(3.1);
(3.3)当一帧数据已存完,判断是否有下一帧数据等待存储;当没有下一帧数据等待存储时,则结束存储;
(3.4)当有下一帧数据等待存储时,判定SDRAM32是否存满,若SDRAM32未存满则返回至步骤(1);若SDRAM32已存储满,则结束数据存储。
DMA控制核223传输过程具体实现过程如下:
a)NIOSIICPU224通过其控制端口(control port)配置DMA控制核223,准备启动DMA控制核223传输。
b)NIOSIICPU224启动DMA控制核223,DMA控制核223进行传输,即DMA控制核223开始在没有NIOSIICPU224干涉的情况下传送数据。
c)DMA控制核223的主写端口从读地址读取数据,然后向FIFO传输模块依序写入数据,DMA控制核223的主写端口从FIFO存储模块中读取数据并向目标地址写入数据;在传输过程中可以不需要NIOSIICPU224干预,但NIOSIICPU224可以终止当前的DMA控制核223传输过程。
d)当传送数据达到指定长度或者遇到结束符(EOP),DMA控制核223传输结束,DMA控制核223将产生一个DMA控制核223传输结束中断。
图像数据输出的具体实现方法如下:图像显示流程示意图参见图32。
1)按照设计要求配置DMA控制核223的内部寄存器,对DMA控制核223进行初始化;
初始化配置DMA控制核223的控制寄存器,状态寄存器,中断函数,及读写地址,具体配置如下所示:
void init_dma()
{alt_irq_register(DMA_0_IRQ,NULL,DMA_0_isr);
 IOWR_ALTERA_AVALON_DMA_CONTROL(DMA_0_BASE,0x00);
 IOWR_ALTERA_AVALON_DMA_STATUS(DMA_0_BASE,0x00);
 IOWR_ALTERA_AVALON_DMA_LENGTH(DMA_0_BASE,LENTH);
IOWR_ALTERA_AVALON_DMA_RADDRESS(DMA_0_BASE,FRAME_BUFFER[0]);
 IOWR_ALTERA_AVALON_DMA_WADDRESS(DMA_0_BASE,0x00C010B4);
 IOWR_ALTERA_AVALON_DMA_CONTROL(DMA_0_BASE,730);
}
2)对DMA控制核223进行使能以判定DMA控制核223能传输数据;
3)应用DMA控制核223中断将图像数据写入FIFO存储模块
3.1)判定FIFO存储模块是否为满?
若FIFO存储模块为满,则执行DMA控制核223等待;
若FIFO存储模块为非满,则DMA控制核223控制FIFO存储模块读取SDRAM32中的数据并将其写入FIFO存储模块;
3.2)判定是否刷新FIFO存储模块,当一帧数据未写完,则返回至步骤3.1);
3.3)当一帧数据已写完,刷新FIFO存储模块,判断是否有下一帧数据等待写入;当有下一帧数据等待写入时,则返回至步骤1);
3.4)当没有下一帧数据等待写入时,判定是否停止向FIFO存储模块中写入数据;当不停止向FIFO存储模块中写入数据时,返回至步骤1),当停止向FIFO存储模块中写入数据时,则结束写入数据至FIFO存储模块。
与采集图像数据到SDRAM32方式不同,DMA控制核223传输数据到VGA要保持图像静止显示或连续幻灯片播放,用到了DMA控制核223中断函数。其作用就是要保持图片数据发送的连续性。当DMA控制核223发送完一场数据,便产生中断信号,使DMA控制核223的状态寄存器的值发生改变,随即进入中断函数,发送另一场数据。这里碰到的问题是DMA控制核223一旦进入中断函数,为保持画面的稳定就要不间断的传输数据,占用数据总线,若NIOSIICPU224处理别的数据,就会对DMA控制核223传输数据总线产生影响,画面就会产生抖动。为解决此问题只能使NIOSIICPU224在显示静态画面时,处于等待状态。等结束显示静态画面信号有效时,NIOSIICPU224才能正常工作。
串行接口(UART)控制核222实现图像数据传输具体流程参见图33。和DMA控制核223传输设置相似,通过设置串行接口(UART)控制核222相应的寄存器,执行不同的串行接口(UART)控制核操作,但注意的是串行接口(UART)控制核222传输的是字节,而存储的数据格式是字型。根据表4串行接口(UART)控制核222的内部寄存器说明,通过配置相应的寄存器可以使能、结束、初始化串行接口(UART)控制核222的传输。
表4
通过配置串行接口(UART)控制核222的状态寄存器和控制寄存器结束串行接口(UART)控制核222的传输。
变量赋初值,状态,控制寄存器的准备接收和准备发送位置‘1’,等待进入串行接口(UART)控制核222中断。进入串行接口(UART)控制核222中断后,依据串行接口31(UART)协议进行数据传输,当一帧图像数据传送完毕时,结束串行接口(UART)控制核222传输,跳出串行接口(UART)控制核222中断。

Claims (9)

1.一种基于NIOS II的视频处理方法,其特征在于,该方法包括以下步骤:
[1.1]解码:将BT656视频信号以通过BT656解码(211)解码为隔行的YCbCr数字视频信号及隔行的同步信号I;
[1.2]去隔行:将隔行的YCbCr数字视频信号及隔行的同步信号I通过去隔行(212)转换为逐行的YCbCr数字视频信号及逐行的同步信号I;
[1.3]视频缩放:将逐行的YCbCr数字视频信号以及逐行的同步信号I通过视频缩放(213)至YCbCr转RGB(214),转换为RGB数字视频信号;
[1.4]时序调配:将RGB数字视频信号以及NIOS II配置时钟信号通过VGA时序发生(215)消隐调配为RGB数字视频信号、同步信号II以及供VGA显示的时钟信号;
[1.5]视频缩放:根据VGA时序发生(215)输出的同步信号II、NIOS II控制系统(22)提供的配置缩放参数、去隔行(212)输出的同步信号I,将去隔行(212)输出的逐行的YCbCr数字视频信号通过视频缩放(213)缩放为YCbCr数字视频信号;
步骤[1.5]具体的实现方法为:
1)计算插值步长
视频缩放(213)根据输入的同步信号I和同步信号II计算插值步长,即计算:插值步长=同步信号I/同步信号II得插值步长;
1.1)确定新像素点X插值的位置
根据插值步长来确定新像素点X插值位置;
2)计算当前像素点X的非线性插值结果x_lans
以2n个原始像素点为方阵式区域,形成X1~X2n个像素点,得到X位置的像素值即非线性插值结果x_lans,其中n=4;
3)确定当前像素点的线性插值结果x_bi;
4)通过自适应判断确定最终插值结果;
[1.6]数字视频信号格式转换:将缩放的YCbCr数字视频信号通过YCbCr转RGB(214)转换为RGB数字视频信号;
[1.7]时序调配:RGB数字视频信号以及NIOS II配置时钟信号通过VGA时序发生(215)消隐调配为RGB数字视频信号、同步信号II以及供VGA显示的时钟信号;将RGB数字视频信号、同步信号II以及供VGA显示的时钟信号一路输至MUX选择(216),另一路经NIOS II控制系统22输至MUX选择(216);
[1.8]信号选择:VGA时序发生(215)输出的RGB数字视频信号、同步信号II以及供VGA显示的时钟信号直接经MUX选择(216)输出供VGA显示,或VGA时序发生(215)输出的RGB数字视频信号、同步信号II以及供VGA显示的时钟信号经NIOS II控制系统(22)控制后再经MUX选择(216)输出供VGA显示。
2.根据权利要求1所述的一种的视频处理的方法,其特征在于,所述步骤2)的具体实现方法是:
2.1)计算方阵的列缩放系数para_v、方阵的行缩放系数para_h、应用Lanczos非线性插值函数,
Figure FSB00000664817000021
来确定方阵的列缩放系数para_v以及方阵的行缩放系数para_h;
2.2)确定查找表
将步骤2.1)所得的方阵的列缩放系数para_v、方阵的行缩放系数para_h写入查找表;
2.3)确定每列的垂直向系数
查找步骤2.2)中所得查找表的方阵的列缩放系数para_v,计算归一化的系数的和sum1以及每列的垂直向系数;
归一化的系数的和sum1为方阵的列缩放系数para_v之和;
计算:垂直向系数X_m1=(X1*para_v1+X5*para_v2+X9*para_v3+X13*para_v4)/sum1;
垂直向系数X_m2=(X2*para_v1+X6*para_v2+X10*para_v3+X14*para_v4)/sum1;
垂直向系数X_m3=(X3*para_v1+X7*para_v2+X11*para_v3+X15*para_v4)/sum1;
垂直向系数X_m4=(X4*para_v1+X8*para_v2+X12*para_v3+X16*para_v4)/sum1;
则得每列的垂直向系数;
2.4)确定最终X位置的非线性插值结果X_lans
查找步骤2.2)中所得查找表的方阵的行缩放系数para_h计算水平向归一化的系数的和sum2;
水平向归一化的系数的和sum2为方阵的行缩放系数para_h之和;
计算:X_lans=(X_m1*para_h1+X_m2*para_h2+X_m3*para_h3+X_m4*para_h4)/sum2,得非线性插值结果X_lans;
2.5)过冲和下冲控制
2.5.1)选取方阵相邻列的原始像素点位置的最大值XL_max以及方阵相邻列的原始像素点位置的最小值XL_min;
2.5.2)根据设计要求选择n位过冲控制门限OT_ctrl和n位下冲控制门限UT_ctrl,其范围是0~2n-1;
2.5.3)判定过冲和下冲控制以确定非线性插值结果X_lans1;
2.5.3.1)将经步骤2.4)所得的非线性插值结果X_lans与原始像素点位置的最大值XL_max进行比较后,控制过冲,确定非线性插值结果X_lans1;
2.5.3.2)将经步骤2.4)所得的非线性插值结果X_lans与原始像素点位置的最小值X_min进行比较后,进行下冲控制,确定非线性插值结果X_lans1。
3.根据权利要求1或2所述的一种的视频处理的方法,其特征在于,所述步骤3)的具体实现方法是:
3.1)确定待插值的水平左右点
计算:
待插值的水平左点LL1=[X1*N_ctrl1+X2*(2n-N_ctrl1)]/2n
待插值的水平右点LR1=[X4*N_ctrl1+X3*(2n-N_ctrl1)]/2n
待插值的水平左点LL2=[X5*N_ctrl1+X6*(2n-N_ctrl1)]/2n
待插值的水平右点LR2=[X8*N_ctrl1+X7*(2n-N_ctrl1)]/2n
待插值的水平左点LL3=[X9*N_ctrl1+X10*(2n-N_ctrl1)]/2n
待插值的水平右点LR3=[X12*N_ctrl1+X11*(2n-N_ctrl1)]/2n
待插值的水平左点LL4=[X13*N_ctrl1+X14*(2n-N_ctrl1)]/2n
待插值的水平右点LR4=[X16*N_ctrl1+X15*(2n-N_ctrl1)]/2n
其中n位门限N_ctrl1选取范围为0~2n-1,得待插值的水平左右点;
3.2)确定线性插值点
计算:
线性插值点X_l1=LL1*(1-x_offset)+LR1*x_offset,
线性插值点X_l2=LL2*(1-x_offset)+LR2*x_offset,
线性插值点X_l3=LL3*(1-x_offset)+LR3*x_offset,
线性插值点X_l4=LL4*(1-x_offset)+LR4*x_offset,
其中x_offset为水平向偏移量,得线性插值点;
3.3)确定垂直方向的上点X_UP,垂直方向的下点X_DN
计算:
垂直方向的上点X_UP=[X_l1*N_ctrl1+X_l2*(2n-N_ctrl1)]/2n
垂直方向的下点X_DN=[X_l3*N_ctrl1+X_l4*(2n-N_ctrl1)]/2n
得垂直方向上的点X_UP及垂直方向的下点X_DN;
3.4)得到线性插值结果X_bi
计算:
X_bi=X_UP*(1-y_offset)+X_DN*y_offset,其中y_offset为垂直向偏移量,得线性插值结果X_bi;
4.根据权利要求3所述的一种的视频处理的方法,其特征在于,所述步骤4)的具体实现方法是:
将线性插值结果X_bi与非线性插值结果X_lans1进行对比以确定最终插值结果;
4.1)选取原2n个像素点的位置的最大值Ymax,选取原2n个像素点的位置的最小值Ymin;
4.2)将原2n个像素点的位置的最大值Ymax与原2n个像素点的位置的最小值Ymin的差值和n位门限N_ctrl2进行比较,确定插值结果。
5.根据权利要求4所述的一种的视频处理的方法,其特征在于,所述步骤2.1)的具体实现方法为:
计算方阵的列缩放系数para_v=sinc(距X位置的垂直向行数-X)*sinc((距X位置的垂直向行数-X)/a),其中X取0/256~256/256中的任意值,a=n/2,则得方阵的列缩放系数;
计算方阵的行缩放系数para_h=sinc(距X位置的水平向列数-X)*sinc((距X位置的水平向列数-X)/a),其中X取0/256~256/256中的任意值,a=n/2,则得方阵的行缩放系数。
6.根据权利要求5所述的一种的视频处理的方法,其特征在于,所述步骤2.5.3.1)的具体实现方法为:
2.5.3.1.1)如果X_lans>X_max,则非线性插值结果X_lans1=X_lans-(X_lans-X_max)*OT_ctrl/2n
当X_lans1>255时,则非线性插值结果X_lans1值确定为X_lans1=255;
2.5.3.1.2)如果非线性插值结果X_lans<原始像素点位置的最小值X_min,则非线性插值结果X_lans1=X_lans+(X_min-X_lans)*UT_ctrl/2n;当非线性插值结果X_lans1<0时,则非线性插值结果X_lans1值确定为X_lans1=0。
7.根据权利要求6所述的一种的视频处理的方法,其特征在于,所述步骤4.2)的具体实现方法是:若原2n个像素点的位置的最大值Ymax-原2n个像素点的位置的最小值Ymin>n位门限N_ctrl2,则插值结果为线性插值X_bi;若原2n个像素点的位置的最大值Ymax-原2n个像素点的位置的最小值Ymin<n位门限N_ctrl2,则插值结果为非线性插值结果X_lans,其中n位门限N_ctrl2的取值范围为0~2n-1。
8.根据权利要求7所述的一种的视频处理的方法,其特征在于,所述步骤[1.1]中的去隔行(212)采用双口RAM来实现。
9.根据权利要求8所述的一种的视频处理的方法,其特征在于,所述步骤[1.6]中的YCbCr转RGB(214)应用矩阵 R G B = 1 1.403 0 1 - 0.714 - 0.344 1 0 1.770 × Y Cr Cb 来实现。
CN 200910254404 2009-12-18 2009-12-18 一种基于niosⅱ的视频处理方法 Expired - Fee Related CN101742316B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910254404 CN101742316B (zh) 2009-12-18 2009-12-18 一种基于niosⅱ的视频处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910254404 CN101742316B (zh) 2009-12-18 2009-12-18 一种基于niosⅱ的视频处理方法

Publications (2)

Publication Number Publication Date
CN101742316A CN101742316A (zh) 2010-06-16
CN101742316B true CN101742316B (zh) 2012-06-27

Family

ID=42465087

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910254404 Expired - Fee Related CN101742316B (zh) 2009-12-18 2009-12-18 一种基于niosⅱ的视频处理方法

Country Status (1)

Country Link
CN (1) CN101742316B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103384335B (zh) * 2012-08-16 2016-04-06 深圳市捷顺科技实业股份有限公司 一种视频格式转换方法、系统及装置
CN106126380A (zh) * 2016-06-21 2016-11-16 福州瑞芯微电子股份有限公司 一种基于fpga的lvds接口测试方法及系统
CN109688360A (zh) * 2018-12-07 2019-04-26 成都东方盛行电子有限责任公司 一种隔行视频缩放采样方法

Also Published As

Publication number Publication date
CN101742316A (zh) 2010-06-16

Similar Documents

Publication Publication Date Title
CN102801912A (zh) 一种红外图像处理芯片及处理方法
CN101516015B (zh) 多路视频数据采集处理和传输的方法
CN107249101A (zh) 一种高分辨率图像采集与处理装置
US20120098864A1 (en) System and method for downsizing video data for memory bandwidth optimization
US20160227160A1 (en) Image signal processor and devices including the same
CN103680379B (zh) 显示驱动集成电路及其显示数据处理方法
CN105721818A (zh) 一种信号转换方法及装置
CN105208275A (zh) 一种支持流数据片内实时处理的系统及设计方法
CN101742316B (zh) 一种基于niosⅱ的视频处理方法
CN102608579B (zh) 一种sar数据接收处理系统及方法
CN106471797A (zh) 用于加速相机控制算法的平台架构
US5058041A (en) Semaphore controlled video chip loading in a computer video graphics system
CN101742264A (zh) 一种基于nios ii的视频监视方法
CN109873998B (zh) 基于多层次引导滤波的红外视频增强系统
CN103826072A (zh) 一种小型红外成像系统
CN111145133A (zh) 基于zynq的红外和可见光同光轴图像融合系统及方法
CN101562748B (zh) 面向视频处理的多数字信号处理器调度优化方法
CN202738031U (zh) 一种基于fpga的视频图像采集系统
US7511713B2 (en) Method and apparatus for high rate concurrent read-write applications
CN108495070B (zh) 实现数字视频单像素输入输出多像素处理的方法及装置
He et al. FPGA-based high definition image processing system
CN115002304A (zh) 一种视频图像分辨率自适应转换装置
CN101252665B (zh) 接口装置
CN203340174U (zh) 一种超宽分辨率vga信号采集处理系统
CN109688314B (zh) 低延时少缓存且数据输出方式可控的摄像头系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Tang Xiaohua

Inventor after: Wang Huapeng

Inventor after: Shan Haozhe

Inventor after: Tang Xiaofang

Inventor after: Zhang Xin

Inventor after: Tang Kun

Inventor after: Pang Shengli

Inventor after: Jiang Li

Inventor before: Tang Xiaohua

Inventor before: Wang Huapeng

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: TANG XIAOHUA WANG HUAPENG TO: TANG XIAOHUA WANG HUAPENG SHAN HAOZHE TANG XIAOFANG ZHANG XIN TANG KUN PANG SHENGLI JIANG LI

C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120627

Termination date: 20121218