数字でペイント
トゥルーカラー画像が与えられます。あなたの仕事は、このイメージのバージョンを生成することです。これは、数字によるペイント(非グラムではなく、子供の活動)を使用してペイントされたように見えます。画像とともに、2つのパラメーターを指定します:P、カラーパレットの最大サイズ(つまり、使用する個別の色の最大数)、およびN、使用するセルの最大数。あなたのアルゴリズムではないではない、すべて使用する必要がPの色とNの細胞を、それはより多くのそれよりも使用してはなりません。出力画像は、入力と同じサイズにする必要があります。 セルは全て同じ色を有する画素の連続した領域として定義されます。角でのみ接触するピクセルは、隣接しているとは見なされません。セルには穴がある場合があります。 つまり、N個のフラットシェーディング/単色領域とP個の異なる色のみで入力画像を近似することになります。 パラメーターを視覚化するために、ここに非常に単純な例を示します(特定の入力画像がない場合、私の狂ったペイントスキルを誇示します)。次の画像には、P = 6およびN = 11があります。 以下は、アルゴリズムをテストするためのいくつかの画像です(ほとんどが通常の容疑者です)。大きなバージョンの画像をクリックします。 さまざまなパラメータの少数の結果を含めてください。多数の結果を表示する場合は、imgur.comにギャラリーを作成して、回答のサイズを適切に保つことができます。または、上記のように、投稿にサムネイルを配置し、大きな画像へのリンクを作成します。また、何か良いものが見つかった場合は、他のテストイメージを自由に使用してください。 私は、パラメータの周りにいると仮定500≥N 、P〜30は、リアルペイント・バイ・ナンバーのテンプレートのようになります。 これは人気のあるコンテストなので、正味の投票数が最も多い回答が勝ちます。投票者は次の方法で回答を判断することが推奨されます 元の画像がどの程度近似されているか。 アルゴリズムがさまざまな種類の画像でどの程度うまく機能するか(通常、絵画は写真よりも簡単です)。 アルゴリズムが非常に制限的なパラメーターでどれだけうまく機能するか。 細胞の形がどのように有機的/滑らかに見えるか。 次のMathematicaスクリプトを使用して、結果を検証します。 image = <pastedimagehere> // ImageData; palette = Union[Join @@ image]; Print["P = ", Length@palette]; grid = GridGraph[Reverse@Most@Dimensions@image]; image = Flatten[image /. Thread[palette -> Range@Length@palette]]; Print["N = ", Length@ConnectedComponents[ Graph[Cases[EdgeList[grid], m_ <-> n_ …