JPEG2000 Tips
来源:互联网 发布:查询dns缓存 linux 编辑:程序博客网 时间:2024/05/18 01:26
JPEG2000, 接触比较久了, 一直关注核心部分优化, 很多细节没有仔细了解, 最近重读标准, 把一些细节记录下来备忘.
1) JP2 / J2K / J2C
jp2或者j2k就是jpeg2000的裸码流, 保证能够正确解码, 其它多余的信息不被包含. jp2 就会有更多有用信息, 包括版权, 显示校正等等. A minimal JPEG 2000 decoder simply handles JPEG 2000 part 1 codestreams. However a codestream only contains compressed data and is not able to carry side-information such as intellectual property rights or color-spaces for correct display. For such cases, the JPEG 2000 standard defines a minimal file format, denominated as JP2, that encapsulates JPEG 2000 codestreams, whilst providing room for storing application specific data (i.e. metadata).
2) tile, precinct 的用途
一直不理解, 有了code-block, 直接把整个图象按照64x64的大小分割, 为什么还要把整图分割成几个tile, 为什么还要在每个subband 中划分 precinct, 看完标准文献后我的理解是: precinct的划分可以控制编码后每个包的大小不会过大, 而tile可以用来把一个超级大图分割成几个小点的部分,便于在有限的硬件或软件资源来计算.
3) 基本的码流结构
Start of Codestream Start of Tile-part Start of Data End of Codestream
+--------------+-----------------+--------------+-----------------+---------------+-----------------+---------------+
| SOC | main header | SOT | tile header | SOD | Tile-part data | EOC |
+--------------+-----------------+--------------+-----------------+---------------+-----------------+---------------+
4) XRsiz(i), YRsiz(i), Ssiz(i)
在确定了grid以后, grid上的区域代表图象的实际大小. 色度分量很多时候要进行降采样, 这个时候XRsiz和YRsiz代表横向和纵向分别要跳多少个点才是下一个采样点, 简单的说你的grid有1000个点, XRsiz = 1 代表实际采样点也有1000个, 如果 XRsiz = 2 代表你的实际采样点就只有500个. 工作中发现, kakadu and OpenJpegViewer 都对降采样的图片显示有问题, kakadu 无法显示降采样图片, 而OpenJpegViewer会崩溃, 暂时还没发现能支持降采样图片显示的软件.
5) Progression Order
包的排列顺序有多种,分别是 CPRL, LRCP, PCRL, RLCP, RPCL. 其中 C = Component, P = Position, R = Resolution, L = Layer. 一个图的码流里面容许多种包排列顺序.
6) JPEG2000 最权威的 overview
请看 jasper 作者 adams 写的 <The JPEG-2000 Still Image Compression Standard>, 浅显易懂. 中文翻译可以查看这个地址: http://blog.csdn.net/KXY_tech/archive/2009/02/19/3908484.aspx
7) PPM PPT 是什么
PPM = Packed Packet headers, Main header
PPT = Packed Packet headers, Tile-part header
在一个tile中,由于码流比较大,可以把一个tile的码流分割成若干个小的块,每块单独打包,称为 tile-part
8) PCRD Post Compression Rate Distortion
PCRD是JPEG2000码率控制的核心算法,量化是一种粗糙的码率控制,较精细和最终的码率控制是由PCRD实现的。如下图的率失真函数(L = Length of Bitstream,D = Distortion)。
λ就是说对于某个块,一共有3B - 2 个通道,每个通道对于最终图象质量的贡献是不一样的,那么(D[i] - D[i-1]) / (L[i] - L[i-1]) 就是这个λ,表示每比特数据对图象质量贡献。要让图象质量最高,只需要把Slope高的截断点位置数据保存就好。所以,通道的筛选即为:在满足条件下,寻找最优斜率阈值λopt,仅把每个码块中率失真斜率大于λopt的通道选入,组成最终码流。理论上,在同一编码块中,通道的率失真斜率是单调递减的。但在实际算法实现中却可能存在奇异点。若出现奇异点,则把奇异点设为无效截断点,合并两通道,合并后通道的截断点便是有效截断点。
- JPEG2000 Tips
- JPEG2000概述
- JPEG2000介绍
- JPEG2000 数据结构
- jpeg2000调研
- JPEG2000开源库
- 关于JPEG2000软件
- 开题 : JPEG2000十问
- 关于JPEG2000软件
- JPEG与JPEG2000
- JPEG与JPEG2000
- JPEG2000 小波变换
- Tips
- Tips
- Tips
- Tips
- > tips
- Tips
- 胡戈恶搞视频集合
- Qt 中 实现gif动画的播放
- Computer Vision
- 混合中值滤波器 ( Hybrid Median Filter ) C++ 实现
- Computer Vision
- JPEG2000 Tips
- 什么情况下只写try和finally语句而不用写catch 语句呢?
- 转:把界面上静态文本控件的尺寸根据文本的内容自动调整大小
- FLEX的相关资料
- alternatiffx是什么
- 动态生成的存储过程
- 一段非常好javascript字符串替换代码
- 奥搜垂直搜索引擎 v6.0 标准版 Build 080620
- Hibernate取查询结果集