2013-02-04 6 views
15

मैं का उपयोग करMatlab में आरजीबी छवि के हिस्टोग्राम कैसे दिखाएं?

input = imread ('sample.jpeg'); 

तो मैं कर

imhist(input); 

यह इस त्रुटि देता है matlab में एक छवि पढ़ें:

??? 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। मुझे पता है कि रंगीन चैनल के लिए तीसरा आयाम है, लेकिन क्या इसका हिस्टोग्राम दिखाने का कोई तरीका है? धन्यवाद।

उत्तर

25

imhist प्रदर्शित करता है एक ग्रेस्केल या द्विआधारी छवियों का एक हिस्टोग्राम। छवि पर rgb2gray का उपयोग करें, या एक समय में चैनल में से एक को देखने के लिए imhist(input(:,:,1)) का उपयोग करें (इस उदाहरण में लाल)।

वैकल्पिक रूप से आप यह कर सकते हैं:

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

3 चैनलों को दिखाने के लिए एक साथ ...

4

एक histogarm साजिश तीव्रता के स्तर के लिए पिक्सेल की संख्या होगा। आपका एक आरजीबी छवि है। तो आपको सबसे पहले इसे तीव्रता छवि में बदलने की आवश्यकता है।

कोड यहाँ हो जाएगा:

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() शामिल करना याद रखें; क्योंकि यह मैट्रिक्स ए को तीव्रता छवि grayImg में परिवर्तित करता है। लौटा मैट्रिक्स ग्रेइम में श्रेणी 0.0 (काला) से 1.0 (पूर्ण तीव्रता या सफेद) में मान होते हैं।

0

हिस्टोग्राम छवि में पिक्सेल वितरण का विश्लेषण करने के लिए उपयोगी है। तीव्रता मूल्य के संबंध में हिस्टोग्राम एक छवि में पिक्सेल की संख्या प्लॉट करता है।

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

वह इस पूछ नहीं है ... –

12

मैं एक साजिश में लाल, ग्रीन और ब्लू के लिए हिस्टोग्राम साजिश 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'); 
संबंधित मुद्दे