2013-02-04 54 views
15

私はMatlabのRGB画像のヒストグラムを表示するには?

input = imread ('sample.jpeg'); 

を使用してMathWorks社のMATLABで画像を読み取るその後、私は

imhist(input); 

を行うことが、このエラーを与える:size(input)を実行した後

??? Error using ==> iptcheckinput 
Function IMHIST expected its first input, I or X, to be two-dimensional. 

Error in ==> imhist>parse_inputs at 275 
iptcheckinput(a, {'double','uint8','logical','uint16','int16','single'}, ... 

Error in ==> imhist at 57 
[a, n, isScaled, top, map] = parse_inputs(varargin{:}); 

、私は私の入力画像のサイズである参照300x200x3。私は3番目の次元がカラーチャンネルのためだと知っていますが、これのヒストグラムを表示する方法はありますか?ありがとう。

答えて

25

imhist階調又はバイナリ画像のヒストグラムを表示します。画像にrgb2grayを使用するか、imhist(input(:,:,1))を使用して、一度に1つのチャンネル(この例では赤色)を表示してください。

別の方法としては、これを行うことができます。

hist(reshape(input,[],3),1:max(input(:))); 
colormap([1 0 0; 0 1 0; 0 0 1]); 

は同時に...

4

histogarmプロットは、強度レベルの画素数を持つことになります3つのチャンネルを表示します。 あなたの作品はrgb画像です。だから、まずそれを輝度画像に変換する必要があります。

ここでのコードは次のようになります。

input = imread ('sample.jpeg'); 

input=rgb2gray(input); 

imhist(input); 

imshow(input); 

あなたは、画像のヒストグラムを取得することができます。

+0

完全に間違って、彼はこれを求めていません... –

3
img1=imread('image.jpg'); 
img1=rgb2gray(img1); 
subplot(2,2,1); 
imshow(img1); 
title('original image'); 
grayImg=mat2gray(img1); 
subplot(2,2,2); 
imhist(grayImg); 
title('original histogram'); 

)( mat2grayを含めることを忘れないでください。 です。これは、行列Aを輝度画像grayImgに変換するためです。返されるマトリックスのgrayImgには、0.0(黒)から1.0(最高輝度または白)の範囲の値が含まれます。

0

ヒストグラムは、画像のピクセル分布を分析するのに便利です。ヒストグラムは、強度値に関する画像のピクセル数をプロットします。

img1=imread('image.jpg'); 
hist(img1); 
+1

を動作していません... –

12

私は1つのプロットに赤、緑、青のヒストグラムをプロットするpefere:

%Split into RGB Channels 
Red = image(:,:,1); 
Green = image(:,:,2); 
Blue = image(:,:,3); 

%Get histValues for each channel 
[yRed, x] = imhist(Red); 
[yGreen, x] = imhist(Green); 
[yBlue, x] = imhist(Blue); 

%Plot them together in one plot 
plot(x, yRed, 'Red', x, yGreen, 'Green', x, yBlue, 'Blue'); 
関連する問題