【问题标题】:Batch Convert Sony raw ".ARW" image files to .jpg with raw image settings on the command line使用命令行上的原始图像设置将 Sony 原始“.ARW”图像文件批量转换为 .jpg
【发布时间】:2021-03-24 21:48:17
【问题描述】:

我希望将 1500 万个 12.8 mb 索尼 .ARW 文件转换为 .jpg

我已经弄清楚了如何在命令行上使用 sips 来实现,但我需要对原始图像设置进行调整:对比度、高光、黑色、饱和度、自然饱和度,最重要的是去雾。我会对每张照片应用相同的设置。

如果我可以调整如何合并 Dehaze,ImageMagick 似乎应该可以工作,但我似乎无法让 ImageMagick 工作。

我已经对 Lightroom Classic / Photoshop / Bridge / RAW Power / 和其他一些程序进行了基准测试。 Raw Power 是迄今为止最快的(在 M1 Mac Mini 16GB Ram 上),但 Raw Power 不允许我一次处理多个文件夹。

我用 Photoshop 编写了很多脚本/动作 - 但在这种情况下,Photoshop 是迄今为止最慢的选择。我相信这是因为它会打开每张照片。

【问题讨论】:

    标签: macos command-line imagemagick lightroom sips


    【解决方案1】:

    这是 200TB 的输入图像,甚至没有为输出图像留出任何存储空间。假设您每秒可以处理 1 张图像,这也是 173 天 24 小时/天处理的固定时间 - 我对此表示怀疑。

    您可能想与 Fred Weinhaus @fmw42 谈谈他的 Retinex 脚本(在该页面上搜索 "hazy"),该脚本在去除雾霾方面做得相当出色。您的项目听起来很商业化。

    © Fred Weinhaus - Fred's ImageMagick scripts

    如果/当您获得执行所需操作的脚本时,我建议您使用 GNU Parallel 以获得不错的性能。我还认为您可能需要考虑将 Fred 的算法移植或移植到 C++ 或 Python 以使用 OpenCV 而不是 ImageMagick 运行。

    因此,假设您有一个 24 核 MacPro,以及一个名为 ProcessOnebash 脚本,该脚本将 Sony ARW 图像的名称作为参数,您可以运行:

    find . -iname \*.arw -print0 | parallel --progress -0 ProcessOne {}
    

    这将在当前目录中递归查找所有 Sony ARW 文件并将它们传递到 GNU Parallel,这将使所有 24 核保持忙碌,直到全部完成。您可以同时指定更少或更多的作业,例如 parallel -j 8 ...

    注意 1:您还可以列出网络中其他服务器的名称,这样也会将负载分散到它们之间。 GNU Parallel 能够将图像与作业一起传输到远程服务器,但我不得不质疑为这项任务这样做是否有意义 - 你可能想要放置一个子集每台服务器上的映像都具有自己的本地磁盘 I/O,并自己独立运行服务器,而不是从全球单点分发。

    注意 2:您需要正确配置磁盘以处理多个并行 I/O 流。

    注意 3:如果您确实编写了处理图像的脚本,请将其编写为接受 多个 文件名作为参数,然后您可以运行 parallel -X 和它将传递您的sysctl 参数kern.argmax 允许的尽可能多的文件名。这样一来,每个图像就不需要整个 bash 或 OpenCV C/C++ 进程。

    【讨论】:

    • @fmw42 Fred,我希望你不介意我在你的网站上截屏。如果你这样做,请随时编辑和删除它,或者告诉我,我会立即删除。
    • 没关系。但是retinex很慢。也许我的其他脚本之一会更好,例如我的空间或 autotone2 或自适应伽玛脚本。
    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 2014-10-01
    • 2011-12-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 2015-11-17
    相关资源
    最近更新 更多