当前位置:首页 > 嵌入式 > 嵌入式硬件

航空图像由于可以提供大量丰富的直观信息,因而在军事侦察、抢险救灾、气象探测等领域得到了广泛应用。  航空图像由于是远距离成像,所以分辨率较低且数据量很大。如果要把拍摄的航空图像实时回传,就必须对其进行压缩编码。由于图像压缩算法复杂,因此决定了回传系统必须采用高速数字信号处理芯片来实现。dsp作为当前运算性能最高的信号处理芯片,成为实现系统方案的最佳选择。  目前进行图像压缩的方法很多,主要集中在小波变换、分形压缩、神经网络编码等几个领域。其中小波变换编码凭借其优良的时频特性和多分辨率特性成为最热门的研究方向之一,并在图像压缩领域占据了主导地位。但传统的小波变换计算复杂,且都是在频域进行。1994年,w.sweldens提出了一种新的小波构造方案——提升小波。它可以进行原位运算,硬件实现时较为容易,且可以节省内存空间,这一点对于提高系统性能、降低系统成本非常重要;和传统的小波变换相比,它可以把计算复杂度减小一半,运算速度非常快;此外,提升方案适合用simd(单指令多数据流)来实现,这和dsp的多总线读写结构是一致的[1]。鉴于提升方案的诸多优点,本系统在具体实现时其小波变换部分采用提升算法来实现。  shaprio于1992年提出了零树编码方案,它采用全新的零树结构来表征小波系数,使小波变换应用于图像压缩的优越性得到了充分的体现[2]。由于零树法高效的性能,人们在其基础上又提出了各种改进方法。1996年,said和pearlman提出了基于等级树集合分割的算法——spiht算法[3]。该算法也是基于零树思想,但采用集合划分来进行编码,在系数组织方面更有效,压缩效率也更高。spiht算法已经成为公认的编码效率最高的算法之一,即使不采用算术编码进行熵编码,编码效率仍然很高,优于前面的零树编码。因此,本系统在具体实现时采用spiht算法对小波系数进行编码。  1 软件实现  1.1提升小波的实现  由于图像的非平稳统计特性,任何一组小波基都不可能同时最优地刻画所有的图像特征,因此存在小波基的选取问题。从熵、峰-峰比ppr、广义编码增益、抗误差性能分析等几个方面综合比较,本系统采用antini9/7作为提升方案的小波基[4]。该小波提升方案的实现过程如下:  antini9/7的分析滤波器为:  首先对图像进行行变换,然后进行列变换,最后对图像系数按图1所示的规则进行重新排列。  1.2 边界处理问题  在图像压缩的工程应用时,边界处理问题是关键技术之一。如果处理不好,信号将不能完全重构,会直接影响重构图像的质量。对此,提升方案原文中介绍的做法是采用插值细分算法,在边界点重新计算滤波器的系数值,这样就无需对信号进行边界处理[5]。但通过对插值细分算法实现过程的深入研究发现,这样会带来浮点计算等额外的计算量,并且破坏了提升方案原本多读单写的结构特点,使边界处理问题变得非常复杂。此外,对于二维图像处理而言,无需考虑不规则面的情况,在边界点的处理上可以采用相对简单的边界延拓法。经过比较发现,采用边界延拓法处理问题更为简单,不仅计算量大大减少,而且保留了多读单写的结构,效果也不错。因此,本系统在具体实现时用边界延拓法代替提升方案原文中的插值细分算法,实际使用的是全对称延拓方式。  1.3 spiht算法的具体实现  对spiht算法进行编程实现时,为了提高执行效率,对具体实现过程做了部分改进。  假设lis为非显著点集链表,每个链表的元素为坐标值(i,j)和类型标志;lip为非显著点链表,每个链表的元素为坐标值(i,j);lsp为显著点链表,每个链表的元素为坐标值(i,j)。  用c语言对该算法进行实现时,lip和lsp结构存储了像素点在图像中的坐标位置,根据它可从图像中检索出相应的像素值。对于c6xdsp,这样做需要用多条取数指令辗转访问内存才能获得像素值。但经过分析知道,在编码程序中,仅当对lis链表中元素进行零树判断和子节点处理时才需要根据坐标进行像素点访问,像素点被放入lip或者lsp后,只需对像素值进行访问、修改,没有必要再通过坐标进行像素值的访问,可直接在lip和lsp结构中存储像素值,从而提高编码速度。  在解码时,因为在lip和lsp的扫描过程中需根据输入位流的0、1值对像素值进行更新,所以必须存储像素点的坐标,由于图像可以改为用一维线性数组存储,故只需在lip和lsp中存储像素点在图像中的偏移。  1.4 试验结果  采用标准图像zelda对本系统算法和shaprio的零树法(ezw)进行测试比较。小波变换分解级数采用六级,试验结果见表1。  从表1可以看出,本系统算法重构图像的信噪比比零树法平均高0.3db,其性能的优越性是显而易见的。  2 软件优化  本系统算法采用c语言编程实现后,首先在ateme公司的nvdk6416开发板上进行算法调试和代码优化,主要采用如下优

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

hmi是Human Machine Interface 的缩写,"人机接口",也叫人机界面。人机界面(又称用户界面或使用者界面)是系统和用户之间进行交互和信息交换的媒介, 它实现信息的内部形式与人类可以接受形式之间的转换...

关键字: HMI 人机界面 系统

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

嵌入式开发作为信息技术的关键支柱,在全球数字化转型浪潮中扮演着无可替代的角色。从传统的嵌入式微控制器到如今先进的片上系统(SoC),再到与云计算、人工智能深度融合的智能终端,嵌入式系统的演进与发展始终紧跟时代脉搏。本文将...

关键字: 嵌入式开发 智能应用
关闭
关闭