Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-04-19
年龄: 41
帖子: 1
声望力: 0 ![]() |
![]()
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编码?我急用,谢谢解答。 |
![]() |
![]() |