2

画像内の特定のピクセル値のカウントを取得するために matlab を使用しています。

画像は、matlab に読み込むと RGBA <512x512x4 uint8> になります (ただし、アルファ チャネルは無視できます)。

以外;

[width, height, depth] = size(im);

for x = 1 : width;
    for y = 1: height;

        r = im(x,y,1);
        g = im(x,y,2);
        b = im(x,y,3);

        ...

    end
end

行列演算を使用してこれを行う方法はありますか? 次のようなもの:

X = find(im(:,:,1) == 255 && im(:,:,2) == 255 && im(:,:,3) == 255);
count = length(X);
% Count being the number of pixels with RGB value (255,255,255) in the image.

これを行うにはいくつかの方法があると思いますが(交差するユニークな関数を見てください)、まだこれを行うのにmatlabを十分に賢くしていません。何か助けはありますか?

4

2 に答える 2

4

それは実際には非常に簡単です。このようなもの

count = sum(im(:, :, 1) == 255 & im(:, :, 2) == 255 & im(:, :, 3) == 255);

そのようなピクセルの数が表示されます。必要に応じて、これらのピクセルのインデックスを取得するためにsum置き換えます。find

于 2012-05-23T16:36:56.797 に答える
1

多くの方法でそれを行うことができます。一つの方法はこれです。画像が HxWx3 で、検索する r 値を含む HxW テーブルを作成するとします。1 つは g 用、もう 1 つは青用です。すべての thos テーブルを HxWx3 テーブル F の次元として組み合わせることができます。im から F を減算し、find() 関数を使用してゼロ化された値のインデックスを取得します。

F(:,:,1)=R*ones(H,W); F(:,:,2)=G*ones(H,W); F(:,:,3)=B*ones(H,W);

次に im-F を実行すると、必要な位置でゼロが得られます

d=F-im;    [r,c]=find((d(:,:,1))==0)

そうすれば、RGB セットをどれだけ近づけるかのしきい値も入力できます。

于 2012-05-23T16:34:44.023 に答える