Image Librapy使用
通常开发一款图像采集和处理产品的流程是熟悉硬件平台的特性、根据CPU的特点优化算法,最后调试整个系统软件。由于大多数厂家CPU支持的汇编语言不相同,尤其DSP芯片的汇编语言,如TI公司有自己的甚长汇编指令集,而AD公司也有自己的汇编指令集。通常只有根据各个厂家的CPU内核特点和汇编指令特点,才可以更好地优化图像算法,而且往往这方面影响着产品的开发进度,影响着产品进入市场的时间。
TI公司为了解决这个问题,向用户提供了图像处理算法库,该库主要包含图像压缩和解压缩、图像分析和图像滤波等3个部分。用户可以利用这3个库快速地开发出图像采集处理算法。
1.概述
TI公司提供的(C62x MIGLIB库文件是包括很多图像和视频处理函数,所有函数都是对C语言编程进行了优化。该库包括一些可以使用C语言调用,且已经经过汇编优化的图像和视频处理子程序。在对图像处理时间十分敏感的实时系统中可以使用这些已经经过汁算优化的函数。用户借助这些子程序就可以轻松地使用ANSI C语言编写出高效的算法程序。借用这些子程序,可以缩短产品进入市场的时间。
TI C62x IMCLIB库文件包括通用的图像和视频处理子程序。另外,用户可以根据产品的特点,修改库的源程序满足自己的要求。这些源程序可以在Code Composer Studio软件的安装目录下找到。
IMGLIB库的特点如下:
·优化的汇编代码子程序。
·与TI C62x编译器完全兼容的C调用子程序。
·基准,包括时钟周期和代码大小。
·参考C模型测试。
虽然在软件中提供的代码都是针对C62x DSP设备的,但是也可以在TI C6000 DSP系列其他产品中使用。在配套光盘里有image.lim的例子mpeg2_vld,有兴趣读者可以看看。
2.图像压缩解压缩子程序
该部分主要描述的是标准图像压缩/解压缩算法子程序,如JPEG、MPEG Video和H.26x等算法。
IMG_fdct_8x8
IMG_idct_8x8
前向和反转离散余弦变换(DCT)函数:IMG_fdct_8x8和IMG_idct_8x8。在大多数标准压缩算法中都使用离散余弦变换函数,如JPEG编码/解码、MPEG视频编码/解码和H.26X编码/解码。这些标准压缩算法使用目的
是不相同的,比如:JPEG算法主要使用在打印、图像处理和安全系统中等;MPEG视频标准主要在数字电视(DTV)、DVD播放器、机顶盒(Set-Top boxes)、便携视频设备、视频光盘和多媒体应用系统中使用;H.26X标准在视频电话和某些流媒体应用中使用。
注意逆向DCT函数执行的是IEEE 1180~1990逆向DCT算法。
IMG_mad_8x8
IMG_mad_16x16
IMG_sad_8x8
IMG—sad—16x16
利用这些函数可以提高运动图像识别算法性能,在MPEG视频编码和H.26X编码中广泛使用运动图像识别算法。在便携视频系统、流媒体系统和视频电话采用这些视频编码。在视频编码系统中,运动图像识别算法是得到最大计算加强优化。采用TI提供的函数可以使系统中算法性能得到显著改善。
IMG_mpeg2_vld_inter
IMG_mpeg2_vld_intra
MPEG-2可变长度解码函数提供了一个高集成度和高效率解决方案,该方案优化了MPEG-2代码intra和non-intra宏块的可变长度解码、run-length expansion、反转扫描、dequantization、saturation和mismatch控制。任何MPEG-2视频解码系统的性能依赖于每个解码步骤的高效实现。
IMG_quantize
量子化是许多图像视频压缩系统中的积分步骤,包括DCT压缩算法基础之上各种变异算法,例如JPEG、MPEG和H.26X等算法。在这样的系统中采用IMG_quantize子程序可以提高量子化步骤的速度和性能。
IMG_wave_horz
IMG_wave_vert
在JPEG2000和MPEG-4等算法中,小波处理得到的广泛的应用,并将发展成为一种标准,典型应用于提高静止图像压缩的性能方面,而且在许多各种图像压缩系统都是建立在小波处理基础之上。IMG_wave_horz和IMG_wave_vert函数用于计算水平和垂直小波变换。利用该两个函数可以计算图像数据2维小波变换。该子程序在文档约束之内使用非常灵活,可以满足宽范围的特殊小波变换和图像维数。
3.图像处理子程序
该部分主要是对应用于图像分析标准的函数进行说明。
IMG_boundary
边界和周界函数,即IMG_boundary和IMG_perimetcr两个函数。它们通常在结构视觉应用中作为结构算子。
IMG_dilate_bin
IMG_erode_bin
IMG_dilate_bin和IMG_erode_bin两个函数是图像学算子,通常用于提高二进制图像扩大和二进制图像侵蚀算法效果。扩大和侵蚀在图像处理操作中具有基础的意义,比如打开和关闭都可以从扩大和侵蚀中建立起来。这些函数在机器视觉和医学成像方面非常有用。
IMG_histogram
直方图用来生成图像的柱状图。图像的直方图是一个图像亮度级的统计。例如,对于一个8位像素亮度级别的灰度图像,直方图将包括对应可能的256个像素亮度的256bins。每一个bin包含图像中像素点的个数,尤其是亮度值。
IMG_perimeter
库中提供了边界和周界计算函数,即IMG_boundary和IMG_perimeter。通常在机器视觉应用中用于结构化操作。
IMG_sobel
在机器视觉系统中通常使用边界检测技术。在许多算法中都存在边界检测技术,最通用的是Sobel边界检测。IMG_sobel子程序提供了一个边界检测算法优化执行的子程序。
IMG_thr_gt2max
IMG_thr_gt2thr
IMG_thr_le2min
IMG_thr_le2thr
在图像和视频处理系统中图像阀值操作的不同形式满足不同的图像处理需求。例如,一种阀值可以用于把灰度图像数据转化为二进制图像数据,以用于二进制形态处理。另一个阀值可以用于剪裁图像数据以便得到渴望的范围。在机器视觉应用中,阀值用于简单的分割。
4.图像滤波处理算法
这里主要提供了用于图像滤波和格式转化操作的几个函数,并简要描述。
IMG_conv_3x3
余弦函数用于普通图像3X3滤波,比如图像平滑和锐化处理方法等。
IMG_cori_3x3
IMG_corr gen
相关性函数用于图像匹配操作。在机器视觉、医学成像和安全/保卫方面,
图像匹配处理是非常有用的。库中提供了两个相关性函数IMG_corL3x3和IMG_COrr_gen。
IMG_COrr_3x3
函数实现对3x3像素区域高度优化相关性处理。IMG_corr_gen是一个更普通的版本,能够对用户特殊的像素区域大小(在文档约束之内)进行相关性处理。
IMG_errdif_bin
二进制值输出误差扩散技术广泛用在印花行业中。最广泛应用的误差扩散算法是Floyd-Steinberg算法。在这个函数中对该算法进行了优化。
IMG_median_3x3
在图像恢复处理中,中值滤波用于使成像中的脉冲噪音产生的影响降到最低。该处理方法可以保护脉冲影响十分严重的局部区域,在安全/保卫、机器视觉和视频压缩系统中得到广泛的应用。IMG_median_3x3函数中值滤波提供了优化实现。
IMG_pix_expand
IMG_pix_sat
IMG_pix_expand子程序用于通过零扩展技术把8位像素点扩展到16位;IMG_pix_sat用于把16位有符号数转换成8位无符号数。通常用于处理其他
子程序的输入和输出子程序,例如水平和垂直缩放子程序。
IMG_ycbcr422p_rgb565
IMG_ycbcr422p_rgb565子程序实现图像从ycbcr。格式到RGB格式的转化,以实现在MPEG和JPEG解码系统中的视频数据在RGB显示器中播放。
IMG_yc_demux_bel6
IMG vc_demux_lel6
以上子程序开辟一个little endian或big endian格式的YcrYCb彩 {MOD}图像缓冲区。
5本章小结
数字图像处理技术是计算机图形深入应用的一个极其广泛的领域。数字图像处理系统也是一个非常复杂的实时系统。近几年硬件技术的发展,推动了数字图像处理技术的飞速发展,具有高性能图像处理技术的数码产品也进入了寻常百姓家。本章主要从系统构成、硬件到软件等介绍图像采集处理系统设计,着重介绍了TI C6000系列DSP芯片的特点,以及如何使用该系列DSP芯片设计图像处理系统。熟练使用TI的算法库可以加快项目研发进度和提高产品性能,因此在本章的最后介绍了TI的Image库的使用。