Showing posts with label contrast manipulation in matlab. Show all posts
Showing posts with label contrast manipulation in matlab. Show all posts

Thursday, March 24, 2016

Contrast stretching in MATLAB

     Increase the dynamic range of gray values in the input image.

Read contrast.jpg image which is a low contrast image. Apply the transformation such that r1=rmin, S1=0, r2=rmax, S2=L-1. Plot the transformation function and display the contrast stretched image.

CODE:

clc; clear all;

%% Reading an image
a1=imread('contrast.jpg');
a=double(a1);
[row,col]=size(a);

%% Transformation function (r1,s1)=(rmin,0), (r2,s2)=(rmax,255)
t=0:255;
x1=0*(t>=0 & t<=100); 
x2=7.285*(t-100).*(t>100& t<135);          
x3=255*(t>=135 & t<=255);
x=x1+x2+x3;

%% Obtaining contrast stretched image
for n=1:row
    for m=1:col
        out(n,m)=x(a1(n,m)+1);
    end
end

out1=imadjust(a1,stretchlim(a1),[]);

plot(x)
grid on;
xlabel('Intensity in input image');
ylabel('Intensity in output image')
title('Transformation function')

figure()
subplot(131), imshow(a1), title('Original image')
subplot(132), imshow(uint8(out)), title('Contrast Stretching(using code)')
subplot(133), imshow(out1), title('Contrast Stretching(using stretchlim)')



OUTPUT RESULT:


Transformation Output

Tuesday, March 22, 2016

Basic Intensity Transformation Functions

1) Image Negative: s=L-1-r where r is the input intensity level and s is the output intensity level.
Read northpole.jpg image, obtain its negative. Display the original image and its negative.

clc; clear all;

a=imread('northpole.jpg');
b=255-a;                    % s=L-1-r
subplot(211), imshow(a), title('Northpole Image')
subplot(212), imshow(b), title('Negative of Northpole')



2)   Log Transformation:   s=T(r)=clog(1+r) where c is a constant and r is the input gray level.

    Read fourier.jpg image and apply log transformation and display the fourier Spectrum.

clc; clear all;

in=imread('fourier.jpg');
c=input('Enter the constant value, c = ');
a=im2double(in);
a=a*255;
out=c*log10(1+a);                   % s=T(r)=clog(1+r)
out=out/max(max(out));              % Normalization
subplot(121), imshow(in), title('Original Image')
subplot(122), imshow(out), title('Log Transformed Image(c=1)')



3)   Power Law Transformations: s=crγ. To account for an offset, when the input is zero use s= c(r+ε)γ.
 Read crt.jpg, apply the transformation function with γ=1/2.5. Display the gamma corrected image.
clc; clear all;

c=1;
Gamma=input('Enter the Gamma value = ');
x=imread('crt.jpg');
x1=double(x);      
y=c*(x1.^Gamma);                % s=c*(r^ γ)

subplot(211),imshow(x), title('CRT input image')
subplot(212),imshow((y),[]), title('Corrected image(Gamma=0.4)')



4)     Contrast Manipulation:
Read mr.jpg image which is a magnetic resonance image with an upper thoracic human spine with a fracture dislocation. Apply power law transformation with exponents γ=0.6,  γ=0.4,  γ=0.3. Display the outputs and comment on the results.

clc; clear all;

c=1;
Gamma=input('Enter the Gamma value = ');  % Must be vector, Ex:[0.6 0.4 0.3]
x=imread('mr.jpg');
x1=double(x);      
y=c*(x1.^Gamma(1));                             % s=c*(r^ γ)
y1=c*(x1.^Gamma(2));
y2=c*(x1.^Gamma(3));

subplot(141),imshow(x), title('MRI scanned image')
subplot(142),imshow((y),[]), title('Corrected image(Gamma=0.6)')
subplot(143),imshow((y1),[]), title('Corrected image(Gamma=0.4)')
subplot(144),imshow((y2),[]), title('Corrected image(Gamma=0.3)')