1
$\begingroup$

In order to clip an image's histogram to a maximum value, according to the CLAHE algorithm, the excess pixels (above the clip limit) will be distributed equally among all the histogram bins (While keeping track none of the bins exceed the max limit of course).

Now, when working with (8,8) region size and distributing 13 pixels on 256 bins, the uniform added value (13/256) will be rounded to zero and so the total number of pixels in histogram will be reduced from (8,8) -> 64px to 64 - 13 = 51px.

That doesn't make sense since I'll be neglecting 13 pixels of the region.

Any tips on how to tackle this part of the algorithm?

$\endgroup$

bumped to the homepage by Community 2 days ago

This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.

0
$\begingroup$
you have to redistributed 13 pixels(# of clipped) to the histogram.

 // clip histogram
  194 
  195             if (clipLimit_ > 0)
  196             {
  197                 // how many pixels were clipped
  198                 int clipped = 0;
  199                 for (int i = 0; i < histSize; ++i)
  200                 {
  201                     if (tileHist[i] > clipLimit_)
  202                     {
  203                         clipped += tileHist[i] - clipLimit_;
  204                         tileHist[i] = clipLimit_;
  205                     }
  206                 }
  207 
  208                 // redistribute clipped pixels
  209                 int redistBatch = clipped / histSize;
  210                 int residual = clipped - redistBatch * histSize;
  211 
  212                 for (int i = 0; i < histSize; ++i)
  213                     tileHist[i] += redistBatch;
  214 
  215                 for (int i = 0; i < residual; ++i)
  216                     tileHist[i]++;
  217             }
$\endgroup$
  • 1
    $\begingroup$ Even though the code might be helpful it would be good if you added some explanations in normal text. $\endgroup$ – Matt L. Jun 15 '16 at 7:45
0
$\begingroup$

In order to distribute 13 pixels on 256 bins, you can divide 256 to 13 (256/13) that gives step size. So you can add 1 to all values on the step size. For example, (256/13) rounds to 20 that you can add 1 to (1, 21, 41, ...) histogram values.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.