how to find the median of histogram?

12 ビュー (過去 30 日間)
Pradeep Gowda
Pradeep Gowda 2015 年 8 月 21 日
コメント済み: Image Analyst 2015 年 8 月 21 日
i am trying to implement "Dualistic Sub-Image Histogram Equalisation". where the input image needs to be subdivided into two , based on the median of the image. any suggestion would help me.

回答 (2 件)

Adam
Adam 2015 年 8 月 21 日
Just sort all the image values and take the central one if you want the median value of an image.
If you want the median value of a histogram then just choose an odd number of bins and take the central one.
  2 件のコメント
Pradeep Gowda
Pradeep Gowda 2015 年 8 月 21 日
編集済み: Image Analyst 2015 年 8 月 21 日
[x y]=imhist(m);
count=(sum(x(:)))/2;
will his work?
Image Analyst
Image Analyst 2015 年 8 月 21 日
Of course not. The median of the bin counts is not the same as the median of the image gray levels. See my answer.

サインインしてコメントする。


Image Analyst
Image Analyst 2015 年 8 月 21 日
What's wrong with simply using the median() function?
theMedian = median(grayImage(:))
belowMask = grayImage <= theMedian;
aboveMask = grayImage > theMedian;
belowGray = grayImage .* uint8(belowMask);
aboveGray = grayImage .* uint8(aboveMask);
  2 件のコメント
Pradeep Gowda
Pradeep Gowda 2015 年 8 月 21 日
i guess this what i needed. One of the sub-images is equalized over the range up to the median and the other sub-image is equalized over the range from the median based on the respective histograms. Thus, the resulting equalized sub-images are bounded by each other around the input median? how do i equalzie them?
Image Analyst
Image Analyst 2015 年 8 月 21 日
You can use mat2gray() to scale them each to 0-1.
aboveGray = mat2gray(double(aboveGray));
Multiply by 255 if you need a uint8 image in the range 0-255
aboveGray = uint8(255 * mat2gray(double(aboveGray)));

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeHistograms についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by