image intensity scale sub-divide into two ranges

1 visualización (últimos 30 días)
Nataliya
Nataliya el 2 de Dic. de 2014
Comentada: Thorsten el 2 de Dic. de 2014
I have an image. I obtain the histogram for that image and calculate probability distribution using the code below:
if size(I,3) == 1 %grayscale image
[n_countR, x_valueR] = imhist(I(:,:,1));
Nt = size(I,1) * size(I,2); %Total number of pixels in the image ROW X COL
%Lmax segmenting color levels 0-256
Lmax = 256; %256 different maximum levels are considered in an image (i.e., 0 to 255)
% Probability distribution for each intensity level histogram 0 - 256
for i = 1:Lmax
if size(I,3) == 1
%grayscale image
probR(i) = n_countR(i) / Nt;
end
Now I want this image histogram, having range 0 to 255, to sub-divide into two having the range 0 to 127 and 128 to 255 respectively and find probability distribution for both. Please help. I hope now you can better understand my question. Much thanks..

Respuesta aceptada

Guillaume
Guillaume el 2 de Dic. de 2014
Editada: Guillaume el 2 de Dic. de 2014
By default, imhist on a greyscale image outputs 256 bins, just as you want. You then jut have to split this output in half, using simple indexing.
if size(I, 3) == 1 %in that case I(:,:, 1) == I
h = imhist(I); %histogram over 256 bins by default
hlow = h(1:128); %lower part of the histogram
hhigh = h(129:256); %higher part of the histogram
end
To convert to pdf over the total number of pixels, use matrix operations rather than for loops:
pdflow = hlow/numel(I);
pdfhigh = hhigh/numel(I);
or if you want pdfs over the population of each half-histogram:
pdflow = hlow/sum(hlow);
pdfhigh = hhigh/sum(hhigh);

Más respuestas (1)

Thorsten
Thorsten el 2 de Dic. de 2014
h1 = hist(I(I<=127), 0:127);
h2 = hist(I(I>=128), 128:255);
  4 comentarios
Nataliya
Nataliya el 2 de Dic. de 2014
I have edit my question. Kindly review it and answer. I will be thankful to you
Thorsten
Thorsten el 2 de Dic. de 2014
ind = find(I < 128);
Plow = hist(I(I < 128), 0:127)/numel(ind);
ind = find(I >= 128);
Plow = hist(I(I >= 128), 128:255)/numel(ind);

Iniciar sesión para comentar.

Categorías

Más información sobre Image Processing Toolbox en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by