EDN China > 设计实例 > 医疗电子 > 视频诊断与监控 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 基于ARM7的无线内窥系统设计

来源:单片机及嵌入式系统应用/作者:华中科技大学 张小田 萧奋洛 刘文予?? 2008年03月28日 ?? 收藏0

  2 ARM与摄像头接口设计

  系统采用美国Omni Vision公司(简称为“OV公司”)开发的CMOS彩色图像传感器芯片。该芯片将CMOS光感应核与外围支持电路集成在一起,具有可编程控制与视频模/数混合输出等功能。

  (1)SSCB配置

  为使芯片正常上作,需要通过SCCB总线来完成配置工作。SCCB总线是OV公司定义的一套串行总线标准,与I2C总线类似。配置时,主要是写OV7660的内部寄存器,使芯片输出格式正确的彩色图像数据。OV7660共有100个左右的寄存器可以配置,其数据手册并未提供可用的配置值。系统调试过程中,通过各种测试,测出以下一系列配置数据,可使OV7660输出颜色丰富的图像,如表l所列。

推荐OV7660的配置表

  (2)图像数据访问

  AT91R40008不带摄像头接口,因此系统增加了一块CPLD实现CMOS摄像头的时序,如图3所示。ARM只须访问SRAM就可以访问图像数据。CPLD确保ARM的总线每次都只挂接一块有完整图像的SRAM。

ARM与CPLD接口设计

  3 ARM与蓝牙接口设计

  蓝牙是无线数据和语音传输的开放式标准。它将各种通信设备、计算机及其终端设备、各种数字系统,甚至家用电器,采用无线方式连接起来。为了优化系统设计,我们采用性价比高的CSR BC2实现蓝牙无线串口。CSRBC2是一款高度整合的模块级蓝牙芯片,主要包括:基带控制器、2.4~2.5GHz的数字智能无线电和程序数据存储器。通过该模块,系统可以提供无线标准UART接口,支持多种波特率(如9.6 kbps、19.2 kbps、38.4 kbps、57.6kbps、115.2 1kbps、230.4 kbps、460.8 kbps、92l.6 kbps)。本系统经过测试发现,当速率为460.8 kbps时,蓝牙芯片能够正常工作;而在921.6kbps时,会有很高的误码率。蓝牙模块接口电路如图4所示。

蓝牙模块接口电路

  4 JPEG-LS图像编码

  系统采集的原始图像相关性大、数据量大,需要进行图像压缩。医学图像要求将图像质量放在首位,因此必须采用无损压缩算法。本系统采用静态图像无损压缩技术JPEG-LS,它是目前无损压缩算法中性能较好的一种算法。JPEG-LS是ISO/ITU组织提出的最新的连续静态图像近无损压缩标准。该标准采用LOCO-I(Low Complexity Lossless Compression for Images)核心算法,建立简单的上下文模型,在低复杂度的情况下实现了高压缩率;同时,算法对图像逐行进行压缩,降低了系统对图像缓冲区的要求。

  4.1 JPEG-LS工作原理简介

  如图5所示,JPEG-LS的编码过程主要包括预测、上下文建模和熵编码。核心算法LOCO-I采用邻域非线性预测和Golomb熵编码。

JPEG-LS的编码过程

点击看原图

  上下文建模是JPEG-LS编码的基础,使用的建模方法是基于对上下文的认识。上下文首先根据图5中a、b、c、d处像素值决定对x处像素足采用常规模式编码还是采用游程模式编码。当从上下文估计的连续像素在近似无失真编码要求的容限内几乎完全相同时,选择游程模式;否则,选择常规模式。

  常规模式下首先完成预测。预测器对位于a、b、c等3个邻近像素的重建组值Ra、Rb、Rc进行综合,形成x像素的预测值Px,即:

程序

  预测误差是x像索的实际值和预测值的差分。通过一个与上下文有关的项对预测误差进行修正,以补偿预测中的系统偏移。如果采用近无损编码,则要对预测误差进行量化,所允许的最大误差用一个“NEAR"参数表示。对已修正的预测误差进行Golomb编码。Golomb编码相当于几何分布下的Huffman编码。它依赖于上下文,而前面编码的预测误差也是以相同的上下文为基础。

  为进一步提高数据压缩效率,JPEG-LS引入了游程模式。此时编码过程直接跳过预测和误差编码程序:编码器从x处开始对像素值和a处像素重建值相同的一系列连续像素进行计数,即统计游程的长度。当遇到一个具有不同值的像素或当前行的行尾时,游程终止。该游程长度经过一个专门的性能更好、更适用的Golomb编码扩展程序来编码。

  4.2 JPEG-LS的移植问题

  本系统使用HP实验室提供的开源JPEG-LS开发包。完整的JPEG-LS开发包支持多种颜色模型,如多平面压缩、逐行或者逐点等压缩方式。本系统考虑到ARM系统资源的限制,只裁减了其中的逐行单文件压缩方式。原始开发包运行在Linux或者Windows平台上,移植过程最主要的工作包括3点。

  ①裁减不必要的功能,如原始开发包中对多图像编码的支持。

  ②针对系统设计移植后的接口,如本模块移植后,只提供以下几个接口:

  • jls_global_init,全局初始化函数,计算查询表等,只需要启动时调用一次;

  • jls_image_init,每帧图像开始压缩时都要调用一次的初始化;

  • jls_encode_one_line,压缩一行图像。

  ③对原开发包中使用的动态内存分配需要移植,解决的方案有2个:

  • 开发一个简单的内存管理模块;

  • 手动分配内存。

  考虑到源码包中使用的动态内存不多,系统采用第2种方案。在移植过程中,建议先在PC上分配好一大块内存,然后,给开发包中需要分配的地方手动分配。在PC上调试通过之后,就可以直接在ARM上面使用了。


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

ARM7? JPEG-LS? 蓝牙? CMOS摄像头?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈