JM86
80000
-/2024+
原装现货
JM86
73828
SMD/21+
低价出售原装现货可看货假一罚十
JM86
80000
-/23+
原装现货
JM86
80000
-/23+
原装现货
JM86
80000
-/23+
原装现货
JM86
80000
-/23+
原装现货
JM860019
28000
-/-
原装 部分现货量大期货
JM8611L-N0305-4H-W
17500
NA/21+
全新原装公司现货可免费送样可含税可BOM配单-终端享
JM8611L-N0305-4H-W
3000
-/-
-
的dct交流系数,为符号函数。本方案采用在最低有效位嵌入水印模式,因此不需要额外的比特进行编码。图1即为帧内宏块嵌入水印模式的流程图。 由于h.264标准采用了帧内和帧间预测来参与对某一宏块的编解码。为了保证编解码端参与预测的数据一致性(因为解码端不可能使用未嵌入水印的原始数据参与预测),避免数据失配造成图像质量恶化,水印嵌入操作必须放到运动补偿循环内,即量化之后、熵编码之前进行,如图2所示。 图2 数字水印检测编码器的实现流程图 实验结果 本文的编解码系统以h.264的标准测试模型jm86为测试平台,在编码端加入了数字水印,加入起始点为dct系数的第6个数。本文采用vceg模拟信道传输模型来模拟码流错误。 图3为取标准测试集foreman.yuv的前30帧,在码率为128kbps、逐帧编码条件下,对嵌入数字水印和未嵌入数字水印这两种情况下在没有传输错误时重建图像psnr值的对比图。由图可见,水印对图像质量的影响很小。 表1和表2为标准测试序列在不同编码比特率下对两种错误检测方案的对比。每个序列选取30帧,图像格式为qcif(采样比率为4:2:0)。首先用嵌入水印后的编码器得到
块信息的冗余操作去除。同时,获取水平方向的滤波强度的函数调用getneighbour时,getneighbour参数的取值分别是luma为定值1,xn是[-1,3,7,11],yn是[0-15],此时函数getneighbour中的很多if-else语句是无效的判断,这些冗余判断占用了大量的时钟周期。此外,对各个分支的概率进行分析,将概率最大的判断分支放在前面执行,也提高了函数执行的速度。 以下是精简后的getneighbour函数代码,仅有数条语句,大大减少了运算量。 c) 在jm86参考代码中对于一个亮度宏块的16×4共64条像素边缘的bs值逐条获取,而通过对bs获取条件进行分析可知,处于两个子块间垂直边缘或水平边缘的4条像素边缘的bs值分别是相等的。因此,对一条边缘仅要进行获取第1、5、9、13条像素边缘的bs值,再赋给相应的其他像素边缘即可,由于获取bs值的操作位于循环中,需要经过许多判断及运算,通过这一改进,大大简化了计算复杂度。 d) 参考代码中的循环内部有很多语句与循环参数无关,可以将这些语句调整至循环外部,避免了冗余计算。 3.2.3 利用bpp分块
二选一电路的简单组合逻辑实现,而me的实现较复杂,需查找h.264标准中定义的运动矢量、量化参数的映射表格,设计中采用rom结构实现查表。 综合、仿真结果与性能分析 在上述硬件架构下,使用verilog hdl进行exp-golomb解码器电路设计,并在xilinx公司的ise 8.2开发环境下进行了功能验证,选择virtex 2系列的xc2v250器件。使用synplify 7. 7软件进行逻辑优化与综合,系统时钟频率可达104mhz。ise完成布局布线后,通过modelsim 5.8调用jm86生成的测试向量进行后仿真,最后与软件的计算结果相比较,验证了设计的正确性。 使用synopsys公司的design compiler工具在0.18mm的simc cmos工艺条件下,对rtl代码进行综合优化,时钟频率最高可以达到200mhz。通过设置不同的面积、时序及功耗约束条件,缩短关键路径的延时,综合出等效门数2276门、时钟频率为162mhz的最优设计。在此工作频率下,该exp-golomb硬件解码器电路解出一个句法元素只需耗用单个时钟周期,因此本设计可满足h.264高清晰度视频实时解码
冗余操作去除。同时,获取水平方向的滤波强度的函数调用getneighbour时,getneighbour参数的取值分别是luma为定值1,xn是[-1,3,7,11],yn是[0-15],此时函数getneighbour中的很多if-else语句是无效的判断,这些冗余判断占用了大量的时钟周期。此外,对各个分支的概率进行分析,将概率最大的判断分支放在前面执行,也提高了函数执行的速度。 以下是精简后的getneighbour函数代码,仅有数条语句,大大减少了运算量。 c) 在jm86参考代码中对于一个亮度宏块的16×4共64条像素边缘的bs值逐条获取,而通过对bs获取条件进行分析可知,处于两个子块间垂直边缘或水平边缘的4条像素边缘的bs值分别是相等的。因此,对一条边缘仅要进行获取第1、5、9、13条像素边缘的bs值,再赋给相应的其他像素边缘即可,由于获取bs值的操作位于循环中,需要经过许多判断及运算,通过这一改进,大大简化了计算复杂度。 d) 参考代码中的循环内部有很多语句与循环参数无关,可以将这些语句调整至循环外部,避免了冗余计算。 3.2.3 利用bpp分块处理技术
去除。同时,获取水平方向的滤波强度的函数调用getneighbour时,getneighbour参数的取值分别是luma为定值1,xn是[-1,3,7,11],yn是[0-15],此时函数getneighbour中的很多if-else语句是无效的判断,这些冗余判断占用了大量的时钟周期。此外,对各个分支的概率进行分析,将概率最大的判断分支放在前面执行,也提高了函数执行的速度。 以下是精简后的getneighbour函数代码,仅有数条语句,大大减少了运算量。 c) 在jm86参考代码中对于一个亮度宏块的16×4共64条像素边缘的bs值逐条获取,而通过对bs获取条件进行分析可知,处于两个子块间垂直边缘或水平边缘的4条像素边缘的bs值分别是相等的。因此,对一条边缘仅要进行获取第1、5、9、13条像素边缘的bs值,再赋给相应的其他像素边缘即可,由于获取bs值的操作位于循环中,需要经过许多判断及运算,通过这一改进,大大简化了计算复杂度。 d) 参考代码中的循环内部有很多语句与循环参数无关,可以将这些语句调整至循环外部,避免了冗余计算。 3.2.3 利用bpp分块处理