1、实验目的
图像信息量巨大,而边缘信息是图像的一种描述,是图像最基本的特征,所包含的也是图像中用于识别的有用信息。所谓边缘是指其周围像素灰度有阶跃变化或屋顶变化的那些像素的集合,边缘存在于目标、背景和区域之间,所以,它是图像分割所依赖的最重要的依据。由于边缘是位置的标志,对灰度的变化不敏感,,因此,边缘也是图像匹配的重要的特征。图像边缘为人们描述或识别目标以及解释图像提供了一个有价值的和重要的特征参数,其算法的优劣直接影响着所研制系统的性能。
2、实验内容
1)Linux平台:
(1)硬件结构图:
(2)程序流程图:
(3)核心代码与关键技术:
ARM 端源代码与视频采集回放实验完全一致。
package.xdc:该文件中定义了该 codec 包的静态属性,如 codec 名称和关联包。 如下面代码定义了 该 codec 包 的 名 称 为 codecs.vidsobeledge , 包 含 了 1 个 简 单 的 算 法 叫VIDSOBELEDGE。
package codecs.vidsobeledge {module VIDSOBELEDGE;}
VIDSOBELEDGE.xs:该文件内容是模块的实现,文件名称 VIDSOBELEDGE 必须和 package.xdc 文件中定义的模块名称一致。文件中包含了 VIDSOBELEDGE.xdc 中声明的方法的实现。
videnc_copy.c:该文件包含了 codec 的 xDM 接口的 8 个接口函数实现。该文件和前两个实验中codec/videnc_copy 中提供的函数实现基本一致,process 函数有区别,前两个实验中只是将输入的视频数据进行了一下空间的搬移,而在本实验中进行了边缘检测处理。
XDAS_Int32 VIDENCCOPY_TI_process(IVIDENC_Handle h, XDM_BufDesc *inBufs, XDM_BufDesc *outBufs, IVIDENC_InArgs *inArgs, IVIDENC_OutArgs *outArgs){ …
UYVY_to_YUY2(inBufs->bufs[curBuf],tmp1);IMG_sobel(tmp1,tmp2,720,576);YUY2_to_UYVY(tmp2,outBufs->bufs[curBuf]); …
边缘检测算法函数使用了img64x.lib中提供的 sobel 算子算法。
void IMG_sobel(const unsigned char *in_data, /*
Input image data */unsigned char *out_data, /*
Output image data */short cols, short rows /*
Image dimensions */);
2)CCS平台:
(1)硬件结构图: