写真のソラリゼーション効果を生み出すアルゴリズムを探しています。誰かにリンクやアルゴリズムがありますか?セピアや漫画など、他のフィルターにも興味があります。sepiaについては、ここでいくつかのコードを見つけました。Webで、これらのフィルターの実装に関する情報はあまり見つかりませんでした。
あいさつ
写真のソラリゼーション効果を生み出すアルゴリズムを探しています。誰かにリンクやアルゴリズムがありますか?セピアや漫画など、他のフィルターにも興味があります。sepiaについては、ここでいくつかのコードを見つけました。Webで、これらのフィルターの実装に関する情報はあまり見つかりませんでした。
あいさつ
ソラリゼーションとは、応答曲線が単調ではないことを意味します(単に明るさが増加するのではなく、「出力」が明るくなり始め、暗くなり、「入力」が明るくなるにつれて再び増加します)。それを実装する最も簡単な方法は(簡単な値の場合)、ピクセル値を変換するより一般的なプロセスの特殊なケースとしてです。
これがメインルーチンのPython風の擬似コードです。
def transform(image, f):
for pixel in image:
pixel = f(pixel)
ピクセルを0から1の間の値に選択した場合(任意の値を正規化し、色がR、G、Bを同じように扱う場合)、次を使用してガンマを変更(コントラストを変更)できます。
transform(image, f(x): x^gamma)
ソラリゼーションの場合、減少してから再び増加する関数が必要です。したがって、1-4x + 4x ^ 2のようなもの:
transform(image, f(x): 1-4x+4x^2)
それがすべて少し不透明な場合のために、ここに物事をより明確にするためのいくつかの数字があります:
次に、ユーザーが変更できるいくつかのパラメーター(a + bx + cx ^ 2など)を曲線に追加することで、さらに詳しく説明できます。
(実際には、より一般的である可能性があります-複数のピークを持つか、明るい点で黒くなる可能性があります-たとえば、黒い太陽のあるアンセルアダムスの画像があります。アイデアは同じです。高次の多項式を使用するか、符号を変更します。上記のパラメータの-a-vecは明るい領域を暗くします。また、多項式ではなくスプラインを使用できます。基本的に、これは入力から出力へのマッピングであり、「上下」に移動し、その中で多くの柔軟性があります。 。)。