1

我正在阅读这篇论文以提高图像质量。
我的问题是,当我计算加权 CDF 时,我总是得到 1 作为输出。
这是公式的序列:

公式1

定义gamma如下:

在此处输入图像描述

Cw是加权CDF:我认为我的主要问题在这里。
在此处输入图像描述
在此处输入图像描述

但为了更清楚,我也会添加其余的公式。
相应的加权直方图分布函数是: 和哪个: 哪个是剪裁直方图,并且是总强度级别(我不确定这是什么,我假设应该如此,它必须如此) 这就是它如何剪裁直方图:
在此处输入图像描述
Alpha=C(i)
在此处输入图像描述
在此处输入图像描述
h_c(i)MMsum of Pi1sum of the hc_i

在此处输入图像描述

并且限幅限制是用这个公式计算的:

在此处输入图像描述

这是我的代码:

sample_img = imread('my image path');
sample_img = im2double(sample_img);
L = 256 % The magnitude of each and every color channel is confined within the range [0 , L-1]
redChannel = sample_img(:,:,1);
greenChannel = sample_img(:,:,2);
blueChannel = sample_img(:,:,3);
max_blue = max(max(blueChannel));
max_green = max(max(greenChannel));
max_red = max(max(redChannel));

min_blue = min(min(blueChannel));
min_green = min(min(greenChannel));
min_red = min(min(redChannel));

bn = blueChannel - min_blue;
rn = redChannel - min_red;
gn = greenChannel - min_green;

max_bn = max(max(bn));
max_rn = max(max(rn));
max_gn = max(max(gn));

b_stretched = bn/max_bn;
r_stretched = rn/max_rn;
g_stretched = gn/max_gn; 


% Recombine separate color channels into an RGB image.
rgb_stretched_Image = cat(3, r_stretched, g_stretched, b_stretched);

% Convert RGB to HSI
hsi_image = rgb2hsi(rgb_stretched_Image);

intensity = hsi_image(:, :, 3);
figure()
[counts , binLocations] = imhist(intensity);
imhist(intensity);

hist = counts;
% the clipping limit is computed based on the mean value of the
Tc = mean(hist);

% histogram clipping 
length_hist = length(hist);
clipped_hist = zeros(1,length_hist);
for hist_id = 1:length_hist
    if hist(hist_id)<Tc
        disp('<Tc')
        disp(hist(hist_id));
        clipped_hist(hist_id) = hist(hist_id);
        continue
    end
    disp('>Tc')
    clipped_hist(hist_id) = Tc;
end

% the corresponding PDF (p(i))
% this is where I just used sum(clipped_hist) instead of M
Pi = clipped_hist / sum(clipped_hist);

%CDF
Ci = sum(Pi(1:L));
Alpha = Ci;

%Weighted Histogram Distribution function 
Pmin = min(Pi);
Pmax = max(Pi);

Pwi = Pmax * power((Pi-Pmin)/(Pmax-Pmin),Alpha);

%weighted PDF sum 
intensity_max = max(max(intensity*L)); 
Sum_Pwi = sum(Pwi(1:intensity_max));

% weighted CDF
Cwi = sum(Pwi(1:intensity_max)/Sum_Pwi);

%gamma
gamma = 1 - Cwi;

%Transformed pixel intensity 
tpi = round(power(intensity/intensity_max,gamma));

因为正如我所说,CDF 输出始终为 1 ,所以增强后的图像始终是白色图像。当我看到这个公式时,它的输出必须始终为 1。我在这里错过了什么吗?
我的M价值对吗?

4

0 回答 0