返回   MATLAB中国论坛|MATLAB爱好者之家—不仅仅是MATLAB! > 特色讨论区:工程数学软件-不仅仅是MATLAB! > MATLAB论坛


MATLAB论坛 一切MATLAB相关问题在此讨论,发帖时必须选择相应主题前缀:MATLAB基础,MATLAB混合编程,MATLAB数学问题,MATLAB工具箱,MATLAB图像处理,MATLAB GUI,MATLAB毕业设计,Simulink相关等。

挖掘已有资源,发帖前请先搜索!
虚拟主机 域名注册 香港空间
回复
 
LinkBack 主题工具 显示模式
旧 2008-05-08, 10:45 PM   #1
初级会员
 
注册日期: 2008-04-19
年龄: 28
帖子: 1
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0
strongbox 正向着好的方向发展
问题 [求助]dct变换后 huffman dc ac编码 疑问?

Ir = imread('Car.bmp') ; %读取内存中bmp 格式图像文件
II=rgb2ycbcr(Ir); %将RGB颜色空间转换到YCBCR颜色空间

采样

%DCT变换
for k=1:ti1
for j=1:ti2
Dy{k,j}=dct2(Y((1+(k-1)*8):k*8,(1+(j-1)*8):j*8));%I1 (1+(k-1)*8):k*8,(1+(j-1)*8):j*8);
Dcb{k,j}=dct2(Cb((1+(k-1)*8):k*8,(1+(j-1)*8):j*8));%I2
Dcr{k,j}=dct2(Cr((1+(k-1)*8):k*8,(1+(j-1)*8):j*8));%I3
end
end
量化
for k=1:ti1
for j=1:ti2
I1((1+(k-1)*8):k*8,(1+(j-1)*8):j*8)=round(Dy{k,j}./my);
I2((1+(k-1)*8):k*8,(1+(j-1)*8):j*8)=round(Dcb{k,j}./miq);
I3((1+(k-1)*8):k*8,(1+(j-1)*8):j*8)=round(Dcr{k,j}./miq);
end
end

%对量化后的图像进行huffman编码
data1=uint8(I1);% 读入数据,并将数据限制为unit8型
[zipped1,info1] = norm2huff(data1);

[Words,Simbols] = huffcodes2bin(info1.huffcodes);


%DC编码

%AC编码

JPEG 的作者指出连续块的 DC 率之间有很紧密的联系, 因此他们决定对 8x8 块的DC 值的差别进行编码. (Y, Cb, Cr 分别有自己的 DC)

Diff = DC(i) - DC(i-1)

所以这一块的 DC(i) 就是: DC(i) = DC(i-1) + Diff
JPG 从 0 开始对 DC 编码, 所以 DC(0)=0. 然后再将当前 Diff 值加在上一个值上得到当前值.
这里连续块怎么理解,对于8X8的分块,是以行为连续呢还是以列为连续(如 :一行8X8矩阵数完了再下一行 开始8X8矩阵,)
这个DC编码与huffman编码有什么关系呢?一直没有闹懂 。很多关于AC的解说又是一笔带过,希望达人能给个DC编码、AC编码?我急用,谢谢解答。
strongbox 当前离线   回复时引用此帖
回复

书签

主题工具
显示模式

发帖规则
不可以发表新主题
可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 启用



所有时间均为北京时间。现在的时间是 10:39 AM


Powered by vBulletin
版权所有 ©2000 - 2012,Jelsoft Enterprises Ltd.
陕ICP备07001583号
感谢MEyu科技提供优质空间

SEO by vBSEO ©2009, Crawlability, Inc.