Python でクロス ステッチ スキームを作成するプログラムで遊んでおり、画像の色をこのような特定のフロスの色に減らす必要があります。フロス パレットのすべての色を使用する必要はありません。Python または疑似コード。
カスタム パレット (PILL/Pillow など) は適切ではありません。最大 256 色ですが、フロス パレットには約 450 色があり、さまざまなメーカーの複数のカラー チャートを使用する予定です。
ディザリングは、クロスステッチにも適していません。
これは次のようになると思います:
result = []
for pixel_color in image:
nearest = None
for floss_color in floss_palette:
distance = delta_e_cie2000(pixel_color, floss_color)
if distance < nearest:
nearest = floss_color
result.append(nearest)
より高速なアルゴリズムが存在する可能性がありますか? (image_width * image_heigh * パレットの色 = 112M delta_e の計算と、平均 500x500px の画像の比較。それはたくさんあります。)
既に計算された delta_e の辞書? 別のアルゴリズム/アプローチ/最適化?