Code Repository for DSP Course Design of Southwest University of Science and Technology
本项目为基于TI C6748 DSP处理器的图像处理应用系统,实现了图像二次曝光功能。图像二次曝光将两幅图像按照特定权重(C=0.5×A+0.5×B)合成为一幅新图像,展示了DSP图像处理的基本流程和优化方法。
- 支持BMP格式图像的读取和处理
- 实现图像二次曝光算法:
C=0.5×A+0.5×B - 提供三种实现方式:
- C语言实现
- Intrinsic指令优化实现
- 线性汇编优化实现
- 自动测量和比较不同实现方式的性能(时钟周期数)
- 开发环境:Code Composer Studio 5.5
- 目标硬件:TI C6748 DSP处理器
- 输入图像:两幅相同尺寸的BMP格式图像
Image_exposure/
├── ImageDoubleExposure.h # 算法接口头文件
├── ImageDoubleExposure.c # 算法接口实现
├── DoubleExposureCore.h # 核心算法头文件
├── DoubleExposureCore.c # 核心算法实现(C语言和Intrinsic优化)
├── process_pixels_dblexp_asm.sa # 线性汇编优化实现
├── RGB2RGB.h # RGB格式转换头文件
├── RGB2RGB.c # RGB格式转换实现
├── bmp_head_struct.h # BMP文件格式定义
├── main.c # 主程序
└── C6748.cmd # 链接器命令文件
| 实现方式 | 特点 | 性能提升 |
|---|---|---|
| C语言实现 | 基础实现,逐像素处理,无特殊优化 | 基准 |
| Intrinsic指令优化 | 使用C6x DSP内联指令,如_amem4进行内存访问优化,每次处理4个像素 |
1-3倍 |
| 线性汇编优化 | 使用线性汇编,通过SIMD指令(如AVGU4)进行并行处理,每次处理8个像素 |
3-5倍 |
- 下载本项目代码
- 选择一个工作空间
- 在Code Composer Studio 5.5中导入本工程
- rebuild重新编译并通过仿真调试程序
程序会自动测量各种实现方式的处理时间(以时钟周期为单位),并在控制台输出。一般来说,性能提升效果如下:
- Intrinsic指令优化相比C语言实现约提升1-3倍性能
- 线性汇编优化相比C语言实现约提升3-5倍性能
具体性能提升效果取决于图像大小和处理器配置。
- 确保输入的两幅图像大小相同
- 确保有足够的内存用于图像处理
- 在修改代码时注意DSP架构的特点和限制
- 使用了DSP优化技术:Intrinsic和线性汇编
- 给出了优化前后的时钟占用对比
- 实现了图像二次曝光:
C=0.5×A+0.5×B - 使用三种不同方式(C语言、Intrinsic、线性汇编)进行了实现