1

与えられた画像からさらにサブイメージを抽出したいのですが、結果のサブイメージが互いに過度に似ていてはなりません。各 ROI の中心をランダムに選択する必要がある場合は、各サブイメージが他のサブイメージと共通する領域の割合がせいぜいわずかであることを確認する必要があります。または、画像を通常のグリッド上の小さな領域に分解してから、各領域内のサブ画像をランダムに選択することもできます。ただし、このオプションでは、すべてのサブイメージが互いに十分に異なるという保証はありません。明らかに、結果のサブイメージを比較するための適切な方法を選択する必要がありますが、類似度のしきい値も選択する必要があります。

上記の手順は、多くの画像に対して実行する必要があります。抽出されたすべてのサブ画像が類似しすぎないようにする必要があります。一連の画像からあまり似ていない領域を特定する方法はありますか (たとえば、すべてのヒストグラムを検査するなど)?

4

2 に答える 2

2

n x n考えられる方法の1つは、指摘したように画像を正方形に分割し(エッジケースを保存)、それぞれを1つの値に減らし、k最近傍値(他の部分に関連する)に従ってグループ化することです。それらをグループ化した後、たとえば、各グループから1つの画像を選択できます。潜在的に優れているのは、各グループ内でより関連性の高いメトリックを使用することです。このような2つのメトリックについては、URLの画像とPythonのファイルシステムの画像の比較を参照してください。このメトリックを使用することにより、各グループから複数のピースを選択できます。

これは私が周りで見つけたいくつかのアヒルを使った例です。を考慮しn = 128ます。各ピースを1つの数値に減らすために、の純粋な黒いピースまでのユークリッド距離を計算しn x nます。

f = Import["http://fohn.net/duck-pictures-facts/mallard-duck.jpg"];
pieces = Flatten[ImagePartition[ColorConvert[f, "Grayscale"], 128]]

ここに画像の説明を入力してください

black = Image[ConstantArray[0, {128, 128}]];
dist = Map[ImageDistance[#, black, DistanceFunction -> EuclideanDistance] &,
            pieces];
nf = Nearest[dist -> pieces];

次に、以下を検討することでグループ化を確認できますk = 2

GraphPlot[
 Flatten[Table[
   Thread[pieces[[i]] -> nf[dist[[i]], 2]], {i, Length[pieces]}]],
 VertexRenderingFunction -> (Inset[#2, #, Center, .4] &), 
 SelfLoopStyle -> None]

ここに画像の説明を入力してください

これで、これらの各グループ内のメトリック(黒までの距離よりも優れている)を使用して、そこから必要な部分を選択できます。

于 2013-01-13T22:02:22.230 に答える
2

これを多数の画像に適用したいと考えており、すでに提案しているので、さまざまなタイルを選択してこの問題を解決する方法について説明しましょう。

最初のステップは、「類似」とは何かを定義することである可能性があるため、類似性メトリックが必要です。メトリックのソースの 1 つとしてタイルのヒストグラムについて既に言及しましたが、他にも多くのソースがある可能性があります。たとえば、次のようになります。

  • 平均強度、
  • 強度の 90 パーセンタイル、
  • 強度の 10 パーセンタイル、
  • ヒストグラムのピークのように、強度のモード、
  • タイル全体のピクセル強度の分散、
  • これは、生の画像とガウス フィルター処理された画像の差によって、または小さなサブタイルの平均分散を計算することによって、すばやく概算できます。

画像に 2 つのチャネルがある場合、上記のリストには既に 12 個のメトリック コンポーネントが残っています。さらに、チャネル間のピクセル強度の相関など、チャネルの組み合わせから取得できる特性があります。2 チャンネルでは 1 つの特性にすぎませんが、3 チャンネルではすでに 3 です。

この高次元のクラウドからさまざまなタイルを選択するには、これらのメトリックの多くではないにしてもいくつかが相関すると考えることができるため、主成分分析 (PCA) が最初のステップとして適しています。http://en.wikipedia.org/wiki/Principal_component_analysis

次に、選択するサンプル タイルの数に応じて、投影を確認できます。たとえば、7 つのタイルの場合、最初の 3 つの主成分を見て、それぞれの 2 つの極値から選択し、さらに中心に最も近い 1 つのタイルを選択します (3 * 2 + 1 = 7)。

各主成分の極端な値から選択するのは確実ではないかもしれないと懸念している場合は、10 パーセンタイルと 90 パーセンタイルが有効かもしれません。別の方法として、クラスタリング アルゴリズムを使用して個別の例を見つけることもできますが、これはクラウドがどのように見えるかによって異なります。幸運を。

于 2013-01-13T21:57:31.527 に答える