天天看點

【圖像壓縮】基于二叉樹和優化截斷(BTOT)實作遙感圖像壓縮附matlab代碼

1 内容介紹

​​遙感影像​​資料量大,需要在星載裝置上通過低複雜度算法進行壓縮。具有自适應掃描順序的二叉樹編碼(BTCA)是一種有效的任務算法。但是,對于大規模的遙感影像,BTCA 需要大量的記憶體,并且不提供随機通路特性。在本文中,我們提出了一種基于 BTCA 的新編碼方法并優化截斷。小波圖像首先被分成幾個塊,分别由 BTCA 編碼。根據 BTCA 的性質,我們選擇有效的​​截斷點​​​對每個塊仔細優化率失真比,進而獲得更高的壓縮比,更低的記憶體需求和随機通路特性。該方法無需任何熵編碼,簡單快速,非常适用于星載裝置。在三個遙感圖像集上進行了實驗,結果表明它可以顯着提高​​PSNR ​​、SSIM和​​​VIF​​​,以及主觀視覺體驗。

2 仿真代碼

%% matlab code for BTOT(Binary Tree and Optimized Truncation)

clc;clear;

%% -----------   Input   ----------------

imname = 'SanDiego.bmp';

I_Orig = double(imread(imname));

[row, col] = size(I_Orig);

blksize = 64;  

%% -----------   Wavelet Decomposition   -------------

n_log = log2(row); 

level = floor(n_log);

I_Dec = wavecdf97(I_Orig, level);

n_min = 1;

brates = [0.0625, 0.125, 0.25, 0.5, 1];

%% -----------   Coding   ----------------

[out_code, blklen, n_max, n_min, out_S,out_R,out_N] = encode(I_Dec, blksize, n_min);    

%% -----------   Decoding   ----------------

disp([ 'aa_BTOT_' imname(1:end-4) '=[']);

for rate=brates

    I_DecR = decode(out_code, blklen, n_max, n_min, blksize, row, rate, out_S,out_R,out_N);

    I_Rec = wavecdf97(I_DecR, -level);

    MSE = sum(sum((I_Rec - I_Orig).^2))/(row*row);

    PSNR = 10*log10(255*255/MSE);

    disp([sprintf('%.4f',rate) ' ' sprintf('%.2f',PSNR)]);   

end

disp('];');

figure

subplot(211)

imshow(I_Orig,[])

title('原圖')

subplot(212)

imshow( I_Rec,[] )

title('壓縮圖')

3 運作結果

4 參考文獻

部落客簡介:擅長智能優化算法、神經網絡預測、信号處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。

部分理論引用網絡文獻,若有侵權聯系部落客删除。

繼續閱讀