7

状況:

1 つのメイン カラーの画像があり、指定された RGB 値に基づいて別の色に変換する必要があります。

問題:

変換する必要があるその色のさまざまな、しかし同様の色合いが多数あります。これにより、単純な「すべてを (0,0,0) ピクセルから (0,100,200) に変更する」ソリューションは役に立たなくなります。

このタスクをより管理しやすくするアルゴリズムまたは画像操作技術に関して、誰かが私を正しい方向に向けることができれば、それは素晴らしいことです。

私は PIL を使用してこの問題を試みてきましたが、一般的なヒントがあればいいでしょう。

編集:

また、私が求めていることの一部(色相の変更)を行うために、この他のSOの回答(Changing image hue with Python PIL)を使用しましたが、彩度や値は考慮されていません

編集: http://dpaste.org/psk5C/は、pil を使用して、使用する必要がある RGB 値と、それに付随する hsv を確認する方法を示しています。

4

1 に答える 1

4

リンクされた質問の解決策を参照してshift_hue()ください。色相だけでなく、色相、彩度、および値を調整する機能を調整できます。これにより、これらすべてのパラメーターを好きなようにシフトできるようになります。

オリジナル:

def shift_hue(arr, hout):
    r, g, b, a = np.rollaxis(arr, axis=-1)
    h, s, v = rgb_to_hsv(r, g, b)
    h = hout
    r, g, b = hsv_to_rgb(h, s, v)
    arr = np.dstack((r, g, b, a))
    return arr

調整版:

def shift_hsv(arr, delta_h, delta_, delta_v):
    r, g, b, a = np.rollaxis(arr, axis=-1)
    h, s, v = rgb_to_hsv(r, g, b)
    h += delta_h
    s += delta_s
    v += delta_v
    r, g, b = hsv_to_rgb(h, s, v)
    arr = np.dstack((r, g, b, a))
    return arr

元の画像のベース カラーと必要なターゲット カラーがわかっていると仮定すると、デルタを簡単に計算できます。

base_h, base_s, base_v = rgb_to_hsv(base_r, base_g, base_b)
target_h, target_s, target_v = rgb_to_hsv(target_r, target_g, target_b)
delta_h, delta_s, delta_v  = target_h - base_h, target_s - base_s, target_v - base_v
于 2012-08-06T18:03:49.550 に答える