2013-02-04 16 views
15

Czytam obraz w Matlab używającJak wyświetlić histogram obrazu RGB w programie Matlab?

input = imread ('sample.jpeg'); 

Potem zrobić

imhist(input); 

Daje ten błąd:

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

Po uruchomieniu size(input) widzę mój wkład obraz jest od rozmiaru 300x200x3. Wiem, że trzeci wymiar dotyczy kanału koloru, ale czy istnieje sposób na pokazanie tego histogramu? Dzięki.

Odpowiedz

25

imhist wyświetla histogram skali szarości lub binarnych zdjęć. Użyj obrazu rgb2gray lub użyj imhist(input(:,:,1)), aby zobaczyć jeden z kanałów na raz (czerwony w tym przykładzie).

Alternatywnie można to zrobić:

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

pokazać kanałów jednocześnie 3 ...

4

działka histogarm będzie miał liczbę pikseli na poziomie intensywności. Pozdrawiam jest obrazem rgb. Najpierw musisz przekonwertować go na obraz intensywności.

Kod tu będą:

input = imread ('sample.jpeg'); 

input=rgb2gray(input); 

imhist(input); 

imshow(input); 

Będziesz w stanie uzyskać histogramu obrazu.

+0

całkowicie błędne nie działa ... –

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'); 

Pamiętaj, aby dołączyć mat2gray(); , ponieważ konwertuje macierz A do obrazu intensywności grayImg. Zwrócona matryca grayImg zawiera wartości w zakresie od 0,0 (czarny) do 1,0 (pełna intensywność lub biała).

0

Histogram służy do analizy rozkładu pikseli w obrazie. Histogram wyświetla liczbę pikseli na obrazie w odniesieniu do wartości intensywności.

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

nie jest pytaniem, to ... –

12

I pefere wykreślić histogram dla Red, Green i Blue w jednej działki:

%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'); 
Powiązane problemy