📄 vq_withoutpca.m
字号:
%********************************************************************
% *
% Vector Quantization *
% *
%********************************************************************
%********************************************************************
% GLA -> cdbk -> 2D images encoding *
%********************************************************************
function [compressed_image VQ_time] = VQ_WithoutPCA(blocksize, nwds)
%clear
%clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% VQ image compress
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fprintf(1,'\n\nblocksize= %d, nwds = %d\n\n', blocksize, nwds);
% load images
load initial_ALZ_drifed_masked.mat;
begin_time = cputime;
num_AA_volumes = size(AA, 2);
num_BB_volumes = size(BB, 2);
num_all_volumes = num_AA_volumes + num_BB_volumes;
all_volumes = [AA BB];
n_sample_images = 100; % number of sample images to generate cdbk
threshold = 0.01;
[nx ny nz] = size(all_volumes{1});
n_all_images = nz * num_all_volumes;
% partition each image and take the mean of each region, retrieve feature
% vectors for each image
all_image = cell(1,n_all_images); % contains the features for all images
% get image features
i_image = 1;
for index = 1: num_all_volumes
one_volume = all_volumes{index};
for i_2D = 1: nz
% get the 2D slices from volume
slice = one_volume(:,:,i_2D);
% partion each slice, take mean of each region
[features, n_rows, n_columns] = get_features(slice, blocksize);
all_image{i_image} = features;
i_image = i_image+1;
end
end
n_data = size(all_image,2);
GLA_begin_time = cputime;
sample_data = zeros(0,0);
sample_images = round(1+(n_data-1)*rand(1,n_sample_images)); %randint(1,n_sample_images,[1 n_data]);
for i = 1: n_sample_images
sample_data = [sample_data; all_image{sample_images(i)}];
end
% GLA
% Generate code book using GLA
[region, cdbk, iterations, distortion] = GLAcdbk(sample_data, n_columns, nwds, threshold);
GLA_end_time = cputime;
GLA_time = GLA_end_time - GLA_begin_time;
fprintf(1,'GLA time = %.4f\n', GLA_time);
fin_cdbk = cdbk{iterations};
cdbk_frequency = zeros(n_all_images, nwds);
% Encode each image using the generated cdbk
ImgEncode_begin_time = cputime;
for i = 1: n_all_images
[compressed_image{i},reconstructed_image{i},cdbk_frequency(i,:)] = image_encode(all_image{i},fin_cdbk);
end
ImgEncode_end_time = cputime;
ImgEncode_time = ImgEncode_end_time - ImgEncode_begin_time;
fprintf(1,'ImgEncode time = %.4f\n', ImgEncode_time);
% So far, VQ image compression is done
fprintf(1,'\nVQ image compression time = %.4f\n', cputime - begin_time);
% save results
savefilename = ['VQ_Ali_',num2str(blocksize),'_',num2str(nwds),'_2'];
save (savefilename, 'compressed_image', 'reconstructed_image', 'cdbk_frequency', 'cdbk');
VQ_time = GLA_time + ImgEncode_time;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -