画像があり、同じサイズのブロックに分割したい。たとえば、画像サイズは 16 です。各ブロックに関数 (SVD、DWT、フーリエ変換など) を適用して画像を分割し、どのブロックが互いに類似しているかを検索したいと考えています。たとえば、画像の一部をコピーして、画像の別の部分に貼り付けて、ブロックが互いに類似しているようにすることができます。類似したブロックを検索したいと考えています。
私はMatlabの初心者です。誰かが画像を分割する方法を手伝ってくれれば本当に感謝しています。ありがとう
画像があり、同じサイズのブロックに分割したい。たとえば、画像サイズは 16 です。各ブロックに関数 (SVD、DWT、フーリエ変換など) を適用して画像を分割し、どのブロックが互いに類似しているかを検索したいと考えています。たとえば、画像の一部をコピーして、画像の別の部分に貼り付けて、ブロックが互いに類似しているようにすることができます。類似したブロックを検索したいと考えています。
私はMatlabの初心者です。誰かが画像を分割する方法を手伝ってくれれば本当に感謝しています。ありがとう
blockproc
またはを使用できますim2col
。例については、のドキュメントを参照してくださいblockproc
。
私は matlab の回答を提供することはできませんが、画像のセグメンテーションを調べることができます(例についてはググってください)。必要なセグメントの種類に応じて、これを行うにはさまざまな方法があります。
また、さまざまなスケールで画像自体の繰り返し発生するチャンクを検索する方法について説明している、単一の画像からの超解像度に関する論文を参照することもできます。リンクされた論文には、複数の画像の小さな特徴から画像データベースを作成する方法も記載されています。
便利な形式に変換できる Python で書かれたソリューションがあります。
rsize = 4 #row size of the kernel
csize = 4 #column size of the kernel
for r in range(0,resized.shape[0] - rsize, rsize):
for c in range(0,resized.shape[1] - csize, csize):
window = resized[r:r+rsize,c:c+csize]
画像のサイズは 17 x 17 であると想定しています。ここでは、画像の最後の列と最後の行をゼロで埋めて、このコードをうまく機能させることができます。
このロジックを MATLAB に適用できます。