VIPS (および Python) で、16 ビット tiff ファイルのさまざまな色調範囲にさまざまな変換を適用する必要があります。私はそうすることができましたが、私は VIPS を初めて使用し、効率的な方法でこれを行っていると確信していません. これらの画像はそれぞれ数百メガバイトであり、余分な各ステップをカットすることで、画像ごとに数秒節約できます.
たとえば、ルックアップ テーブルを使用するなど、以下のコードから得られるのと同じ結果を達成するためのより効率的な方法があるかどうか疑問に思います (それらが VIPS でどのように機能するかは実際にはわかりませんでした)。このコードは、赤のチャネルで影を分離し、変換を介して渡します。
im = Vips.Image.new_from_file("test.tiff")
# Separate the red channel
band = im[0]
# Find the tone limit for the bottom 5%
lim = band.percent(5)
# Create a mask using the tone limit
mask = (band <= lim)
# Convert the mask to 16 bits
mask = mask.cast(band.BandFmt, shift = True)
# Run the transformation on the image and keep only the shadow areas
new_shadows = (65535 * (shadows / lim * 0.1)) & mask
各色調範囲 (ハイライト、シャドウ、ミッドトーン) に対して多かれ少なかれ同様のコードを実行した後、結果のすべての画像を追加して、元のバンドを再構築します。
new_band = (new_shadows.add(new_highlights).add(new_midtones)).cast(band.BandFmt)