日记存档 (2005.3.4~2005.3.18)

日记存档 (2005.3.4~2005.3.18)

今天把JPEG标准(ITU T.81 即 ISO/IEC 10918-1)里关于Baseline process的部分看完了.
印象不是很深,完全实现起来也很麻烦.接下来就要看看JFIF文档了.
估计还要看一遍JPEG标准,而且同时要看别人JPEG编码解码程序的实现才行.

测了一下,以前写的CODEC,把25幅bmp压成jpeg需要3~4秒.
是在CY 1.2G的机器上测的.
以前写得太烂了,而且很不规范.要重写,加优化到至少0.5秒以内.
主机端应该可以做到,手持端就比较麻烦了,才100M.

FT.

2005.3.4

看了JFIF标准.
看了1999年Cristi Cuturicu写的JPEG codec algorithm和note.
感觉encoder简单,而decoder比较麻烦,要处理的东西多.
他的decoder写得有些乱了.基本流程还能看懂.
对scaled AA&N DCT不明白,和我原来用的方法不一样.
而且色彩空间转换也不是按照转换矩阵直接算的,作了优化,不太直观.

整理了一下CODEC里用到的marker,syntax和procedure.

2005.3.5

今天上午到教室里看书.
下午开始写开题报告了.
写了文献综述里的第一部分.列了几个标准:
H.261标准(ITU H.261)
H.263标准(ITU H.263)

JPEG标准(ISO/IEC 10918  ITU T.81)
MJPEG格式

MPEG-1标准(ISO/IEC 11172)
MPEG-2标准(ISO/IEC 13818)

MPEG-4标准(ISO/IEC JTCI/SC29/WG11 N4668)

画了一下系统框图.纸上谈兵罢了...

2005.3.6

累死了,写开题报告,还没写完.
抄也累,宁可做点有实质意义的东西.

扫了一下IJG库里的色彩空间转换方法,基本方法算是明白了.
就是把方程组里的浮点比例扩大成整数,避免浮点运算,
最后除(用位移替代,加速)以比例因子.
但还有很多细节,用来防止数据溢出.

2005.3.7





昨天把开题报告写完了.
这两天看IJG编解码代码里的FDCT和IDCT.
FDCT和里面用的AANSCALE_FACTOR,我终于看懂是什么意思了,和我原来用的公式是相通的.就是把比例因子提出来.最后量化用乘法,而不用除法.
但理论上还是没解释通,不知道怎么把S矩阵提出来.
唉,线性代数没学好...还是查资料看看...

IDCT实在是看不懂,和我用转置矩阵求出来的流图对不上.
但我的流图应该是没错,试过了.但运算量肯定比IJG的大:

源数据:
  140  144  147  140  140  155  179  179
  144  152  140  147  140  148  167  179
  152  155  136  167  163  162  152  172
  168  145  156  160  152  155  136  160
  162  148  156  148  140  136  147  162
  147  167  140  155  155  140  136  162
  136  156  123  167  162  144  140  147
  148  155  136  155  152  147  147  136

DCT后(QValue = 100, 品质最好, 量化步长=1)
  187  -19   15  -10   24  -10  -14  -19
   21  -35   27  -10  -10   10   14    7
  -10  -24   -1    5  -17    3  -20   -1
   -8   -6   15  -15   -8   -3   -3    8
   -3    9    9    1  -10   18   19   15
    4   -3  -18    8    9   -4    1   -7
    9    0   -3    3   -1   -8   -1   -2
    0   -8   -2    1    1    4   -6    0

重构:
  140  144  147  140  140  155  179  179
  144  152  140  147  140  148  167  179
  151* 155  136  167  164* 162  152  173*
  168  145  156  160  153* 155  136  160
  162  148  156  148  140  136  147  162
  146* 167  140  155  155  140  136  162
  136  156  123  167  162  144  140  147
  148  155  136  155  152  147  147  136

带*的数值不一样,可能是浮点误差.不太清楚.
用double和float一样.

2005.3.9





这两天,做了一些基础工作.
学习和小结了一下几种基本数据类型的输入输出,
做了几个实验:

Dev-C++下关于float/double类型的实验

Dev-C++下关于char类型的实验

Dev-C++下关于几种int类型格式符的实验

Dev-C++下关于long long类型的实验

http://blog.csdn.net/jx_kingwei/


发现好多问题不懂...唉,汗颜~~~~~~

2005.3.11

看了一天的矩阵,晕死了.
IDCT搞不定啊.
~~~~~~~~~~~~~~~~~~~~~~~~

2005.3.14

FDCT/IDCT终于看出些门道了....
都是矩阵倒来倒去.

呵呵,虽然偶的IDCT和IJG库里用的流程不一样,
不过算法复杂度也差不多了~~~~~~~~~

2005.3.15

今天开题,被问傻掉了...

下午和晚上,写了两个模块:
stream.cpp和ycbcr.cpp

IJG色彩空间转换的方法太变态的~~~~~
都不知道精度如何.还是方程好理解.

Y  =  0.29900*R + 0.58700*G + 0.11400*B    
Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128    
Cr =  0.50000*R - 0.41869*G - 0.08131*B + 128

R = Y                    + 1.40200*(Cr-128)
G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128)
B = Y + 1.77200*(Cb-128)

2005.3.16

这两天在写色彩空间转换和子采样部分.
为了411,422,444三种采样格式,写了6个函数,
来完成子采样,和向上采样过程.

原来想用两个函数统一完成.
可惜太麻烦,判断多了,速度也会变慢.
还是分开,用函数指针调用好了.

原来用的跳点的方法,在色块边缘失真太严重了.
要取均值.现在效果好多了.

呵呵~~~~~

2005.3.18

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值