2

私の問題は、レーダー画像のpng形式があることです。(申し訳ありませんが、同僚がドイツ気象局の著作権侵害だと言ったため、画像を削除する必要がありました)

MATLABで画像を読みたいです。次に、すべてのクラウドを読み取り、各クラウドに一意のインデックスを付けます。これは、特定のクラウドに属する各ピクセルが同じインデックスでラベル付けされていることを意味しますi。各雲の中心を計算するarea(coa)と、ある雲から別の雲までの距離を測定できるはずです。

私が知っているいくつかの同様の作業は、IDL で行われました。私はそれを使ってみましたが、IDL の学習に時間を費やすよりも、MATLAB でこれらすべてを実行して結果に集中できれば、はるかに簡単になります。

そのため、飛び込む前に、これがすべて MATLAB で可能かどうかを知りたいと思います。はいの場合、クラウドを抽出してラベルを付ける方法を少し教えてもらえますか?

4

3 に答える 3

3

最初に、しきい値処理やメディアン フィルタリングなどの基本的な画像解析を行い、必要に応じてノイズを減らします。bwlabel次に、一意のインデックスで各クラウドにラベルを付けるために使用できます。reigonprops 重心を見つけるために使用します。

以下は非常に基本的なコード サンプルです。

d=imread('u09q8.png');
bw = im2bw(d,0.1); % thereshold at 50%
bw = bwareaopen(bw, 10); % Remove objects smaller than 10 pixels from binary image
bw=bwlabel(bw); % label each cloud 
stats=regionprops(bw,'Centroid'); % find centroid coordinates of all labeled clouds
于 2013-01-22T09:58:53.193 に答える
1

はい、もちろん。これは、k-means クラスタリングを使用して行うことができます。imreadとについて読むことができますkmeans。の公式ドキュメントにkmeans示されている例は、必要なものを正確に示しています。

たとえば、イメージを 5 つのクラウドにクラスター化する場合:

%// Read the image
I = imread('clouds.png');
[y, x] = find(I);             %// Obtain all coordinates
y = size(I, 1) - y + 1;       %// Adjust y-coordinates
K = 5;
[idx, c] = kmeans([x, y], K); %// Classify clouds into K clusters

idx対応するクラスター インデックスをc格納し、重心の座標を格納するようになりました。

結果を描画するには、次のようにします。

%// Plot results
figure, hold on
scatter(x, y, 5, idx)         %// Plot the clusters
plot(c(:, 1), c(:, 2), 'r+')  %// Plot centroids
text(c(:, 1) + 10, c(:, 2), num2str((1:K)'), 'color', 'r')  %// Plot cluster IDs

この方法では、クラスターの数をK事前に決定する必要があることに注意してください。または、このツールを使用して、クラスター数の自動検出を試みることもできます。

編集:著作権の主張により、結果の画像を削除しました。

于 2013-01-22T09:58:39.460 に答える
1

Yes it is possible. Regarding the cloud detection, it is a step by step process. It will be based on the algorithm you are going to use. You can start here.

于 2013-01-22T09:56:43.853 に答える