Weird Imhist beahviour seen
조회 수: 5 (최근 30일)
이전 댓글 표시
Hi, ive been tearing my hair out all morning. I want to plot the histogram of an image. I normally use im hist. My images are 3 12 bit images that are summed, hence the max value can be 3*4095=12285. It appears my histogram is defaulting to 16 bit values.
This is my code:
IM = imread(file);
IM1=double(IM);
[maxval,idx]=max(IM1(:)) % determine number of bins (of width = unity)
maxval= double(maxval);
[counts,x] = imhist(IM,maxval);
figure
stem(x,counts,'b', '.');
counts(maxval) %check the max intensity
First of all, counts(maxval) returns zero, and here is the histogram stem plot - defaulting to 65535 levels. I want to have 1-12285 levels.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/146182/image.png)
댓글 수: 0
채택된 답변
Image Analyst
2014년 11월 21일
Try this:
grayImage = imread(file);
maxGrayLevel = max(grayImage(:)) % determine max gray level.
[counts, grayLevels] = imhist(grayImage);
bar(grayLevels, counts, 'Color', 'b');
xlim([0, maxGrayLevel)]; % Specify range of x axis.
Let me know how it works.
댓글 수: 2
Image Analyst
2014년 11월 21일
You're welcome. Can you go ahead and officially mark the answer as "Accepted" then? Thanks in advance.
추가 답변 (1개)
DGM
2024년 5월 20일
I don't know where everyone is getting uint12-scale images, but I guess it's a thing. I posted an example which demonstrates three ways of representing improperly scaled images (uint12 in uint16, and int12 in int16) using imhist() and other tools.
댓글 수: 2
DGM
2024년 5월 20일
Oh wow. I didn't even notice both threads were yours. I certainly didn't expect a prompt reply!
You're welcome.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!