首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多焦平面图像的有效压缩方法

多焦平面图像的有效压缩方法
EN

Stack Overflow用户
提问于 2015-12-23 22:26:15
回答 2查看 93关注 0票数 1

我在一个应用程序上工作,在不同的焦点平面上的图像是获取的,目前存储在一个多页的tif中。不幸的是,基于tif的压缩技术不能从不同焦点平面上的信号冗余中受益。

我在ZPEGJPEG2000 Addon这里找到了一些关于这方面的资源

不幸的是,它们都离标准很远。

我想知道在这种情况下,是否有视频编解码器可以达到很好的压缩比?

我也非常开放,非常开放,任何其他想法。

EN

回答 2

Stack Overflow用户

发布于 2015-12-24 05:30:15

这里有一种不同的方法:将跨平面冗余转换为空间冗余,然后使用标准图像压缩。

以最简单的方式,只需要从每个平面上取宽度*1像素的条带,并将它们堆叠起来。作为一张图片,它看起来会以一种奇怪的方式垂直涂抹。最好将其与DCT块对齐(如果适用),以避免通过块的锐利水平边缘,因此可能应该通过复制平面将其填充到(通常)8个平面的倍数。您可以通过优化填充以获得更多的能量,但这是复杂的,而复制已经相当好和琐碎。

它显然不会很好地压缩未过滤的无损压缩,但使用适当的过滤器(向上,平均或paeth)的PNG应该可以工作。

票数 1
EN

Stack Overflow用户

发布于 2016-01-11 21:35:27

tiff的问题是它在基线中不支持组件间去相关。有些扩展名(支持范围不是很广)允许存储其他文件压缩格式(例如完整的JPEG2000 JP2文件,扩展名0x8798),但不能保证标准解码器将正确处理它。

如果您可以使用任何您想使用的工具,那么通过良好的谱去相关变换(用于有损压缩的KLT和用于无损压缩的RKLT -有关这些变换的JAVA实现,请参见http://gici.uab.cat/GiciWebPage/downloads.php#spectral )和一个好的压缩算法(如JPEG2000 ),可能可以获得接近最佳的编码性能。另一方面,由于KLT/RKLT转换,这种方法实现起来有点复杂,而且速度很慢。

另一种更简单的方法是简单地将JPEG2000与DWT一起使用来进行频谱去相关。例如,如果使用Kakadu实现(kakadusoftware.com),则只需在压缩时使用适当的参数。这里有一个从http://kakadusoftware.com/wp-content/uploads/2014/06/Usage_Examples.txt中提取的示例调用,

Ai) kdu_compress -i catscan.rawl*35@524288 -o catscan.jpx -jpx_layers * -jpx_space sLUM Creversible=yes Sdims={512,512} Clayers=16 Mcomponents=35 Msigned=no Mprecision=12 Sprecision=12,12,12,12,12,13 Ssigned=no,no,yes Mvector_size:I4=35 Mvector_coeffs:I4=2048 Mstage_inputs:I25={0,34} Mstage_outputs:I25={0,34} Mstage_collections:I25={ 35 ,35} Mstage_xforms:I25={DWT,1,4,3,0} Mnum_stages=1 Mstages=25 --压缩由35个切片组成的医疗卷,每个切片512x512,以原始小端格式表示,每个样本12位,每个样本打包成2个字节。这个示例遵循上面的示例(x),但是添加了一个多组件转换,它是基于5/3可逆内核(内核id是1,可以在Mstage\_xforms' record. -- To decode the above parameter attributes, note that: a) There is only one multi-component transform stage, whose instance index is 25 (this is the I25 suffix found on the descriptive attributes for this stage). The value 25 is entirely arbitrary. I picked it to make things interesting. There can, in general, be any number of transform stages. b) The single transform stage consists of only one transform block, defined by the内核的属性的第二个字段中找到)使用3级DWT实现的--通常可以有任意数量的转换块。c)该块采用35个输入分量并产生35个输出分量,如Mstage\_collections:I25' attribute. d) The stage inputs and stage outputs are not permuted in this example; they are enumerated as 0-34 in each case, as given by theMstage_inputs:I25‘and Mstage\_outputs:I25' attributes. e) The transform block itself is implemented using a DWT, whose kernel ID is 1 (this is the Part-1 5/3 reversible DWT kernel). Block outputs are added to the offset vector whose instance index is 4 (as given byMvector_size:I4’和Mvector\_coeffs:I4') and the DWT has 3 levels. The final field in theMstage_xforms‘记录所示,设置为0,这意味着多分量DWT的画布原点将被取为0。f)由于使用的是多分量变换,所以最终解压缩(或原始压缩)图像分量的精度和有符号/无符号属性由Mprecision' andMsigned‘给出,而它们的数量由Mcomponents'. g) Thes精度’和Ssigned' attributes record the precision and signed/unsigned characteristics of what we call the codestream components -- i.e., the components which are obtained by block decoding and spatial inverse wavelet transformation. In this case, the first 5 are low-pass subband components, at the bottom of the DWT tree; the next 4 are high-pass subband components from level 3; then come 9 high-pass components from level 2 of the DWT; and finally the 17 high-pass components belonging to the first DWT level. DWT normalization conventions for both reversible and irreversible multi-component transforms dictate that all high-pass subbands have a passband gain of 2, while low-pass subbands have a passband gain of 1. This is why all but the first 5s精度‘值提供额外的位--请记住,Sprecision' and带符号’数组中缺少的条目是通过复制最后提供的值获得的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34437771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档