2
RGBまたはHexのいずれかの色を指定すると、それに類似した色はどうやって見つかりますか?同様に私は小さい値で区別できるべきであることを意味します。Pythonでの類似の色検出
RGBまたはHexのいずれかの色を指定すると、それに類似した色はどうやって見つかりますか?同様に私は小さい値で区別できるべきであることを意味します。Pythonでの類似の色検出
RGB色空間はデバイスに依存し、知覚的に均一ではありません。色の類似性を測定する場合は、最初にRGB値をデバイスに依存せず知覚的に一様な色空間に変換する必要があります(例:CIELAB)。次に、Lab Delta Eのような適切な類似性メトリックによって色差を測定することができます。
はthis imageを考えてみましょう:
は、私たちはあなたの基準色が緑の木陰、そのRGB値の例[0, 160, 0]
と[120, 0, 140]
のためのものであるマゼンタの陰、であると仮定しましょう。次のスニペットは、基準色に対するデルタEが特定の閾値(それぞれ15
および20
)よりも小さい画像ピクセルを識別します。単に彼らのRGBコード間のユークリッド距離を取らない理由
import numpy as np
from skimage import io
from skimage.color import rgb2lab, deltaE_cie76
rgb = io.imread('https://i.stack.imgur.com/npnrv.png')
lab = rgb2lab(rgb)
green = [0, 160, 0]
magenta = [120, 0, 140]
threshold_green = 15
threshold_magenta = 20
green_3d = np.uint8(np.asarray([[green]]))
magenta_3d = np.uint8(np.asarray([[magenta]]))
dE_green = deltaE_cie76(rgb2lab(green_3d), lab)
dE_magenta = deltaE_cie76(rgb2lab(magenta_3d), lab)
rgb[dE_green < threshold_green] = green_3d
rgb[dE_magenta < threshold_magenta] = magenta_3d
io.imshow(rgb)
? numpy.sqrt(r1 - r0)** 2 +(g1 - g0)** 2 +(b1 - b0)** 2) – user2660966
@ user2660966しかし、人間の色の認識は異なり、一致しませんeuclidian距離で。 – moritzg
色をHSV色空間に変換することを検討することがあります。 – taras