clc;
clear all;
close all;
N = 8;
N2 = 2*N;
sd=0.2;
W = 16;
sr=0.5;
quantizer_scale = 4;
[f,p]=uigetfile( {'*.avi','AVI Video files (*.avi)';'Select an AVI format video','input\'});
Frames=VideoReader([p,f]);
s1=aviinfo(f);
F = int16(1:30);
sf=sr+sd;
input_file_size = s1.FileSize
get(Frames);
nFrames = Frames.NumberOfFrames;
pickind='jpg';
for k = 1:nFrames
M(k).cdata = read(Frames, k);
a=read(Frames,k);
strtemp=strcat('K1frames\',int2str(k),'.',pickind);
a = imresize(a,sf,'bicubic');
M1(k).cdata=a;
imwrite(a,strtemp);
end
figure,
for k = 1:nFrames
imshow(M(k).cdata)
pause(0.001)
end
ll=M1(1).cdata;
J = int16(ll);
% K = double(J);
K =imresize(rgb2gray(J),[128,128]);
IM = reshape(K,128*128,1);
fid = fopen('image.txt','wb');
fprintf(fid,'%d\n',IM);
fclose(fid);
% z=zeros(128,128);
[X,Y,Z] = size(ll);
if mod(X,8)~=0
Height = floor(X/8)*8;
else
Height = X;
end
if mod(Y,8)~=0
Width = floor(Y/8)*8;
else
Width = Y;
end
Depth = Z;
clear X Y Z
%
if Depth == 3
A = rgb2ycbcr(ll);
y_ref = A(:,:,1);
else
A = M1(1).cdata;
y_ref = A;
end
y_ref = double(padarray(y_ref,[W/2 W/2],'replicate'));
Base_snr = zeros(1,length(F)-1); Enhanced_snr = zeros(1,length(F)-1);
Base_psnr = zeros(1,length(F)-1); Enhanced_psnr = zeros(1,length(F)-1);
for f = 2:length(F)
if Depth == 3
B = rgb2ycbcr(M1(f).cdata);
y_current = B(:,:,1);
B1 = rgb2ycbcr(M(f).cdata);
y_current1 = B(:,:,1);
else
y_current = M1(f).cdata;
y_current1 = M1(f).cdata;
end
y_current = double(padarray(y_current,[W/2 W/2],'replicate'));
y_current1 = double(padarray(y_current1,[W/2 W/2],'replicate'));
for r = N:N:Height
rblk = floor(r/N);
for c = N:N:Width
cblk = floor(c/N);
D = 1.0e+10;
for u = -N:N
for v = -N:N
d = y_current(r+1:r+N,c+1:c+N)-y_ref(r+u+1:r+u+N,c+v+1:c+v+N);
d = sum(abs(d(:)));
if d < D
D = d;
x1 = v; y1 = u;
end
end
end
temp = y_current(r+1:r+N,c+1:c+N)-y_ref(r+1+y1:r+y1+N,c+1+x1:c+x1+N);
TemP = dct2(temp);
s = sign(TemP);
TemP1 = s .* round(abs(TemP)/(16*quantizer_scale))*(16*quantizer_scale);
temp = idct2(TemP1);
Base(r-N+1:r,c-N+1:c) = y_ref(r+1+y1:r+y1+N,c+1+x1:c+x1+N)+temp;
delta_DCT = TemP - TemP1;
s1 = sign(delta_DCT);
delta_DCT = s1 .* round(abs(delta_DCT)/4)*4;
temp1 = idct2(TemP1 + delta_DCT);
Enhanced(r-N+1:r,c-N+1:c) = y_ref(r+1+y1:r+y1+N,c+1+x1:c+x1+N) +temp1;
end
end
Base_snr(f-1) = 10*log(std2(y_current(N+1:Height+N,N+1:Width+N))/std2(y_current(N+1:Height+N,N+1:Width+N)-Base));
Enhanced_snr(f-1) = 10*log(std2(y_current(N+1:Height+N,N+1:Width+N))/std2(y_current(N+1:Height+N,N+1:Width+N)-Enhanced));
Base_psnr(f-1) = 20*log10(255/std2(y_current(N+1:Height+N,N+1:Width+N)-Base));
Enhanced_psnr(f-1) = 20*log10(255/std2(y_current(N+1:Height+N,N+1:Width+N)-Enhanced));
y_ref = Base;
y_ref = double(padarray(y_ref,[W/2 W/2],'replicate'));
fid = fopen('image.txt');
[I,cnt] = fscanf(fid,'%d',inf);
fclose(fid);
end
figure,
writerObj = VideoWriter('compressed');
open(writerObj);
for xc = 1:nFrames
strtemp1=strcat('K1frames\',int2str(xc),'.',pickind);
xb = imread(strtemp1);
writeVideo(writerObj,xb)
imshow(xb)
pause(0.001)
end
close(writerObj);
get(writerObj)
s=aviinfo('compressed.avi');
output_file_size = s.FileSize
figure,plot(F(2:end),Enhanced_snr,'k*','LineWidth',1),
title('SNR (dB)')
axis([F(2) F(end) min(Base_snr)-2 max(Enhanced_snr)+2])
legend('Enhanced Quality',0)
xlabel('Frame number'), ylabel('psnr(dB)')