【发布时间】:2015-07-24 01:11:34
【问题描述】:
我有四个已知大小相同的 .j2k 文件(无损),我想将它们组合成一个更大的 .j2k 文件。当然,现在简单而有效的方法是将它们解压缩为位图并将较大的位图压缩为 .j2k 文件 - 但这是性能开销。有没有更简单的方法?如果是这样,你能用伪代码突出显示它吗?
更新
根据@malat 的建议,我尝试关注(see my github repo for full sources and image examples):
// for the simplicity I'm using same image to make 4 tiles 2x2
jpeg.header.Xsiz *= 2;
jpeg.header.Ysiz *= 2;
vector<j2k_tile_part> tiles = jpeg.tiles;
BOOST_FOREACH(j2k_tile_part& part, jpeg.tiles)
{
part.Isot = 2;
}
for (int i = 0; i < 3; i++)
{
BOOST_FOREACH(const j2k_tile_part& part, tiles)
{
j2k_tile_part clone(part);
switch(i)
{
case 0:
clone.Isot = 3;
break;
case 1:
clone.Isot = 0;
break;
case 2:
clone.Isot = 1;
break;
}
jpeg.tiles.push_back(clone);
}
}
jpeg.save_file(output_file);
哪个有效(就具有正确尺寸和填充图像数据的图像而言)。只有第一块瓷砖看起来还可以,但其他瓷砖就搞砸了。我虽然瓷砖是单独编码的 - 我错了吗?我还尝试将 COD 和 QCC 标记从主标题复制到磁贴标题 - 但这也没有帮助。
【问题讨论】:
-
您最终需要提供更多详细信息:仅 JP2 Part-1 或 Part-2 可接受(例如:JPX 文件)?所有图块的大小都相同吗?
标签: c++ c image-processing jpeg2000