Weird Imhist beahviour seen
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Jason
el 21 de Nov. de 2014
Comentada: DGM
el 20 de Mayo de 2024
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.
0 comentarios
Respuesta aceptada
Image Analyst
el 21 de Nov. de 2014
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 comentarios
Image Analyst
el 21 de Nov. de 2014
You're welcome. Can you go ahead and officially mark the answer as "Accepted" then? Thanks in advance.
Más respuestas (1)
DGM
el 20 de Mayo de 2024
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 comentarios
DGM
el 20 de Mayo de 2024
Oh wow. I didn't even notice both threads were yours. I certainly didn't expect a prompt reply!
You're welcome.
Ver también
Categorías
Más información sobre Convert Image Type en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!