1. 程式人生 > >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:\MyProject\Matlab\picture\lena2.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:\MyProject\Matlab\data\lena128x128.dat','w');%儲存.dat影象資料檔案
fprintf(fid,'%d %d %s %d %d\n',1651,2,'8cc0',0,N*M);%寫入二進位制檔案的第一行
%將圖片資料寫入Dat檔案中
for n = 1:N
    for m = 1:M
        fprintf(fid,'%d\n',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實現看:


5、使用Tools-->Image Analyzer來顯示出來過程中的圖片:;

點選Image Analyzer後,在軟體下發會出現下圖,然後滑鼠右鍵設定Properties:


設定影象顯示的細節,包括影象大小,RGB/YUV的起始地址、灰度級等(裡面的引數具體的值可以多試一試,直到顯示正常為止):


最後在Image裡右鍵Refresh顯示影象:


總結:使用CCS3.3+TMS320DM342處理影象可參考《DSP原理及影象處理應用--趙小強》,裡面對於單張影象的處理介紹很詳細。