MAIN CODE
image=imread("E:\sem 7\image vvideo coding\project\SLguitarGUY.png");
img=rgb2gray(image);
Q = [80 60 50 80 120 200 255 255; 55 60 70 95 130 255 255 255; 70 65 80 120 200 255 255 255;70 85 110 145 255 255 255 255; 90 110 185 255 255 255 255 255;120 175 255 255 255 255 255 255; 245 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255];
%Q = [16 11 10 16 24 40 51 61;12 12 14 19 26 58 60 55;14 13 16 24 40 57 69 56;14 17 22 29 51 87 80 62;18 22 37 56 68 109 103 77;24 35 55 64 81 104 113 92;49 64 78 87 103 121 120 101;72 92 95 98 112 100 103 99];
%Q = [3 2 2 3 5 8 10 12;2 2 3 4 5 12 12 11;3 3 3 5 8 11 14 11;3 3 4 6 10 17 16 12;4 4 7 11 14 22 21 15;5 7 11 13 16 12 23 18;10 13 16 17 21 24 24 21;14 18 19 20 22 20 20 20];
%Q=ones(8);
macrobock_size = 8;
[IMG,y,x]=macroblocks(img,macrobock_size);
DCT_tf_img = dct_full_image(IMG,macrobock_size,Q);
%-----------zig zag-------------------------------------------------------
[rvec,cvec] = zigzag(cell2mat(DCT_tf_img(1,1)));
img_One_D_vector = oneMblockVec(DCT_tf_img,macrobock_size,rvec,cvec);
%-------run length code----------------------------------------------------
run_L_coded = run_length_coding(cell2mat(img_One_D_vector));
%--------huffman------------------------------------------------------------
[g,~,intensity_val] = grp2idx(run_L_coded);
Frequency = accumarray(g,1);
[intensity_val Frequency];
proability = Frequency./sum(Frequency);
dict = huffmandict(intensity_val,proability);
code = huffmanenco(run_L_coded,dict);