Image processing 将OpenEXR拆分为不同的曝光图像

Image processing 将OpenEXR拆分为不同的曝光图像,image-processing,openexr,Image Processing,Openexr,我正试图用Python来实现这一点。数据集中的每个图像都有一个可以下载的文件(我对这种文件格式没有太多经验) 我想从具有不同曝光的OpenEXR文件中提取不同的样本(jpg或png) 我设法做到了这一点: 打开OpenEXR文件(图像) 改变曝光 另存为jpg 重做每个曝光值(-3EV,-2EV,-1EV,0EV,1EV,2EV,3EV) 问题是:我有100张图像,我想自动化这个过程。你知道怎么做吗 提前感谢您由于EV的每个增量(“曝光值”)对应于曝光的两倍,并且EXR文件处于线性光下(非伽

我正试图用Python来实现这一点。数据集中的每个图像都有一个可以下载的文件(我对这种文件格式没有太多经验)

我想从具有不同曝光的OpenEXR文件中提取不同的样本(jpg或png)

我设法做到了这一点:

  • 打开OpenEXR文件(图像)
  • 改变曝光
  • 另存为jpg
  • 重做每个曝光值(-3EV,-2EV,-1EV,0EV,1EV,2EV,3EV)
问题是:我有100张图像,我想自动化这个过程。你知道怎么做吗


提前感谢您

由于EV的每个增量(“曝光值”)对应于曝光的两倍,并且
EXR
文件处于线性光下(非伽马编码),因此您希望可以将
EXR
文件中的像素值加倍以添加1EV并将其减半以执行-1EV

因此,我从下载了
Luxo
EXR文件。然后我进入Photoshop并点击:

Image -> Mode -> 8-bits/channel
选择
方法
=
曝光和伽马
,设置
曝光=+1
,并将结果文件保存为一个名为
+1
JPEG
。我重复了EV-3,EV-2,EV+0,EV+1,EV+2,EV+3

然后,我使用ImageMagick在终端中使用如下命令查看结果文件,以检查组合RGB图像的平均值:

magick identify -verbose image-EV+2.jpg
然后,我开始产生这些相同的平均值,并发现以下方法有效:

# To increase 1 EV
magick input.exr -evaluate multiply 2 result.jpg

# To increase 2 EV
magick input.exr -evaluate multiply 4 result.jpg

# To increase 3 EV
magick input.exr -evaluate multiply 8 result.jpg
等等


因此,我编写了一个
bash
脚本,如下所示,您可以将其作为
adjust.sh
保存在主目录中:

#!/bin/bash

# Default file, if none specified
file=${1:-/Users/mark/Desktop/LuxoDoubleChecker.exr}

# Default EV of +1, if none specified
EV=${2:-1}

# Strip extension
base="${file%.*}"

# Apply given EV to file and save with new name
new="${base}EV${EV}.jpg"
echo "Applying EV $EV to $file, saving as $new"
magick "$file" -evaluate multiply $(bc -l <<< "2^$EV") "$new"
然后像这样运行它,将+3EV添加到
SomeImage.exr

~/adjust.sh SomeImage.exr 3
样本输出

Applying EV 3 to SomeImage.exr, saving as SomeImageEV3.jpg

或者,如果将此脚本另存为
allEVs.sh
,它将只加载指定的图像一次,并一次性生成所有7张曝光,而无需重新读取输入EXR文件7次:

#!/bin/bash

# Default file, if none specified
file=${1:-/Users/mark/Desktop/LuxoDoubleChecker.exr}

# Strip extension to get base without extension
base="${file%.*}"

magick "$file" \
    \( +clone -evaluate multiply 0.125 -write "${base}EV-3.jpg" +delete \)  \
    \( +clone -evaluate multiply 0.25  -write "${base}EV-2.jpg" +delete \)  \
    \( +clone -evaluate multiply 0.5   -write "${base}EV-1.jpg" +delete \)  \
    \( +clone -evaluate multiply 1     -write "${base}EV-0.jpg" +delete \)  \
    \( +clone -evaluate multiply 2     -write "${base}EV+1.jpg" +delete \)  \
    \( +clone -evaluate multiply 4     -write "${base}EV+2.jpg" +delete \)  \
              -evaluate multiply 8     "${base}EV+3.jpg"

请仔细检查,这对你来说是正确的,然后再根据它进行终身分析


关键词:图像处理、HDR、高动态范围、EXR、EV、曝光值、f-stop、stop、stops、曝光、增加、减少、色调图、ImageMagick。

你对这个世界太棒了。。。非常感谢你。。你是个救生员。。我只检查了2个转换,它们看起来相当不错,只有一个问题。这些是来自Ahwahneegreatlanguage的转换:。。。
#!/bin/bash

# Default file, if none specified
file=${1:-/Users/mark/Desktop/LuxoDoubleChecker.exr}

# Strip extension to get base without extension
base="${file%.*}"

magick "$file" \
    \( +clone -evaluate multiply 0.125 -write "${base}EV-3.jpg" +delete \)  \
    \( +clone -evaluate multiply 0.25  -write "${base}EV-2.jpg" +delete \)  \
    \( +clone -evaluate multiply 0.5   -write "${base}EV-1.jpg" +delete \)  \
    \( +clone -evaluate multiply 1     -write "${base}EV-0.jpg" +delete \)  \
    \( +clone -evaluate multiply 2     -write "${base}EV+1.jpg" +delete \)  \
    \( +clone -evaluate multiply 4     -write "${base}EV+2.jpg" +delete \)  \
              -evaluate multiply 8     "${base}EV+3.jpg"