画像内で最も密度の高い領域を見つけるにはどうすればよいですか?

algorithm image-processing matlab
画像内で最も密度の高い領域を見つけるにはどうすればよいですか?

thisのような白黒画像を考えてください

image:https://i.stack.imgur.com/HNyUF.jpg [alt text]

私がやろうとしているのは、白色点が最も濃い領域を見つけることです。 この場合、20-21個のそのような密な領域があります(つまり、 点のクラスターは密な領域を作ります)。

誰も私にこれを達成する方法についてのヒントを教えてもらえますか?

  13  8


ベストアンサー

Image Processing Toolboxにアクセスできる場合、それに含まれる多くのフィルタリングおよび形態学的操作を利用できます。 関数https://www.mathworks.com/help/images/ref/imfilter.html[imfilter]、https://www.mathworks.com/help/imagesを使用して、問題に対処する1つの方法を次に示します。 /ref/imclose.html [imclose]、およびhttps://www.mathworks.com/help/images/ref/imregionalmax.html [` imregionalmax`]:

% Load and plot the image data:
imageData = imread('lattice_pic.jpg');  % Load the lattice image
subplot(221);
imshow(imageData);
title('Original image');

% Gaussian-filter the image:
gaussFilter = fspecial('gaussian', [31 31], 9);  % Create the filter
filteredData = imfilter(imageData, gaussFilter);
subplot(222);
imshow(filteredData);
title('Gaussian-filtered image');

% Perform a morphological close operation:
closeElement = strel('disk', 31);  % Create a disk-shaped structuring element
closedData = imclose(filteredData, closeElement);
subplot(223);
imshow(closedData);
title('Closed image');

% Find the regions where local maxima occur:
maxImage = imregionalmax(closedData);
maxImage = imdilate(maxImage, strel('disk', 5));  % Dilate the points to see
                                                  % them better on the plot
subplot(224);
imshow(maxImage);
title('Maxima locations');

そして、上記のコードが作成する画像は次のとおりです。

https://i.stack.imgur.com/4JSRd.jpg [image:https://i.stack.imgur.com/4JSRd.jpg [ここに画像の説明を入力]]

物事を良くするために、Gaussianフィルターのパラメーター(https://www.mathworks.com/help/images/ref/fspecial.html [fspecial]を使用して作成)のいくつかの異なる組み合わせを試してみました。構造化要素(https://www.mathworks.com/help/images/ref/strel-class.html [strel]を使用して作成)。 しかし、その少しの試行錯誤は非常に良い結果をもたらしました。

注: https://www.mathworks.com/help/images/ref/imregionalmax.html [imregionalmax]から返された画像には、1に設定された単一ピクセル(最大を示すため)が常にあるとは限りません。 入力画像内の隣接するピクセルは同じ値を持つことができるため、出力画像にはピクセルのクラスターが含まれることが多く、したがって両方とも最大値としてカウントされます。 上記のコードでは、画像で見やすくするためにhttps://www.mathworks.com/help/images/ref/imdilate.html [imdilate]でこれらのポイントを拡張しました。最大値を中心としたピクセルのクラスター。 ピクセルのクラスターを単一のピクセルに縮小する場合は、膨張ステップを削除し、他の方法で画像を変更する必要があります(結果にノイズを追加するか、フィルターして、新しい最大値を見つけるなど)。

18


スライディングウィンドウ(シンプルだが遅い)

スライディングウィンドウを作成できます(例: 10×10ピクセルサイズ)、画像を反復処理し、各位置について、この10×10フィールド内の白いピクセルの数をカウントし、最もカウントの高い位置を保存します。

このプロセス全体は* O(n * m)*です。ここで、nは画像のピクセル数、mはスライディングウィンドウのサイズです。

つまり、http://en.wikipedia.org/wiki/Convolution [convolve]でhttp://homepages.inf.ed.ac.uk/rbf/HIPR2/mean.htm[mean filter]を使用して画像を作成します(ここではボックスフィルター)、極値を使用します。

スライディングウィンドウ(高速)

最初に、http://en.wikipedia.org/wiki/Summed_area_table [summed area table]を計算します。これは、1つのパスで非常に効率的に実行できます。

  1. 元の画像と同じサイズの2D配列 sat`を作成します
    `img

  2. 各インデックスを反復処理し、各インデックスについて「x」と「y」を計算します

    sat[x, y] = img[x, y] + sat[x-1, y] + sat[x, y-1] - sat[x-1, y-1]

    たとえば、0が暗く、1が白である画像の場合、結果は次のようになります。

   img            sat
0 0 0 1 0 0   0 0 0 1 1 1
0 0 0 1 0 0   0 0 0 2 2 2
0 1 1 1 0 0   0 1 2 5 5 5
0 1 0 0 0 0   0 2 3 6 6 6
0 0 0 0 0 0   0 2 3 6 6 6
  1. 合計面積テーブルのインデックスをスライディングで繰り返します
    ウィンドウ、およびスライディングウィンドウのコーナーA、B、C、Dを使用して、その中の白いピクセルの数を計算します。

   img            sat          window
0 0 0 1 0 0   0 0 0 1 1 1   0 A-----B 1
0 0 0 1 0 0   0 0 0 2 2 2   0 | 0 2 | 2
0 1 1 1 0 0   0 1 2 5 5 5   0 | 2 5 | 5
0 1 0 0 0 0   0 2 3 6 6 6   0 | 3 6 | 6
0 0 0 0 0 0   0 2 3 6 6 6   0 D-----C 6

計算

density(x', y') = sat(A) + sat(C) - sat(B) - sat(D)

上記の例では

density(1, 0) = 0 + 6 - 1 - 2 = 3

このプロセスには一時的なイメージが必要ですが、それは* O(n)*であるため、速度はスライディングウィンドウのサイズに依存しません。

7


画像処理ツールボックスがある場合は、ガウスフィルターでぼかしてから、ピーク/極値を見つけます。

ガウスフィルターのサイズを変更して、必要な「密」領域の数を取得します。

6


おそらく素朴なアプローチ:

密度を測定する領域の最大サイズであるn * nの正方形を定義します。 画像内の各ポイントについて、そのポイントを正方形の中心とみなし、黒(b)および白(w)ポイントの数を数えます。 差b-wを使用して、どの正方形が最も白いかを判断できます。

最も密度の高い領域は、あいまいな方法で決定する必要があります。 1つの領域に600個のホワイトポイントと別の599個のポイントがある場合、人間の目では、それらは同じ密度になります。 600は100%密であり、599は99%密であり、1%は密ではありません。 これにはイプシロンを使用します。

nは事前に定義するか、何らかの機能に基づいて設定できます(つまり 画像サイズの割合)。

正方形/長方形の代わりに円/楕円を使用することもできます。 ニーズに最適なものを選択してください

4


タイトルとURLをコピーしました