zoukankan      html  css  js  c++  java
  • 【转】CCS5.5从硬盘读入.dat数据格式的单张图像

        




     

     

     
    原       

    CCS5.5从硬盘读入.dat数据格式的单张图像

                                             

    当我们使用CCS5.5编写处理单张图像的算法工程时,涉及到如何导入硬盘里的图像数据到DSP指定内存里的问题。下面做一下介绍。(整个工程代码下载:http://download.csdn.net/detail/luokh327/9483582)

    1、使用MATLAB将需要导入的图像转换成DSP能识别格式的二进制(.dat)文件;

    function CreateImgDat()
    clc;
    close all;
    clear all;
    %说明:生成DSP实验所用的图像数据Dat文件
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    I = imread('D:MyProjectMatlabpicturelena2.BMP');%打开图像,这里改成自己的图像名及路径
    %将图像缩小一点,不然数据量太大
    I = imresize(I,[128,128],'bicubic');%<span style="color:#ff0000;">缩小成128*128、二维FFT时需要图像为2的n次方</span>
    figure,imshow(I);%显示图像
    [N M dim] = size(I);%获取图像的高与宽
    if(dim == 3)
        I = rgb2gray(I);%如果打开的是彩色图像,则转换成灰度图像
    end
    fid = fopen('D:MyProjectMatlabdatalena128x128.dat','w');%保存.dat图像数据文件
    fprintf(fid,'%d %d %s %d %d
    ',1651,2,'8cc0',0,N*M);%写入二进制文件的第一行
    %将图片数据写入Dat文件中
    for n = 1:N
        for m = 1:M
            fprintf(fid,'%d
    ',I(n,m));
        end
    end
    fclose(fid);
    disp('Run OK')

    2、配置MyFFTproject.cmd文件,为导入图像分配内存

    -c
    -stack          0x00020000      /* Stack Size */
    -heap           0x00020000      /* Heap Size */
    
    MEMORY
    {
        VECS:       o = 0x00000000  l = 0x00000080
        IRAM:       o = 0x00000080  l = 0x00007f80  /*  32 kBytes */
        DRAM:       o = 0x00010000  l = 0x00008000  /*  32 kBytes */
        DDR2:       o = 0x80000000  l = 0x04000000  /* 128 MBytes */
        DDR2_VIDEO: o = 0x84000000  l = 0x04000000  /* 128 MBytes */
    }
    
    SECTIONS
    {
    
    	.bss        >   DDR2    
    	.cinit      >   DDR2    
    	.cio        >   DDR2    
    	.const      >   DDR2    
    	.data       >   DDR2   
    	.far        >   DDR2     
    	.stack      >   DDR2     
    	.switch     >   DDR2    
    	.sysmem     >   DDR2    
    	.text       >   DDR2    
    	.ddr2       >   DDR2 
    	.IMG     >  DDR2_VIDEO//导入图像的地址
    //以下为二维FFT计算时需要用到的内存分配
    	.Source  >  DDR2_VIDEO
    	.Scale   > DDR2_VIDEO
    	.Out     >  DDR2_VIDEO
    	.tdd     > DDR2_VIDEO
    	.fdd     > DDR2_VIDEO
    	.W       > DDR2_VIDEO
    	.X1      >DDR2_VIDEO
    	.X2      > DDR2_VIDEO
    	.TempT   > DDR2_VIDEO
    	.TempF   > DDR2_VIDEO
    }
    
    然后在main.c文件里连接内存,使用语句:
    #pragma        DATA_SECTION(IMG,"DDR2_VIDEO");
    int  IMG[16385];//此处数组大小为导入图像的大小(128 × 128),然后在接下来的函数中就可以使用图像数据了。

    3、在CCS5.5的Tools-->Load Memory里加载数据;

    4、运行算法(我的是单张图像的FFT及扩展2倍大小加入退化函数,然后滤波IFFT,若算法不一样,此项会不同);

    二维图像的FFT及IFFT的DSP实现看:

    利用DM6437/DM642实现单张图像的FFT、IFFT以及全逆滤波、维纳滤波

    http://blog.csdn.net/luokh327/article/details/51083769

    5、使用Tools-->Image Analyzer来显示出来过程中的图片:;

    点击Image Analyzer后,在软件下发会出现下图,然后鼠标右键设置Properties:

    设置图像显示的细节,包括图像大小,RGB/YUV的起始地址、灰度级等(里面的参数具体的值可以多试一试,直到显示正常为止):

    最后在Image里右键Refresh显示图像:

    总结:使用CCS3.3+TMS320DM342处理图像可参考《DSP原理及图像处理应用--赵小强》,里面对于单张图像的处理介绍很详细。

  • 相关阅读:
    8.5 exit函数进程控制
    8.2 进程标识
    8.6 wait和waitpid函数进程控制
    2.jpg
    8.3 fork函数进程控制
    8.4 vfork函数进程控制
    8.9 竞态条件
    8.8 wait3和wait4函数进程控制
    8.7 waitid函数进程控制
    Silverlight Tools 3.0中文正式版发布(附下载地址)
  • 原文地址:https://www.cnblogs.com/zhangbing12304/p/10974665.html
Copyright © 2011-2022 走看看