image intensity scale sub-divide into two ranges
1 次查看(过去 30 天)
显示 更早的评论
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..
0 个评论
采纳的回答
Guillaume
2014-12-2
编辑:Guillaume
2014-12-2
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);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!