├── Articles ├── Main article SVD_DWT.pdf ├── Retina_contrast_enhacemnet.pdf └── SVE method.pdf ├── Matlab_Codes ├── BPDHE.m ├── Main_satellite_contrast.m ├── SVD_DWT.m ├── SVE.m ├── Subbands.m └── satellite_contrast.m └── Satellite_Images ├── eye1.png ├── eye2.png ├── eye3.png ├── retina1.png ├── sat1.png ├── sat2.jpg └── sat3.png /Articles/Main article SVD_DWT.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LalandeCh/Satellite-Image-Contrast-Enhancement/23d27c8e5ee962597a0ff5063dd7c98ec32651da/Articles/Main article SVD_DWT.pdf -------------------------------------------------------------------------------- /Articles/Retina_contrast_enhacemnet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LalandeCh/Satellite-Image-Contrast-Enhancement/23d27c8e5ee962597a0ff5063dd7c98ec32651da/Articles/Retina_contrast_enhacemnet.pdf -------------------------------------------------------------------------------- /Articles/SVE method.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LalandeCh/Satellite-Image-Contrast-Enhancement/23d27c8e5ee962597a0ff5063dd7c98ec32651da/Articles/SVE method.pdf -------------------------------------------------------------------------------- /Matlab_Codes/BPDHE.m: -------------------------------------------------------------------------------- 1 | function [outputImage, transformationMap] = BPDHE(inputImage, fuzzyMembershipType, parameters) 2 | % 3 | %fcnBPDFHE performs Brightness Preserving Dynamic Fuzzy Histogram 4 | % Equalization (BPDFHE) on an Image 5 | % 6 | % OUTPUTIMAGE = fcnBPDFHE(INPUTIMAGE) performs BPDFHE on an image using 7 | % default parameter settings. Supported image classes for INPUTIMAGE 8 | % include uint8, uint16, int16, single, double. Default execution uses a 9 | % triangular membership function with support of 5. Default memberships 10 | % values are [1 2 3 4 5 4 3 2 1]. 11 | % 12 | % OUTPUTIMAGE = fcnBPDFHE(INPUTIMAGE,FUZZY_MEMBERSHIP_TYPE,PARAMETERS) 13 | % performs BPDFHE on the INPUTIMAGE using Fuzzy Memberships as defined in 14 | % FUZZY_MEMBERSHIP_TYPE 15 | % Options: 16 | % -------- 17 | % triangular - uses a triangular membership function 18 | % gaussian - uses a gaussian membership function 19 | % custom - uses the user defined membership values 20 | % PARAMETERS are to be specified accordingly for usage 21 | % Options: 22 | % -------- 23 | % Width of support if 'triangular'. Suggested is 5 for uint8 24 | % Width of support and spread factor if 'gaussian'. Suggested is 25 | % [5,2] for uint8 26 | % User defined membership values if 'custom'. Suggested is [1 2 3 4 5 4 3 2 1] 27 | % 28 | % [OUTPUTIMAGE, TRANSFORMATION_MAP] = fcnBPDFHE(...) returns also the 29 | % intensity transformation matrix for further usage. 30 | % 31 | % Details of the method are available in 32 | % D. Sheet, H. Garud, A. Suveer, J. Chatterjee and M. Mahadevappa, 33 | % "Brightness Preserving Dynamic Fuzzy Histogram Equalization", 34 | % IEEE Trans., Consumer Electronics, vol. 56, no. 4, pp. 2475 - 2480, 35 | % Nov. 2010. [http://dx.doi.org/10.1109/TCE.2010.5681130] 36 | % 37 | % H. Garud, D. Sheet, A. Suveer, P.K. Karri, A.K. Ray, M. Mahadevappa, 38 | % J. Chatterjee, "Brightness preserving contrast enhancement in digital 39 | % pathology", Proc. ICIIP 2011. 40 | % [http://dx.doi.org/10.1109/ICIIP.2011.6108964] 41 | % 42 | % 2009 (c) Debdoot Sheet, Indian Institute of Technology Kharagpur, India 43 | % Ver 1.0 28 January 2009 44 | % Ver 2.0 11 December 2011 45 | % Rev 1.0 14 December 2011 46 | % Rev 2.0 15 December 2011 47 | % 48 | % Example (Grayscale Images) 49 | % -------------------------- 50 | % inputImage = imread('cameraman.tif'); 51 | % outputImage = fcnBPDFHE(inputImage); 52 | % figure, subplot 131, imshow(inputImage), subplot 132, 53 | % imshow(outputImage), subplot 133, imshow(inputImage-outputImage,[]) 54 | % 55 | % Example (Color Images) 56 | % -------------------------- 57 | % rgbInputImage = imread('peppers.png'); 58 | % labInputImage = applycform(rgbInputImage,makecform('srgb2lab')); 59 | % Lbpdfhe = fcnBPDFHE(labInputImage(:,:,1)); 60 | % labOutputImage = cat(3,Lbpdfhe,labInputImage(:,:,2),labInputImage(:,:,3)); 61 | % rgbOutputImage = applycform(labOutputImage,makecform('lab2srgb')); 62 | % figure, subplot 121, imshow(rgbInputImage), subplot 122, 63 | % imshow(rgbOutputImage); 64 | 65 | 66 | % 2009 (c) Debdoot Sheet, Indian Institute of Technology Kharagpur, India 67 | % All rights reserved. 68 | % 69 | % Permission is hereby granted, to use, copy, modify, and distribute this code 70 | % (the source files) and its documentation for any purpose, provided that 71 | % the copyright notice in its entirety appear in all copies of this code, 72 | % and the original source of this code. Further Indian Institute of 73 | % Technology Kharagpur (IIT Kharagpur / IITKGP) is acknowledged in any 74 | % publication that reports research or any usage using this code. The work 75 | % is to be cited using the bibliography as 76 | % 77 | % D. Sheet, H. Garud, A. Suveer, J. Chatterjee and M. Mahadevappa, 78 | % "Brightness Preserving Dynamic Fuzzy Histogram Equalization", 79 | % IEEE Trans., Consumer Electronics, vol. 56, no. 4, pp. 2475 - 2480, 80 | % Nov. 2010. [http://dx.doi.org/10.1109/TCE.2010.5681130] 81 | % 82 | % Garud, H. Sheet, D. Suveer, A. Karri, P.K. Ray, A.K. Mahadevappa, M. 83 | % Chatterjee, J., "Brightness preserving contrast enhancement in digital 84 | % pathology", Proc. ICIIP 2011. 85 | % [http://dx.doi.org/10.1109/ICIIP.2011.6108964] 86 | % 87 | % In no circumstantial cases or events the Indian Institute of Technology 88 | % Kharagpur or the author(s) of this particular disclosure be liable to any 89 | % party for direct, indirectm special, incidental, or consequential 90 | % damages if any arising out of due usage. Indian Institute of Technology 91 | % Kharagpur and the author(s) disclaim any warranty, including but not 92 | % limited to the implied warranties of merchantability and fitness for a 93 | % particular purpose. The disclosure is provided hereunder "as in" 94 | % voluntarily for community development and the contributing parties have 95 | % no obligation to provide maintenance, support, updates, enhancements, 96 | % or modification. 97 | 98 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 99 | % Input argument support check 100 | iptcheckinput(inputImage,{'uint8','uint16','int16','single','double'}, {'nonsparse','2d'}, mfilename,'I',1); 101 | 102 | if nargin == 1 103 | parameters = 5; 104 | membership = parameters(1)-abs(-parameters(1):parameters(1)); 105 | elseif nargin == 3 106 | if strcmp(fuzzyMembershipType,'triangular') 107 | if ~(numel(parameters)==1) 108 | error('fcnBPDFHE supports only 1 parameter for Triangular Membership'); 109 | end 110 | membership = parameters(1)-abs(-parameters(1):parameters(1)); 111 | elseif strcmp(fuzzyMembershipType,'gaussian') 112 | if ~(numel(parameters)==2) 113 | error('fcnBPDFHE supports only 2 parameters for Gaussian Membership'); 114 | end 115 | membership = exp(-(-parameters(1):parameters(1)).^2/parameters(2)^2); 116 | elseif strcmp(fuzzyMembershipType,'custom') 117 | if numel(parameters)==0 118 | error('fcnBPDFHE requires the membership value specification as 1-D array for Custom Membership'); 119 | end 120 | membership = parameters; 121 | else 122 | error('Unsupported membership type declaration'); 123 | end 124 | else 125 | error('Unsupported calling of fcnBPDFHE'); 126 | end 127 | 128 | imageType = class(inputImage); 129 | 130 | % Histogram creation 131 | if strcmp(class(inputImage),'uint8') 132 | [crispHistogram,grayScales] = imhist(inputImage); 133 | elseif strcmp(class(inputImage),'uint16') 134 | crispHistogram = zeros([2^16 1]); 135 | for counter = 1:numel(inputImage) 136 | crispHistogram(inputImage(counter)+1) = crispHistogram(inputImage(counter)+1) + 1; 137 | end 138 | grayScales = 0:(2^16 - 1); 139 | elseif strcmp(class(inputImage),'int16') 140 | crispHistogram = zeros([2^16 1]); 141 | for counter = 1:numel(inputImage) 142 | crispHistogram(inputImage(counter)+32769) = crispHistogram(inputImage(counter)+32769) + 1; 143 | end 144 | grayScales = -32768:32767; 145 | elseif (strcmp(class(inputImage),'double')||strcmp(class(inputImage),'single')) 146 | maxGray = max(inputImage(:)); 147 | minGray = min(inputImage(:)); 148 | inputImage = im2uint8(mat2gray(inputImage)); 149 | [crispHistogram,grayScales] = imhist(inputImage); 150 | end 151 | 152 | inputImage = double(inputImage); 153 | 154 | fuzzyHistogram = zeros(numel(crispHistogram)+numel(membership)-1,1); 155 | 156 | for counter = 1:numel(membership) 157 | fuzzyHistogram = fuzzyHistogram + membership(counter)*[zeros(counter-1,1);crispHistogram;zeros(numel(membership)-counter,1)]; 158 | end 159 | 160 | fuzzyHistogram = fuzzyHistogram(ceil(numel(membership)/2):end-floor(numel(membership)/2)); 161 | 162 | del1FuzzyHistogram = [0;(fuzzyHistogram(3:end)-fuzzyHistogram(1:end-2))/2;0]; 163 | del2FuzzyHistogram = [0;(del1FuzzyHistogram(3:end)-del1FuzzyHistogram(1:end-2))/2;0]; 164 | 165 | locationIndex = (2:numel(fuzzyHistogram)-1)'+1; 166 | 167 | maxLocAmbiguous = locationIndex(((del1FuzzyHistogram(1:end-2).*del1FuzzyHistogram(3:end))<0) & (del2FuzzyHistogram(2:end-1)<0)); 168 | 169 | counter = 1; 170 | 171 | maxLoc = 1; 172 | 173 | while counter < numel(maxLocAmbiguous) 174 | if (maxLocAmbiguous(counter)==(maxLocAmbiguous(counter+1)-1)) 175 | maxLoc = [maxLoc ; (maxLocAmbiguous(counter)*(fuzzyHistogram(maxLocAmbiguous(counter))>fuzzyHistogram(maxLocAmbiguous(counter+1)))) + (maxLocAmbiguous(counter+1)*(fuzzyHistogram(maxLocAmbiguous(counter))<=fuzzyHistogram(maxLocAmbiguous(counter+1))))]; 176 | counter = counter + 2; 177 | else 178 | maxLoc = [maxLoc ; maxLocAmbiguous(counter)]; 179 | counter = counter + 1; 180 | end 181 | end 182 | if(maxLoc(end)~=numel(fuzzyHistogram)) 183 | maxLoc = [maxLoc ; numel(fuzzyHistogram)]; 184 | end 185 | 186 | low = maxLoc(1:end-1); 187 | high = [maxLoc(2:end-1)-1;maxLoc(end)]; 188 | span = high-low; 189 | cumulativeHistogram = cumsum(fuzzyHistogram); 190 | M = cumulativeHistogram(high)-cumulativeHistogram(low); 191 | factor = span .* log10(M); 192 | range = max(grayScales)*factor/sum(factor); 193 | 194 | transformationMap = zeros(numel(grayScales),1); 195 | 196 | for counter = 1:length(low) 197 | for index = low(counter):high(counter) 198 | transformationMap(index) = round((low(counter)-1) + (range(counter)*(sum(fuzzyHistogram(low(counter):index)))/(sum(fuzzyHistogram(low(counter):high(counter)))))); 199 | end 200 | end 201 | 202 | outputImage = transformationMap(inputImage+1); 203 | 204 | outputImage = mean(inputImage(:))/mean(outputImage(:))*outputImage; 205 | 206 | outputImage = cast(outputImage,imageType); 207 | 208 | if strcmp(imageType,'single') 209 | outputImage = minGray + (maxGray-minGray)*mat2gray(outputImage); 210 | elseif strcmp(imageType,'double') 211 | outputImage = minGray + (maxGray-minGray)*mat2gray(outputImage); 212 | end -------------------------------------------------------------------------------- /Matlab_Codes/Main_satellite_contrast.m: -------------------------------------------------------------------------------- 1 | %%%%%%%% SATELLITE IMAGE CONTRAST ENHACEMENT %%%%%%%%% 2 | %%% Authors: Benjamin Chatain and Katherine Sheran 3 | %%% Master in Medical Imaging and Applications (MAIA) 4 | 5 | %%% Based on the article: 6 | % "Satellite Image Contrast Enhancement Based On Discrete Wavelet Transform and Singular Value Decomposition". 7 | % By Hasan Demirel, Cagri Ozcinar & Gholamreza Anbarjafari 8 | %---------------------------------------------------------------------- 9 | % Start cleaning everything 10 | %---------------------------------------------------------------------- 11 | clear %no variables 12 | close all %no figures 13 | clc %empty command window 14 | %---------------------------------------------------------------------- 15 | %% LOADING THE LOW CONTRAST IMAGE 16 | %---------------------------------------------------------------------- 17 | %% images provided are: sat1.png / sat2.jpg / space3.png / eye1.png / eye2.png / eye3.png 18 | original_img = imread('fovea7.png'); %reading the image 19 | original_img = rgb2gray(original_img); % converting to greyscale image 20 | 21 | 22 | %---------------------------------------------------------------------- 23 | %% APPLYING DIFFERENT CONTRAST ENAHNCEMENT METHODS 24 | %---------------------------------------------------------------------- 25 | [ SVD_DWT_img ] = SVD_DWT (original_img); %Proposed Method 26 | 27 | GHE_img = histeq(original_img, 256); %General Histogram Equalization 28 | 29 | CLAHE_img = adapthisteq(original_img); % Contrast Limited Adaptive Histogram Equalization 30 | 31 | BPDHE_img = BPDHE(original_img); %Brightness Preserving Dynamic Histogram 32 | 33 | SVE_img = SVE(original_img); %Singular Value Equalization 34 | 35 | 36 | %---------------------------------------------------------------------- 37 | %% QUALITATIVE RESULTS 38 | %---------------------------------------------------------------------- 39 | figure 40 | subplot(2,3,1), imshow(original_img) 41 | title('Original Image'); 42 | 43 | subplot(2,3,2), imshow( GHE_img ); 44 | title('General Histogram Equalization'); 45 | 46 | subplot(2,3,3), imshow(CLAHE_img); 47 | title('Contrast Limited Adaptive Histogram Equalization'); 48 | 49 | subplot(2,3,4), imshow(BPDHE_img); 50 | title('Brightness Preserving Dynamic Histogram Equalization'); 51 | 52 | subplot(2,3,5), imshow( uint8 (SVE_img)); 53 | title('Singular Value Equalization'); 54 | 55 | subplot(2,3,6), imshow(uint8 (SVD_DWT_img) ); 56 | title('Proposed Method: SVD & DWT'); 57 | 58 | %---------------------------------------------------------------------- 59 | %% QUANTITATIVE RESULTS 60 | %---------------------------------------------------------------------- 61 | figure 62 | subplot(2,3,1); 63 | h1 = histogram(original_img, 'Normalization','pdf'); 64 | h1.NumBins = 50; 65 | title('Original Image'); 66 | 67 | subplot(2,3,2); 68 | h2 = histogram(GHE_img,'Normalization','pdf'); 69 | h2.NumBins = 70; 70 | title('General Histogram Equalization'); 71 | 72 | subplot(2,3,3); 73 | h3 = histogram(CLAHE_img,'Normalization','pdf'); 74 | h3.NumBins = 70; 75 | title('Contrast Limited Adaptive Histogram Equalization'); 76 | 77 | subplot(2,3,4); 78 | h4 = histogram(BPDHE_img,'Normalization','pdf'); 79 | h4.NumBins = 70; 80 | title('Brightness Preserving Dynamic Histogram Equalization'); 81 | 82 | subplot(2,3,5); 83 | h5 = histogram(SVE_img,'Normalization','pdf'); 84 | h5.NumBins = 70; 85 | title('Singular Value Equalization'); 86 | 87 | subplot(2,3,6); 88 | h6 = histogram(SVD_DWT_img,'Normalization','pdf'); 89 | h6.NumBins = 70; 90 | title('Proposed Method: SVD & DWT'); 91 | 92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /Matlab_Codes/SVD_DWT.m: -------------------------------------------------------------------------------- 1 | function [ contrast_enhanced_img ] = SVD_DWT( low_contrast_img ) 2 | %%% Applys DWT and SVD to obtain a contrast enhaced image 3 | % The technique decomposes the input image into the Discrete Wavelet Transform (DWT) subbands, 4 | % updates the singular value matrix (SVD) of the LL subband 5 | % and reconstructs the image by Inverse Discrete Wavelet Transform (IDWT). 6 | %%% input = low contrast image 7 | %%% output = contrast enhanced image 8 | % 9 | %%% Based on the article: 10 | % "Satellite Image Contrast Enhancement Based On Discrete Wavelet Transform and Singular Value Decomposition". 11 | % By Hasan Demirel, Cagri Ozcinar & Gholamreza Anbarjafari 12 | %---------------------------------------------------------- 13 | 14 | 15 | %% OBTAINING THE LL SUBBAND OF ORIGINAL IMAGE 16 | [LL_orig, HL_orig, LH_orig, HH_orig, Subbands_orig] = Subbands (low_contrast_img); 17 | 18 | %% PERFORMING SINGULAR VALUE DECOMPOSITION (SVD) ON THE LL SUBBAND OF ORIGINAL IMAGE 19 | [U_orig, S_orig, V_orig] = svd (LL_orig); 20 | 21 | %% PERFORMING GENERAL HISTOGRAM EQUALIZATION (GHE) 22 | ghe_img = histeq(low_contrast_img, 256); 23 | 24 | %% OBTAINING LL SUBBAND OF EQUALIZED IMAGE 25 | [LL_ghe, HL_ghe, LH_ghe, HH_ghe, Subbands_ghe] = Subbands (ghe_img); 26 | 27 | %% PERFORMING SVD ON LL SUBBAND OF EQUALIZED IMAGE 28 | [U_ghe, S_ghe, V_ghe] = svd(LL_ghe); 29 | 30 | %% OBTAINING THE ZETA COEFFICIENT 31 | Z = max(S_ghe) / max(S_orig); % dividing the max singular value of equalized img / max singular value of original img 32 | 33 | %% CALCULATING NEW SIGMA 34 | new_sigma = Z * S_orig; %updating the new singular value matrix 35 | 36 | %% OBAINING NEW LL SUBBAND 37 | new_LL = U_orig * new_sigma * V_orig' ; % obtaining the new LL subband 38 | 39 | %% RECONSTRUCT NEW ENHANCED IMAGE BY IDWT 40 | contrast_enhanced_img = idwt2 (new_LL, HL_orig, LH_orig, HH_orig, 'db1'); %constructing the new enhanced image 41 | 42 | end 43 | 44 | -------------------------------------------------------------------------------- /Matlab_Codes/SVE.m: -------------------------------------------------------------------------------- 1 | function [ equalized_image ] = SVE ( image ) 2 | % In this singular value equalization (SVE) method the intensity of 3 | % the image is equalized by performing SVD and equalizing the singular 4 | % value of sigma. 5 | %%% input = low contrast image 6 | %%% output = intensity equalized image 7 | 8 | 9 | %% PREPARING THE IMAGE 10 | image = double(image); 11 | 12 | %% PERFORMING SVD ON THE ORIGINAL IMAGE 13 | [U, S, V] = svd(image); 14 | 15 | %% CREATING OF AN IMAGE OF SAME DIMENSIONS OF MEAN 128 16 | [X, Y] = size(image); 17 | image_mean_128 = ones(X, Y) * 128; 18 | 19 | %% PERFORMING SVD ON THE IMAGE OF MEAN 128 20 | [U_mean_128, S_mean_128, V_mean_128] = svd(image_mean_128); 21 | 22 | %% OBTAINING THE ZETA COEFFICIENT 23 | zeta = max(image_mean_128)/max(image); % zeta coefficient= max singular value of sigma / max value of image 24 | 25 | %% CALCULATING NEW SIGMA 26 | new_sigma = zeta * S; %updating the new singular value matrix(sigma) 27 | 28 | %% RECONSTRUCT NEW ENHANCED IMAGE 29 | equalized_image = (U * new_sigma * V') ; %reconstructing new image by multiplying the 3 matrices. 30 | 31 | 32 | 33 | end 34 | 35 | -------------------------------------------------------------------------------- /Matlab_Codes/Subbands.m: -------------------------------------------------------------------------------- 1 | function [ LL, HL, LH, HH, Sub_Im ] = Subbands( image ) 2 | %The Subband function performs DWT to obtain 4 subbands of an image. 3 | % Input: image 4 | % Output: LL, HL, LH, HH subbands obtained by performing Discrete Wavelet Transform (DWT). 5 | % Sub_Im which is an array containing the 4 subbands 6 | 7 | image = double(image); % the data should be in double precision value format 8 | [LL, HL, LH, HH] = dwt2 ( image, 'db1' ); % perform DWT to obtain the 4 subbands 9 | [H, W] = size(LL); % obtain height(H) and width(W) of subband LL to know the size of the array. 10 | Sub_Im = zeros (2*H, 2*W); % initializing an array with H and W dimensions that will contain all 4 subbands. 11 | 12 | Sub_Im ( 1 : H , 1 : W ) = LL; 13 | Sub_Im ( 1 : H , (W+1 : W*2) ) = HL; 14 | Sub_Im ( (H+1 : H*2) , 1:W ) = LH; 15 | Sub_Im ( (H+1 : H*2) , (W+1 : W*2) ) = HH; 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /Matlab_Codes/satellite_contrast.m: -------------------------------------------------------------------------------- 1 | %%%%%%%% SATELLITE IMAGE CONTRAST ENHACEMENT %%%%%%%%% 2 | %%% Authors: Benjamin Chatain and Katherine Sheran 3 | %%% Master in Medical Imaging and Applications (MAIA) 4 | 5 | %%% Based on the article: 6 | % "Satellite Image Contrast Enhancement Based On Discrete Wavelet Transform and Singular Value Decomposition". 7 | % By Hasan Demirel, Cagri Ozcinar & Gholamreza Anbarjafari 8 | %---------------------------------------------------------------------- 9 | % Start cleaning everything 10 | %---------------------------------------------------------------------- 11 | clear %no variables 12 | close all %no figures 13 | clc %empty command window 14 | %---------------------------------------------------------------------- 15 | %% LOADING THE LOW CONTRAST IMAGE 16 | %---------------------------------------------------------------------- 17 | %% best options are: sat2.png / sat3.png / sat7.jpg / space3.png / fovea3.png / fovea5.png 18 | original_img = imread('orion1.jpg'); %reading the image 19 | original_img = rgb2gray(original_img); % converting to greyscale image 20 | 21 | 22 | %---------------------------------------------------------------------- 23 | %% APPLYING DIFFERENT CONTRAST ENAHNCEMENT METHODS 24 | %---------------------------------------------------------------------- 25 | [ proposed_method_img ] = SVD_DWT (original_img); %Proposed Method 26 | 27 | GHE_img = histeq(original_img, 256); %General Histogram Equalization 28 | 29 | 30 | CLHE_img = adapthisteq(original_img); %Contrast Limited Histogram Equalization 31 | 32 | BPDHE_img = BPDHE(original_img); %Brightness Preserving Dynamic Histogram 33 | 34 | SVE_img = SVE(original_img); %Singular Value Equalization 35 | 36 | 37 | %---------------------------------------------------------------------- 38 | %% QUALITATIVE RESULTS 39 | %---------------------------------------------------------------------- 40 | figure 41 | subplot(2,3,1), imshow(original_img) 42 | title('Original Image'); 43 | 44 | subplot(2,3,2), imshow( GHE_img ); 45 | title('General Histogram Equalization'); 46 | 47 | % subplot(2,3,3), imshow(LHE_img); 48 | % title('Local Histogram Equalization'); 49 | 50 | subplot(2,3,4), imshow(BPDHE_img); 51 | title('Brightness Preserving Dynamic Histogram'); 52 | 53 | subplot(2,3,5), imshow( uint8 (SVE_img)); 54 | title('Singular Value Equalization'); 55 | 56 | subplot(2,3,6), imshow(uint8 (proposed_method_img) ); 57 | title('Proposed Method'); 58 | 59 | %---------------------------------------------------------------------- 60 | %% QUANTITATIVE RESULTS 61 | %---------------------------------------------------------------------- 62 | figure 63 | subplot(2,3,1); 64 | original_mean = mean2(original_img); 65 | original_std = std2(original_img); 66 | histogram(original_img, 'Normalization','pdf'); 67 | title(strcat('Original [ Mean: ', num2str(original_mean),', Standart Dev: ', num2str(original_std), ' ]')); 68 | xlim([0, 255]); 69 | 70 | subplot(2,3,2); 71 | GHE_mean = mean2(GHE_img); 72 | GHE_std = std2(GHE_img); 73 | histogram(GHE_img,'Normalization','pdf'); 74 | title(strcat('GHE [ Mean: ', num2str(GHE_mean),', Standart Dev: ', num2str(GHE_std), ' ]')); 75 | xlim([0, 255]); 76 | 77 | % subplot(2,3,3); 78 | % histogram(LHE_img,'Normalization','pdf'); 79 | % title('Local Histogram Equalization'); 80 | 81 | subplot(2,3,4); 82 | BPDHE_mean = mean2(BPDHE_img); 83 | BPDHE_std = std2(BPDHE_img); 84 | histogram(BPDHE_img,'Normalization','pdf'); 85 | title(strcat('BPDHE [ Mean: ', num2str(BPDHE_mean),', Standart Dev: ', num2str(BPDHE_std), ' ]')); 86 | xlim([0, 255]); 87 | 88 | subplot(2,3,5); 89 | SVE_mean = mean2(SVE_img); 90 | SVE_std = std2(SVE_img); 91 | histogram(SVE_img,'Normalization','pdf'); 92 | title(strcat('SVE [ Mean: ', num2str(SVE_mean),', Standart Dev: ', num2str(SVE_std), ' ]')); 93 | xlim([0, 255]); 94 | 95 | subplot(2,3,6); 96 | proposed_method_mean = mean2(proposed_method_img); 97 | proposed_method_std = std2(proposed_method_img); 98 | histogram(proposed_method_img,'Normalization','pdf') 99 | title(strcat('Proposed Method [ Mean: ', num2str(proposed_method_mean),', Standart Dev: ', num2str(proposed_method_std), ' ]')); 100 | xlim([0, 255]); 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /Satellite_Images/eye1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LalandeCh/Satellite-Image-Contrast-Enhancement/23d27c8e5ee962597a0ff5063dd7c98ec32651da/Satellite_Images/eye1.png -------------------------------------------------------------------------------- /Satellite_Images/eye2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LalandeCh/Satellite-Image-Contrast-Enhancement/23d27c8e5ee962597a0ff5063dd7c98ec32651da/Satellite_Images/eye2.png -------------------------------------------------------------------------------- /Satellite_Images/eye3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LalandeCh/Satellite-Image-Contrast-Enhancement/23d27c8e5ee962597a0ff5063dd7c98ec32651da/Satellite_Images/eye3.png -------------------------------------------------------------------------------- /Satellite_Images/retina1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LalandeCh/Satellite-Image-Contrast-Enhancement/23d27c8e5ee962597a0ff5063dd7c98ec32651da/Satellite_Images/retina1.png -------------------------------------------------------------------------------- /Satellite_Images/sat1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LalandeCh/Satellite-Image-Contrast-Enhancement/23d27c8e5ee962597a0ff5063dd7c98ec32651da/Satellite_Images/sat1.png -------------------------------------------------------------------------------- /Satellite_Images/sat2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LalandeCh/Satellite-Image-Contrast-Enhancement/23d27c8e5ee962597a0ff5063dd7c98ec32651da/Satellite_Images/sat2.jpg -------------------------------------------------------------------------------- /Satellite_Images/sat3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LalandeCh/Satellite-Image-Contrast-Enhancement/23d27c8e5ee962597a0ff5063dd7c98ec32651da/Satellite_Images/sat3.png --------------------------------------------------------------------------------