2

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 の辞書? 別のアルゴリズム/アプローチ/最適化?

4

1 に答える 1