⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 func_speck_main.asv

📁 LSK算法源码,欢迎大家交流
💻 ASV
字号:
% function func_SPECK_Main()
% Matlab implementation of SPECK 
%
% Main function 
%
% input:    Orig_I : the original image.
%           rate : bits per pixel
% output:   img_speck 
%

%-----------   Input   ----------------
%Orig_I = func_ReadRaw('lena512.raw', 512*512, 512, 512);
clear all;
%Orig_I = imread('lena.bmp');%% 'lena512.bmp'
%Orig_I = imread('lena512.pgm');%% 'lena512.bmp'
Orig_I = imread('goldhill.pgm');%% 'lena512.bmp'
%Orig_I = imread('goldhill512.pgm');%% 'lena512.bmp'
%Orig_I = imread('barbara512.pgm');%% 'lena512.bmp'
%Orig_I = imread('barb.pgm');%% 'lena512.bmp'
                               %% 'barbara512.bmp'
                               %% 'baboon512.bmp'
rate = 0.0625;
%rate = 0.125;
%rate = 0.25;
%rate = 0.5;
%rate = 0.75;
%rate = 1;
%-----------   Pre-processing   ----------------

OrigSize = size(Orig_I, 1);
max_bits = floor(rate * OrigSize^2);

OutSize = OrigSize;
image_spiht = zeros(size(Orig_I));
% "image " is the input of codec
[nRow, nColumn] = size(Orig_I);


%-----------   Wavelet Decomposition   ----------------
n = size(Orig_I,1);
n_log = log2(n); 
%level = n_log;
level = 5;
% wavelet decomposition level can be defined by users manually.


%Orig_2=Orig_I-mee;

type = 'bior4.4';
[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters(type);

[I_W, S] = func_DWT(Orig_I, level, Lo_D, Hi_D);

%-----------   Coding   ----------------
%img_enc = LSk_main_encode256(I_W, max_bits, nRow*nColumn, level);   
img_enc = LSK_main_encode_chen(I_W, max_bits, nRow, level);
disp('now decode');

%-----------   Decoding   ----------------
%img_dec = Lsk_main_decode(img_enc);
img_dec = LSK_main_decode_chen(img_enc);
%-----------   Wavelet Reconstruction   ----------------
img_speck = func_InvDWT(img_dec, S, Lo_R, Hi_R, level);
%img_speck = func_InvDWT(I_W, S, Lo_R, Hi_R, level);

%img_speck=img_speck+mee;
%-----------   PSNR analysis   ----------------
Q = 255;
%MSE = sum(sum((uint8(img_speck) - Orig_I) .^ 2)) / nRow / nColumn;
MSE = sum(sum((img_speck - Orig_I) .^ 2)) / nRow / nColumn;
PSNR = 10*log10(Q*Q/MSE);
%PSNR = 20*log10((2^8-1)/sqrt(MSE));
%[PSNR,MSE] = psnr(Orig_I,uint8(img_speck));
image_length=size(img_enc);
disp('PSNR');

disp(PSNR);
disp('rate');
disp(rate);
disp('image width');
disp(OrigSize);

subplot(1,2,1);
imshow(uint8(Orig_I));
subplot(1,2,2);
imshow(uint8(img_speck));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -