1
$\begingroup$

I have already calculated the cdf values of each image now i have to map the reference image values to target . I cannot use histogram equalization or interpolation I simply have to map them .

function S = histM(t, target)
 if size(target,2)>1
   %an image, replace the image with its cdf
   target = getImageCDF(target);
 end

%get the CDF for the input image
 tcdf = getImageCDF(t);

% .... what shall be done here to map the values of reference to target

%subfunction: compute the CDF for an image that started as uint8
 function cdf = getImageCDF(img)
 bins = 0:255;
 H = hist(img(:), bins);
 Hmod = H + eps(sum(H));
 cdf = [0, cumsum(Hmod)/sum(Hmod)];
$\endgroup$
4
$\begingroup$

First you'll have to compute the histogram of one of the two images.

H = hist(img(:), bins);

Next find the cdf of the image:

 cdf = [0, cumsum(Hmod)/sum(Hmod)];

Next you'll have to make the second image follow the exact same cdf of the first image. This is usually known as histogram specification. Here is the algorithm:

Say you have a 3 bit image, that is $8$ different intensity values $0 > 7$. Now as for the second image

Find it's cdf as well.

Now as seen in the following image. The $r_k$ is the pixel value of the second image.

$s_k$ is the cdf of the second image.

$z_k$ is the cdf of the firsk image (desired histogram).

$z_{k}*$ and $n$ are computed as the following:

$(z_k - s_k) >= 0$ for smallest value of $n \dots$ and $n = g_k$

How exactly: Let's compute $z_k*$

$z_k - s_k = 0 - 0.15 = -0.15 >! 0 $ (not greater than zero) increase $z_k$ and keep $s_k$ as is until you satisify the criteria.

Until you reach: $0.15 - 0.15 = 0 >= 0$ (check) Then $z_k* = z_k$ $n = r_k $

enter image description here

Here are some illustration images:

enter image description here

enter image description here enter image description here

enter image description here

enter image description here

$\endgroup$
  • $\begingroup$ can you explain that with a matlab code . $\endgroup$ – Tanya May 12 '14 at 3:44

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.