那是 200TB 的输入图像,甚至没有为输出图像留出任何存储空间。假设您每秒可以处理 1 张图像,这也是 24 小时/天处理的 173 天——我对此表示怀疑。
您可能想与 Fred Weinhaus @fmw42 谈谈他的Retinex脚本(在该页面上搜索“hazy”),它在去除雾霾方面做得相当出色。你的项目听起来很商业化。
© Fred Weinhaus - Fred 的 ImageMagick 脚本
如果/当你得到一个你想要的脚本时,我建议使用GNU Parallel来获得不错的性能。我还认为您可能需要考虑将 Fred 的算法移植或移植到 C++ 或 Python 以使用OpenCV而不是ImageMagick运行。
因此,假设您有一个 24 核 MacPro,以及一个以 Sony 图像名称为参数的bash
脚本,您可以运行:ProcessOne
ARW
find . -iname \*.arw -print0 | parallel --progress -0 ProcessOne {}
这将在当前目录中递归查找所有 SonyARW
文件并将它们传递到GNU Parallel,然后这将使所有 24 核保持忙碌,直到全部完成。您可以同时指定更少或更多的作业,例如,parallel -j 8 ...
注意 1:您还可以列出网络中其他服务器的名称,它也会将负载分散到它们之间。GNU Parallel能够将图像与作业一起传输到远程服务器,但我不得不质疑这样做是否有意义 - 您可能希望将图像的一个子集放在每个服务器上它自己的本地磁盘 I/O 并自己独立运行服务器,而不是从全球单点分布。
注意 2:您将希望您的磁盘配置良好,以处理多个并行 I/O 流。
注意 3:如果您确实编写了处理图像的脚本,请将其编写为接受多个文件名作为参数,然后您可以运行parallel -X
,它将传递sysctl
参数kern.argmax
允许的尽可能多的文件名。这样,您就不需要bash
每个图像的整个或 OpenCV C/C++ 进程。