微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > +RGB转灰度算法中图像数据的提取新方法

+RGB转灰度算法中图像数据的提取新方法

时间:10-02 整理:3721RD 点击:

在上一篇试用文档《【创龙TMS320C6748开发板试用】+RGB转灰度算法体验》里曾经提到过在选取图像的时候最好选比较小的图像,这样可以节省编译时间。为此,小编就借助CCS软件的加载数据功能将图像数据直接加载到DSP的DDR2里,这样就可以省去编译图片文件的时间。本文涉及到文本数据的一些简单的处理,小编就使用了VIM,当然也可以用其他的工具实现。具体过程如下:
以下操作均已前文生成的Image.c文件为基础。主要思路是将Image.c文件中的数组内容改变成符合CCS识别的.dat格式。
1.将数组中的所有“,”替换为换行(回车符),使用Vim编辑器打开Image.c,按几下 ESC 进入 Normal 模式,输入以下命令::%s/,/\r/g。回车后得到的效果如下:






此时由于数组之前有回车/换行符,所以会有空行出现,再执行:g/^$/d,即可删除所有空行。




2.添加数据头信息


将文件的头部改为:1651 9 c0000000 0 7FDC c 并另存为Image.dat。修改后的文件头部如图所示:





此格式是参照了CCS将内存数据输出为dat格式的文件内容。以上内容需要修改文件的大小,我选的图片是202x54,生成的数组大小是32732十六进制即7FDC。


3.导入数据到DDR2


将工程中Image.h文件移除,所以需要在main.c文件中重新定义数组Image。我们还将数组定义在DDR2中,代码如下:


  1. #pragma DATA_SECTION( Image,".image");
  2. unsigned char  Image[32732];

复制代码


其中.image是在CMD文件中定义的数据段。CMD文件需要定义如下:


  1.     /*存储图像*/
  2.     .image          > DDR2

复制代码


修改主函数中图像的大小,主函数代码如下:


  1. /****************************************************************************/
  2. /*                                                                          */
  3. /*              主函数                                                      */
  4. /*                                                                          */
  5. /****************************************************************************/
  6. int main(void)
  7. {
  8.         // 使能缓存 L1 及 L2
  9.         CacheEnableMAR((unsigned int)0xC0001000, (unsigned int)0x08000000);
  10.         CacheEnable(L1DCFG_L1DMODE_32K | L1PCFG_L1PMODE_32K | L2CFG_L2MODE_256K);

  11.         // 转换 RGB24 图片为灰度图
  12.         // 前 8 个字节是图片信息
  13.         RGB2Gray(32724, Image +8, Gray);

  14.         // 断点
  15.         SW_BREAKPOINT;
  16. }

复制代码


修改完毕,重新编译并进入仿真界面。


在CCS软件的内存查看窗口点击“LoadMemory”,(下图中红色框标注有误)开始加载数据。





设置格式地址如下:





找到刚才保存的Image.dat文件,然后点击Next:







输入加载的地址和数据长度,其中加载地址如图右边所示。点击Finish完成加载。







运行程序,并打开图像分析窗口即可查看图像,与上文操作一致,此处不再赘述!


小结


本文主要讲述了加载数据到DSP的DDR2的一种方法,此方法可以省去工程编译的一些时间,另外TL的烧写镜像,NandFlash的烧写貌似也采用了类似的思路。俗话说工欲善其事必先利其器,诸如Vim这样的工具熟练掌握可以给工作带来很大方便。



【本文完!】


--------------------华---丽---的---分---割---线--------------------


声明:本文内容及观点为小编主观意识的产物,褒贬纯属个人意见,不存在黑谁捧谁,严格遵循试用规则。如有冒犯多多包涵,实在看不下去可以私信沟通,不要让法院给俺寄传票!^_^


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top