学术堂首页 | 文献求助论文范文 | 论文题目 | 参考文献 | 开题报告 | 论文格式 | 摘要提纲 | 论文致谢 | 论文查重 | 论文答辩 | 论文发表 | 期刊杂志 | 论文写作 | 论文PPT
学术堂专业论文学习平台您当前的位置:学术堂 > 计算机论文 > 数字图像处理论文

基于嵌入式系统的图像处理系统设计

来源:学术堂 作者:姚老师
发布于:2015-11-30 共4188字
摘要

  0 引言

  随着信息科学技术发展速度的加快,对图像处理精确度越发精确,对图像处理速度的要求越发加快。传统的 PC 图像处理技术与嵌入式图像处理技术相比,其最为显著的优点是可以将图像简单地、快速地处理出来,但其缺点就是成本高、需要大量电子设备、结构复杂、设备的保养和运输不方便; 虽然嵌入式系统微型化、小型化,但其不仅能满足图像处理系统的要求,还具有便于携带、使用方便、功耗小等优点。基于嵌入式系统的图像处理系统的实现,体现出了其稳定性好、易于开发维护、通用性强、成本低等特点,具有传统 pc 图像处理系统不具备的特点。嵌入式系统的强大的兼容性,模块化设计,使其开发的时间短,易于维护; 嵌入式系统图像处理系统的小巧性,使其配置拆装灵活,其实时性比桌面操作系统的图像处理系统好,具有非常好的应用前景。

  1 嵌入式硬件设备

  嵌入式系统的硬件设备选择:

  SDRAM 内存: 时钟频率 100 MHz 以上 、32 bit 的数据总线。

  FLASH 存储: 已经安装 BIOS 的 125 M Nand Flash.

  LCD 显示: 带触摸功能的 3. 5 寸 LCD,分别率 240 × 320.

  接口: USB Host、JTAG 接口和串口等。

  S3C6410 处理器支持 NAND FLASH 的启动方式,通过配置引脚的不同通电状态来确定 NAND FLASH 的启动方式。

  Flash 闪存可以为各种移动设备用作存储设备,在嵌入式系统中作为存储设备。

  S3C6410 处理器摄像头支持 ITU - BT 601 /656 8 位模式,支持 4 096 ×4 096 像素点。

  开发上引出了摄像头接口,可直接使用配套的摄像头模块,采用 10 × 20 插针接口方式。摄像头接口有 CAMERA 信号、ⅡC 信号,这两个信号用来配置 CMOS 摄像头相关参数; 还有一个 GPIO 信号,主要应用于 CAMERA 的上电控制,协助系统实现电源管理。

  图像输出模块利用 LCD 触摸屏实现,S3C6410 开发板的LCD 接口,属于 40 pin 下接 FPC 座( 0. 5 mm 间距) ,包含了常见的控制信号,如行场扫描信号、时钟信号和使能信号等、背光控制信号 LCD_PWR、RGB 数据信号、为 PWM 输出信号和复位信号( NRESET) ,其中 LCD_PWR 是背光控制信号。

  2 软件编写

  嵌入式 Linux 操作系统的开发环境主要是由目标板和宿主机构成。在宿主机上完成应用程序的开发和操作系统内核的编译,在目标板上运行系统程序和软件系统。嵌入式平台的开发,一般都是在宿主机上完成交叉编译环境的调试,然后通过串口和目标板连接起来。把一台 PC 机作为嵌入式开发的宿主机,并建立交叉编译环境,在其环境中实现程序设计,并生产执行代码,最后移植到开发板上,实现程序的开发。Boot-loader 导程序主要是嵌入式系统启动,目标板打开,首先 Boot-loader 引导程序启动嵌入式系统,Bootloader 引导程序在目标板板上先执行首段代码的启动。在 PC 机中,先制作 Bootloader引导程序,然后将其将引导 liunx 系统启动,运行 liunx 内核和根文件系统,从而整个程序运行起来。BIOS 会将控制转移给引导程序; 只要引导程序启动,将执行系统的初始化工作。使Linux 结构建立起来,在图形界面运行,如图 1 所示。

  嵌入式系统也可以看作是一个特殊的计算机系统,在计算机开机时需要 BIOS 作为引导程序启动操作系统。嵌入式系统的 Bootloader 引导程序就同计算机的 BIOS 作用一样,引导嵌入式操作系统的启动,然后将控制全转移选操作系统。

  Bootloader 有 2 种模式,包括有启动加载和下载模式。

  Bootloader 的正常工作下运行的模式是启动加载模式。Boot-loader 引导程序宿主机下载到目标板的存储模块中,然后引导程序启动嵌入式操作系统。下载模式就是目标板上的 Boot-loader 通过串口连接下载方式在开发板上运行宿主机上编译好的应用程序。Bootloader 引导程序的启动过程两个阶段。代码和 CPU 体系结构一样,第一个阶段放置设备的初始化程序,使用 ARM 汇编语言来完成。第二个阶段是用 C 语言来完成,从而实现程序的功能。将压缩包 uboot1. 1. 6_FORLINX_6410.

  tgz 放到 Ubuntu / forlinx 目录下,解压缩并编译,Ubuntu 下的操作过程如下所示:

  #tar zxf uboot1. 1. 6_FORLINX_6410. tgz#cd uboot1. 1. 6#make smdk6410_config#make claen#make嵌入式系统 Linux 内核的配置和移植,在宿主机上下载linux - 2. 6. 28,在配置之前对 Makefile 文件交叉编译环境进行修改。将压缩包 Linux2. 6. 28_FOLINX_6410. tgz 放到工作目录下,解压缩: #tar zxf Linux2. 6. 28_FOLINX_6410. tgz配置内核:

  1) 需要安装 Libncurses5,方便使用 make menuconfig 命令,可以采用以下命令安装:#sudo apt - get instell Libncurses5 - dev2) 恢复内核的默认配置:#cd linux2. 6. 28#cp FORLINUX6410_CFG . config3) 液晶屏类型的选择:#make menuconfig选择液晶屏类型,在\linux - 2. 6. 28 \demo 文件目录下已包含了 3. 5 寸、4. 3 寸、5. 6 寸、7 寸、8 寸、vga 输出的内核映像。4) 编译内核:#make zImagezImage 就是编译完成后产生的内核映像文件编。最后配置完文件系统就可继续接下来的编程。

  3 图像采集与显示

  驱动程序使用的结构和符号,都在 include/linux/videodev. h文件中。Video4Linux 设备驱动模块在内核中的 drivers/media/video / videodev. c 文件中,开发人员可以在模块的基础上通过对内核接口的开发作出自己需要的设备驱动程序。

  在 Linux2. 6. 28 内核中,主要是对 fb_fix_screen_for 和 fb_var_screeninfor 进行 FrameBuffer 结构变量的控制。显示程序:

  struct fd_fix_screeninfor finfo;struct fd_var_screeninfor vinfo;ioctl( fb,FBIOGET_FSCREENINFO,&finfor) ;int fb = open( " / dev / fbo" ,O_RDWR) ;ioctl( fb,FBIOGET_VSCREENINFO,&vinfor) ;以上程序声明了设备的固定和可变结构体,并获得了显存的地址、分辨率、颜色等。

  creansize = vinfor. xres * vinfor. yres * vinfor. bits_per_pix-el /8;* fb = map( 0,screansize,PROT_READ | PROT_WRITE,MAP_SHARED,fb,0) ;设置了 screensize 的大小和起始地址,其内存起始位置为fb,然后图像将会在 LCD 上显示出来。

  memset( fbp,0,screensize) ; 此条程序为清屏操作。主要的主程序为:打开设备( nb. fb =open( "/dav/video4linux/video",O_RDWR) ) <0){ qerror( "video4linux_open") ; exit( l) ; }获得图像的信息Printf"capability. name: s \ n". vb. capability. nama) ;Ioctl( vb. fb,VIDIOCGPICT,&( vb. picture) ) ; 采集显示图像Ioctl( nb. nb,VIDIEOCMCAPTURER,&( nb. mmap) ) ;Ioctl( nb. nb,VIDIEOCSYNCY,&( vb. frame_current) ) ;Imageshow( vb. mmap + vb. buf. offsets[0]) ;保存图像关闭设备Fwrite( mg,IMGSIZE,l,pf) ;Close( vb. fb) ;4 基于 Qt 图像平台设计。

  实现后的用户图形界面通过 Qt 开发环境的 Qt Designer设计实现。Qt Designer 可以直观地对用户图形界面进行布局,其文件格式为。 ui,并生成。 h 文件,为功能的具体实现提供方便。Qt 中采用 signals/slots 信号响应机制,使得各个元件之间的协同工作变得十分简单,图形显示程序代码: void ImageProcessing : : onScanBtn ( ){ QFileDialog: : getOpenFileName( this,tr( "Open Image File") ,"C: \ \ ",tr( "Setings Files ( * .jpg) ") ) ; }

  信号和槽的关联:QObject: : connect ( Button _11,SIGNAL ( clicked ( ) ) ,this,SLOT( onScanBtn( ) ) ) ;图像流程程序部分代码:图像数据读取char * pImageBytes = ( uchar * ) srcImage.bits( ) ;int depth = srcImage. depth( ) ;int lineBytes = srcImage. bytesPerLine( ) ;int w = srcImage. width( ) ;int h = srcImage. height( ) ;uchar * pByte;if( 8 = = depth){ pByte = pImageBytes + i* lineByte + j;data[i* w + j]= std: : complex < double > ( * pByte,0) ; }else if( 32 = = depth;{ pByte = pImageBytes + i* lineBytes + j* 4;Uchar pixelValue = ( uchar) ( 0. 299 * ( float) pByte[0] +0. 587* ( float) pByte + 0. 114* ( float) pByte[2]) ;data[i* w + j]= std: : complex < double > ( pixelValue,0) ;图像数据的回写for( int i = 0; i < h; i + + ){ for( int j =0; j < w; j ++ ){ double spectral =abs( data[i* w +j]) * coef; / /灰度值调整spectral = spectral > 255? 255: spectral;/ / 根据图像格式写数据if( 8 = = depth){ pByte = pImageBytes + i* lineBytes + j;* pByte = spectral; }else if( 32 = = depth){ pByte = pImageBytes + i* lineBytes + j* 4;pByte[0]= pByte[1]= pByte[2] =spectral; }处理进度函数QProgressDialog progress ( tr( "处 理 进 度 …") , tr( "取消") ,0,10 000,this) ;progress. setWindowModality( Qt: : WindowModal) ;progress. setWindowTitle( tr( "图像处理中…") ) ;progress. setMaximumSize( 150,60) ;progress. setMinimumSize( 150,60) ;progress. show( ) ; / / readImage( data,sourceImage) ;for ( int i = 0; i < 10 000; i + + ){ progress. setValue( i) ;qApp - > processEvents( ) ;if ( progress. wasCanceled( ) )break; / / … 复制文件处理。qDebug( ) < < i; }progress. setValue( 10 000) ;最终实现图形化界面。

  5 结语

  1) 在虚拟机上安装 Linux 系统并完成交叉编译环境的建立; kernel 的编译和移植; 制作文件系统。从而为后续的项目开发创建出了软件环境。

  2) 对 Video4Linux 的驱动程序的开发和设计,完成了 Vide-o4Linux 开发图像采集驱动程序,采集的图像既可以直接用作图像的处理,也可以保存在内存映像中,用 FrameBuffer 进行图像的显示。

  3) 利用 QT 开发图像处理系统的图形界面。优化和改进图像处理系统的算法,最终完成了图像的平滑、图像的锐化、图像的边缘检测和浮雕显示等图像处理功能程序编写。

  4) 将宿主机上的成果移植到 ARM11 的硬件平台上,实现图像的采集和图像的处理,在图像处理方面,其处理速度更快、图像更加精确。

  参考文献:
  [1] 孙琼。 嵌入式 Linux 应用程序开发详解[M]. 北京: 人民邮电出版社,2006.
  [2] 周立功,陈明计,陈渝。 ARM 嵌入式 Linux 系统构建与驱动开发范例[M]. 北京: 北京航空航天大学出版社,2006.
  [3] RafaelC. Gonzalez,RichardE. Woods,StevenL. Eddins. 数字图像处理[M]. 北京: 电子工业出版社,2005.
  [4] 田泽。 嵌入式系统开发与应用[M]. 北京: 北京航空航天大学出版社,2005.

相关标签:
  • 报警平台
  • 网络监察
  • 备案信息
  • 举报中心
  • 传播文明
  • 诚信网站