Lets Learn together... Happy Reading

" Two roads diverged in a wood, and I,
I took the one less traveled by,
And that has made all the difference "-Robert Frost

Linear Contrast Enhancement

The function to perform the enhancement

The coefficient ‘a’ performs the contrast enhancement while the coefficient ‘b’ is for adjusting the brightness.
Let’s start with an example,
MATLAB CODE:
%READ THE INPUT IMAGE
I = imread('vesuvius.png');

a = 1;
b = 60;

y =  a*double(I) + b;
y =  uint8(y);

%HISTOGRAM OF THE INPUT AND OUTPUT IMAGE
hist_I=imhist(I);
hist_y=imhist(y);

figure,stem([0:255],hist_I);hold on; stem([0:255],hist_y);legend Original Enhanced
figure,subplot(1,2,1),imshow(I);title('Original Image');
       subplot(1,2,2);imshow(y);title('After LCE Enhacement');



EXPLANATION:
The function ‘y’ will give an output where the values of the pixels in the input image will be increased by 60.



The behavior of the histogram of the output image is not changed. It retains the shape of the input histogram and also the information but it is shifted to the right by 60 pixels.
If pixels are subtracted then the histogram will be shifted to the left side and the image will look darker.
The table below represents the pixel bins from 0 to 255 and the number of pixels for each bin value in the input and output image.



The total number of pixels in the input image with the value zero is 20809 after the enhancement i.e the addition of 60 to the zero value , the total number of pixels in the output image with the value 60 is 20809. While the pixel value ‘60’ in the input image has the total number of occurrence 17004 , the output image will have the same number of pixel occurrence at the pixel value 120.



EXAMPLE 2:
MATLAB CODE:
%READ THE INPUT IMAGE
I = imread('vesuvius.png');

a = 1.58;
b = 0;

y =  a*double(I) + b;
y =  uint8(y);

%HISTOGRAM OF THE INPUT AND OUTPUT IMAGE
hist_I=imhist(I);
hist_y=imhist(y);

figure,stem([0:255],hist_I);hold on; stem([0:255],hist_y);legend Original Enhanced
figure,subplot(1,2,1),imshow(I);title('Original Image');
       subplot(1,2,2);imshow(y);title('After LCE Enhacement');







The histogram of the output image has the same values as of the histogram of the input image but stretched or expanded.  The coefficients ‘a’ and ‘b’ can be modified based on the visual analysis.
The minimum value of the input image:  0
The maximum value of the input image: 161
The mean of the input image:  87.86

The minimum value of the output image:  0
The maximum value of the output image: 254
The mean of the output image: 138.84

The result of the output image indicates that the pixel values are spread between 0 and 255.






The coefficient a = 1.58

The bin number 1 is multiplied with 1.58.

NEW VALUE = 2( rounding off)

So the number of occurrence of pixel value 1 is now the number of occurrence of pixel value 2 (MARKED in GREEN)



Similarly, the bin number 3 is multiplied with 1.58

NEW VALUE = round(4.74) = 5

The number of occurrence of pixel value 3 before enhancement is 14805 after multiplying with 1.58, the value 14805 is moved to the bin 5. (MARKED in RED)



EXAMPLE 3:



When the values are normalized between 0 and 1, it will be multiplied by 255 to get the pixel values between 0 and 255.


MATLAB CODE:
I = imread('vesuvius.png');
I = double(I);
y = 255*((I-min(I(:)))/range(I(:)));

y = uint8(y);
I = uint8(I);
%HISTOGRAM OF THE INPUT AND OUTPUT IMAGE
hist_I=imhist(I);
hist_y=imhist(y);

figure,stem([0:255],hist_I);hold on; stem([0:255],hist_y);legend Original Enhanced
figure,subplot(1,2,1),imshow(I);title('Original Image');
       subplot(1,2,2);imshow(y);title('After LCE Enhacement');


Contrast Enhancement for RGB image
MATLAB CODE:
clear all
clc
close all
%READ THE INPUT IMAGE
I = imread('Landsat5.png');

%PREALLOCATE THE OUTPUT IMAGE MATRIX
Oimg = zeros(size(I));

R = I(:,:,1); %RED COMPONENT
G = I(:,:,2); %GREEN COMPONENT
B = I(:,:,3); %BLUE COMPONENT

R_hist = imhist(R);%HISTOGRAM OF THE RED COMPONENT
G_hist = imhist(G);%HISTOGRAM OF THE GREEN COMPONENT
B_hist = imhist(B);%HISTOGRAM OF THE BLUE COMPONENT

figure,stem([0:255],R_hist,'r');hold on; stem([0:255],G_hist,'g');hold on; stem([0:255],B_hist,'b');legend Red Green Blue;title('Original Image');




min(R(:)),max(R(:)),mean(R(:))
min(G(:)),max(G(:)),mean(G(:))
min(B(:)),max(B(:)),mean(B(:))


MIN VALUE
MAX VALUE
MEAN VALUE
RED COMPONENT
0
108
43.00
GREEN COMPONENT
0
121
53.54
BLUE COMPONENT
0
111
39.63



R = double(R);
G = double(G);
B = double(B);

%NORMALIZE THE PIXEL VALUES BETWEEN 0 AND 255
R = uint8(255*((R-min(R(:)))/range(R(:))));
G = uint8(255*((G-min(G(:)))/range(G(:))));
B = uint8(255*((B-min(B(:)))/range(B(:))));




min(R(:)),max(R(:)),mean(R(:))
min(G(:)),max(G(:)),mean(G(:))
min(B(:)),max(B(:)),mean(B(:))






MIN VALUE
MAX VALUE
MEAN VALUE
RED COMPONENT
0
255
101.55
GREEN COMPONENT
0
255
112.84
BLUE COMPONENT
0
255
91.0471


R_hist = imhist(R);%HISTOGRAM OF THE RED COMPONENT
G_hist = imhist(G);%HISTOGRAM OF THE GREEN COMPONENT
B_hist = imhist(B);%HISTOGRAM OF THE BLUE COMPONENT

figure,stem([0:255],R_hist,'r');hold on; stem([0:255],G_hist,'g');hold on; stem([0:255],B_hist,'b');legend Red Green Blue; title('After Enhancement');






Oimg(:,:,1)=R; %ENHANCED RED COMPONENT
Oimg(:,:,2)=G; %ENHANCED GREEN COMPONENT
Oimg(:,:,3)=B; %ENHANCED BLUE COMPONENT

Oimg = uint8(Oimg); %RGB IMAGE AFTER ENHANCEMENT


figure,subplot(1,2,1),imshow(I);title('Original Image');
       subplot(1,2,2);imshow(Oimg);title('After LCE Enhacement');


PIC: USGS/NASA Landsat



EXPLANATION:
The RGB image is read into a matrix. The Red, Green and Blue channels are normalized between 0 and 255 separately.



Also check 'Balance Contrast Enhancement Technique'
like button Like "IMAGE PROCESSING" page

0 comments:

Enjoyed Reading? Share Your Views

Previous Post Next Post Home
Google ping Hypersmash.com