-2

実際、私はMatlabが初めてです。私はそれについてあまり知りません。画像の色数を数えるにはどうすればよいですか?

たとえば、DNA マイクロアレイの画像 (RGB 画像) があり、黄色の点、赤色の点、緑色の点の数を数えたいと考えています。

4

3 に答える 3

0

単一ピクセルのドットがあり、「赤」、「黄」、および「緑」が正確に [255 0 0]、[0 255 255]、および [0 255 0] を意味する場合、質問には非常に簡単に答えることができます。

red_dots = (DNA(:,:,1)==255); 
n_red_dots = sum(red_dots(:));

yellow_dots = (DNA(:,:,2)==255 & DNA(:,:,3)==255);
n_yellow_dots = sum(yellow_dots(:));

green_dots = (DNA(:,:,2)==255); 
n_green_dots = sum(green_dots(:));

色がそれほど正確ではないが、まだ単一ピクセルである場合 (または、サイズがほぼ同じで、大まかな比率に関心がある場合)、しきい値処理を行うことができます。

redish_dots = (DNA(:,:,1)>200 & DNA(:,:,2)<40 & DNA(:,:,3)<40);
n_redish_dots = sum(redish_dots(:));

等々...

于 2012-12-15T08:00:12.467 に答える
0

RGB を使用している場合は、それが 24、32、または 64 ビットかによっても異なります。たとえば、24 ビット イメージの場合、256*256*256 = 16,777,216 通りの RGB の組み合わせが可能です。;)

R、G、B の色を分けて、それぞれを数えた方が簡単ではないでしょうsubplotsか。;)

これを試してみてください: 各 R、G、B チャンネルを取り出します。次に、ヒストグラムを作成して、R、G、B の各ピクセルをカウントします。

DNA = imread('peppers.png');
redChannel = DNA(:, :, 1);
greenChannel = DNA(:, :, 2);
blueChannel = DNA(:, :, 3);

For red:
[redCount grayCount] = imhist(redPlane);
subplot(2, 2, 2);
imshow( DNA(:,:,2));
>> redcount
ans = 38385 // SAMPLE count

必要に応じて、1:3 からのループを使用することもできます。

于 2012-12-15T06:26:04.937 に答える