Download this file

38 lines (35 with data), 1.4 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function [i] = histenhance(i)
%HISTENHANCE image histogram ehancement
% Corrects the image histogram by canceling the outliers from lower and
% higher gray values and balance the visual preview
%
% Copyright Mahdi S. Hosseini, BSc, MSc, MASc, PhD
% University of Toronto, September 2015
% The Edward S. Rogers Sr. Department of,
% Electrical and Computer Engineering (ECE)
% Toronto, ON, M5S3G4, Canada
% Tel: +1 (416) 978 6845
% email: mahdi.hosseini@mail.utoronto.ca
%% canceling high intensity outliers
[m, n, q] = size(i);
for channel = 1:q
channel_image = i(:,:,channel);
[N, x] = hist(channel_image(:), 100);
max_energy_keeping = .999;
max_point = cumsum(N)/sum(N);
max_point = sum(max_point<max_energy_keeping);
max_point = x(max_point);
channel_image(channel_image>max_point) = max_point;
i(:, :, channel) = channel_image;
end
%% canceling low intensity outliers
for channel = 1:q
channel_image = i(:,:,channel);
[N, x] = hist(channel_image(:), 100);
min_energy_keeping = .999;
min_point = cumsum(N(end:-1:1))/sum(N);
min_point = sum(min_point<min_energy_keeping);
min_point = x(numel(x)-min_point);
channel_image(channel_image<min_point) = min_point;
i(:, :, channel) = channel_image;
end