最も近い近隣法を用いた写真モザイク:デジタルアートのための機械学習

「写真モザイクのための最新技術:デジタルアートにおける近隣法と機械学習の活用」

ここには例があります!

ズームインアニメーションは、フルスクリーンで視聴をおすすめします。(著者によるビデオ)

技術革新は急速に進んでおり、デジタルストレージは非常に安価で利用しやすくなりました。また、ほとんどの人々が高品質な画像を撮影できるカメラ付きの携帯電話を持っています。撮影された画像の大部分は数回閲覧され、その後ハードドライブまたはクラウドストレージサービスに保存されます。これにより、人々は大量の写真ライブラリを保有することになります。私も例外ではありません。また、COVID-19のロックダウン中に余暇があったため、人々のライブラリ内の写真に新たな命を吹き込むためのソフトウェアを開発しました。このソフトウェアは、写真モザイクを作成します。

写真モザイクとは、多数の小さな画像を縫い合わせて作成される画像または写真のことを指します。上記のGIFとビデオでは、小さな画像の正方形が多数使用されて大きな画像が作成される様子がわかります。これらのモザイクを作成するためのいくつかの方法があります。たとえば、小さな画像の正方形またはタイルは、色または画像の構造に基づいて大きな画像に選択され配置されることがあります。この記事では、特にカラーマッチング戦略に焦点を当て、データサイエンスや機械学習の観点から興味深いものとなっています。なぜなら、K最近傍(KNN)モデリング手法を使用しているからです。

問題の枠組み

常に、問題を分解し、ゴールを達成するために必要なさまざまなコンポーネントの周りに関数を構築することは良い習慣です。まず、大きなカバー画像をより小さな部分に分割する必要があります(下図1を参照)。小さな部分を取得したら、それぞれに最も一致する画像タイルを見つけることができます。このモザイクは色のマッチング方法を使用して作成しているため、問題を以下のように形式化できます:カバー画像の各部分に対して、最も近い色に一致する画像タイルを見つける。

図1: ここで、カバー画像を白い線で四角形の部分に分割しています。(著者による画像)

カラー画像の構造

デジタルカラー画像は、異なるピクセルカラーチャネルで構成されており、組み合わせることでカラー画像が作成されます。一般的な形式は、赤緑青またはRGB画像形式で、カラー画像は赤、緑、青のチャネルで構成されます。画像は通常、8ビットで保存されます。つまり、各色チャネルのピクセル値は0から255(2⁸-1)の範囲で変動します。

図2: ここでは、部分(上)とタイル(下)の平均RGB値を捉えています。ライブラリ内にはこの部分に完全に一致するものはありませんが、近いものがあります。(著者による画像)

各画像の平均赤、緑、青のピクセル値を取ると、各画像の一般的な色を表す3つの数値が得られます。したがって、各部分に合うタイルを見つけるためには、同じ平均RGBピクセル値を持つタイルを見つける必要があります。まず、カバー画像の各部分に対して平均RGBピクセル値のリストを作成します。次に、タイル写真のライブラリから平均RGBピクセル値のリストを作成します。これら2つのリストが作成されたら、部分リストを反復処理し、タイルのライブラリリストを検索して一致する平均RGBピクセル値を見つけることができます。

賢明な動的プログラミングと効率的なデータ構造を使用することで、この検索は比較的高速に実行できます。ただし、このアプローチには批判的な欠点があり、対策が必要です。それは、タイル画像のライブラリが不完全であり、すべての平均RGBピクセル値が表されていない可能性があるということです(図2を参照)。そのため、平均RGB値と完全に一致するタイルを検索しても何も見つからない場合があります。解決策は、一致する平均RGB値に最も近い次のタイルを見つけることです。色に関する「近接性」を決定するために、多くの研究が行われています。たとえば、黒と白はまったく近くない色であることが良く知られています。しかし、私たちの解決策は単純なものであり、機械学習を利用しています。

K最近傍法による最も近い色の取得

各サブセクションとタイルは、平均赤、緑、青の色値の3つの数字で表されます。私たちは3つの色値を異なる次元または軸と考えることができるため、各色が次元または軸となる3Dプロットを作成することができます。サブセクションの値と、ライブラリ内の可能なタイルとの対応関係をプロットすると、最も近い色値を持つタイルを見つけることができます。

図3:サブセクションの平均RGB値が赤でプロットされます。RGB値が近いタイルはオレンジでプロットされます。KNNを使用すると、最も近いマッチが黄色の「X」で表示されます。(著者による画像)

KNNアルゴリズムでは、ライブラリ内のすべてのタイルを評価し、平均ピクセル値をモデル化します。その後、各サブセクションに対して一致するタイルを検索する際に、モデルは最も近い近傍または色の値が最も近いタイルを返します。 この検索は図3で説明されています。 KNNを使用すると、正確な値を力ずくで検索するよりも堅牢性が高くなります。なぜなら、正確な値が存在しない場合もあるためです。内部では、KNNモデルはツリー構造を使用して構築されることがあり、それにより効率的な検索やトラバースが可能です。したがって、パフォーマンスも他の解決策と比較して優れています。各サブセクションの色に対応するすべてのタイルが見つかったら、単純な配列/行列インデックスを使用して、表紙の最終モザイク画像を作成するためにすべてのタイル画像を結合することができます。

結び

独自のフォトモザイクを作成したい場合や、手助けが必要な場合は、お気軽にお問い合わせください。 どこかのハードドライブに埃をかぶっている古い画像を再利用して、何か美しいものに二度目のチャンスを与えることができます。ひょっとしたら、それらはNFTになるかもしれませんね!

異なるアニメーションで別の例のフォトモザイクを見てみましょう。すべてのアニメーションはプログラムで作成され、後続の投稿で詳細に説明されます。

ディスパースアニメーション、フルスクリーンでの視聴をおすすめします。(著者による動画)

元の記事はこちらに投稿されています。許可を得て再投稿されました。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more