18

を使用してMATLABで画像を読み取ります

input = imread ('sample.jpeg');

それから私はします

imhist(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{:});

実行後size(input)、入力画像のサイズが表示され300x200x3ます。3次元がカラーチャンネル用であることは知っていますが、これのヒストグラムを表示する方法はありますか?ありがとう。

4

5 に答える 5

29

imhistグレースケールまたはバイナリイメージのヒストグラムを表示します。rgb2gray画像で使用するか、一度imhist(input(:,:,1))に1つのチャンネル(この例では赤)を表示するために使用します。

または、次のようにすることもできます。

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

3つのチャンネルを同時に表示するには...

于 2013-02-04T08:34:07.113 に答える
14

赤、緑、青のヒストグラムを1つのプロットにプロットすることをお勧めします。

%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');
于 2014-11-03T18:21:14.077 に答える
5

ヒストガルムプロットには、強度レベルのピクセル数が含まれます。あなたはRGB画像です。したがって、最初にそれを強度画像に変換する必要があります。

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

input = imread ('sample.jpeg');

input=rgb2gray(input);

imhist(input);

imshow(input);

画像のヒストグラムを取得できるようになります。

于 2013-05-24T09:53:17.073 に答える
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(完全な強度または白)の範囲の値が含まれています。

于 2013-08-20T13:10:50.497 に答える
0

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

img1=imread('image.jpg');
hist(img1);
于 2013-11-16T10:44:35.293 に答える