我有一个问题,即在不进入线性空间的情况下减小RAW图像的整体尺寸。原因是,我想尝试编辑一个非常大的百万像素图像(60多万像素),但是在编辑iPad或iPhone屏幕时不需要完整的图像。编辑完成后,我确实要保存原始文件。保存的速度不是一个问题,它是在"工作"上进行的编辑。我正在预览编辑的图片。
我想保留RAW数据,因为我想利用新的CoreImage RAW功能并编写一些我自己的RAW CIF过滤器,但不需要一直处理巨大的RAW图像。
如果可以使用Swift中的某些内容或任何我可以桥接的语言来实现这一点。实际的大小调整不一定非常快,在开始编辑之前可能是一次性操作。
我相信阅读this post可能有两种方法:
谢谢!
答案 0 :(得分:1)
我对Swift / iOS中的CoreImage或图像处理并不十分熟悉,但让我试着给你至少一个起点。
原始图像(拼接图像)本质上是单通道图像,其中不同的像素对应于不同的颜色。常见布局可能如下所示:
R G R G
G B G B
R G R G
G B G B
请注意,在这种安排中(对于大多数马赛克文件来说很常见,但有明显的例外),每个2x2像素组在图像上重复。为了调整大小,可以将这些2x2区域视为超像素。
我假设您可以从文件或内存访问图像缓冲区的像素数据。
有效生成较低分辨率RAW图像的最简单方法是通过整数因子对图像进行下采样。为此,您只需沿行和列取每个n th 超像素,以形成新的RAW图像。
但是,此操作可能会导致图像中出现Aliasing等图像瑕疵,因为您可能会将新RAW图像的奈奎斯特频率降低到原始RAW中最高频率内容的奈奎斯特频率。图像。
为了避免这种情况,您需要在下采样之前应用Anti-Aliasing Filter。但是,由于您尚未对图像进行去马赛克,并且您的不同颜色通道(R,G,B)不一定相关,因此您需要对每个颜色通道应用此过滤。
对于形成矩形网格的R和B通道,这很容易实现,但G通道要困难得多。也许克服这种困难的最简单方法是分别对图像上的矩形G网格进行过滤。
现在,我假设大部分功能需要从头开始实现,因为RAW图像抗锯齿下采样不是常用功能。您可以通过简单地将原始RAW去马赛克,使用提供的重新采样功能生成低分辨率预览,并允许在去马赛克预览上进行图像调整来节省大量时间。然后,当您要保存全分辨率编辑时,请返回并将预览的更改应用于全分辨率,拼接的RAW图像。
希望这可以提供一些起点。