91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 103KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-13
  • 語言: Matlab
  • 標簽: jpeg??matlab??

資源簡介

實現jpeg壓縮 的matlab程序 實現jpeg壓縮 的matlab程序

資源截圖

代碼片段和文件信息

function?B=Code_Huffman(A)
%根據huffman編碼表對量化后的數據編碼
%依次輸入DC系數差值(A中DC系數已做過差分)和AC系數的典型Huffman表
%只處理8×8DCT系數量化矩陣
DC_Huff={‘00‘‘010‘‘011‘‘100‘‘101‘‘110‘‘1110‘‘11110‘‘111110‘‘1111110‘‘11111110‘‘111111110‘};
%由于AC系數數據量較大,我們將它保存在AC_Huff.txt文件中,將它讀入元胞數組中
fid=fopen(‘AC_Huff.txt‘‘r‘);
AC_Huff=cell(1610);
for?a=1:16
????for?b=1:10
????????temp=fscanf(fid‘%s‘1);
????????AC_Huff(ab)={temp};
????end
end
fclose(fid);
%對A中的數據進行Zig-Zag掃描%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
i=1;
for?a=1:15
????if?a<=8
????????for?b=1:a
????????????if?mod(a2)==1
???????????????Z(i)=A(ba+1-b);
???????????????i=i+1;
????????????else
???????????????Z(i)=A(a+1-bb);
???????????????i=i+1;
????????????end
????????????
????????end
????else
????????for?b=1:16-a
????????????if?mod(a2)==0
???????????????Z(i)=A(9-ba+b-8);
???????????????i=i+1;
????????????else
???????????????Z(i)=A(a+b-89-b);
???????????????i=i+1;
????????????end??????????????????????????????
????????end
????end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%先對DC差值系數編碼:前綴碼SSSS+尾碼
%dc為其Huffman編碼
if?Z(1)==0
????sa.s=DC_Huff(1);???%%%size分量存放前綴碼
????sa.a=‘0‘;???????????%%%amp分量存放尾碼
????dc=strcat(sa.ssa.a);
else????
????n=fix(log2(abs(Z(1))))+1;
????sa.s=DC_Huff(n);
????sa.a=binCode(Z(1));
????dc=strcat(sa.ssa.a);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%再對AC系數進行行程編碼保存在結構體數組rsa中
if?isempty(find(Z(2:end)))??%如果63個交流系數全部為0,rsa系數全部為0
????rsa(1).r=0;?????????????%行程runlength
????rsa(1).s=0;?????????????%碼長size
????rsa(1).a=0;?????????????%二進制編碼
else
???T=find(Z);??????????????%找出Z中非零元素的下標
???T=[0?T(2:end)];?????????%為統一處理將第一個下標元素置為0
???i=1;????????????????????%?i為rsa結構體的下標??
???%從第二個元素即第一個交流元素開始處理
???j=2;
???while?j<=length(T)
???????t=fix((T(j)-1-T(j-1))/16);???%判斷下標間隔是否超過16
???????if?t==0??????????????????????%如果小于16,較簡單
???????????rsa(i).r=T(j)-T(j-1)-1;
???????????rsa(i).s=fix(log2(abs(Z(T(j)))))+1;
???????????rsa(i).a=Z(T(j));
???????????i=i+1;
???????else?????????????????????????%如果超過16,需要處理(15,0)的特殊情況
???????????for?n=1:t????????????????%可能出現t組(15,0)?
???????????????rsa(i)=struct(‘r‘15‘s‘0‘a‘0);
???????????????i=i+1;
???????????end
???????????%接著處理剩余的那部分
???????????rsa(i).r=T(j)-1-16*t;
???????????rsa(i).s=fix(log2(abs(Z(T(j)))))+1;
???????????rsa(i).a=Z(T(j));
???????????i=i+1;
???????end
???????j=j+1;
???end
???%判斷最后一個非零元素是否為Z中最后一個元素
???if?T(end)<64
???????rsa(i).r=0;
???????rsa(i).s=0;
???????rsa(i).a=0;
???end??????????????????????%以EOB結束
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%---------通過查表獲取AC系數的Huffman編碼

B=dc;?????????????????????????%B初始化為直流系數編碼
for?n=1:length(rsa)
????if?rsa(n).r==0&rsa(n).s==0&rsa(n).a==0
????????ac(n)={‘1010‘};??
????elseif?rsa(n).r==15&rsa(n).s==0&rsa(n).a==0
????????ac(n)={‘11111111001‘};
????else
????????t1=AC_Huff(rsa(n).s+1rsa(n).s);??%應該為?rsa(

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????66616??2006-05-10?23:24??jpeg-matlab\1.bmp

?????文件???????6642??2006-05-29?21:42??jpeg-matlab\AC_Huff.txt

?????文件???????3950??2009-03-21?13:08??jpeg-matlab\Code_Huffman.m

?????文件???????1535??2009-03-12?14:17??jpeg-matlab\DCT2D.asv

?????文件???????1563??2009-03-12?14:18??jpeg-matlab\DCT2D.m

?????文件????????508??2006-05-28?22:09??jpeg-matlab\DCT_Measure.m

?????文件??????85972??2009-03-17?16:38??jpeg-matlab\JPGCode.txt

?????文件???????1070??2006-05-31?22:57??jpeg-matlab\JPGCompress.m

?????文件??????66614??2009-03-11?16:20??jpeg-matlab\Lena.bmp

?????目錄??????????0??2009-03-17?16:38??jpeg-matlab

-----------?---------??----------?-----??----

???????????????234470????????????????????10


評論

共有 條評論