Sie sind auf Seite 1von 21

Digital Image Processing Lab Manual

Submitted By :Prateek Bansal 2K10/EC/100

Experiment -1
Objective :To perform image enhancement operations.
1. Contrast Stretching 2. Image Negative

Platform Used: MatlabR2011b Code:


I=imread('lena.tiff'); [m n]=size(I); I=rgb2gray(I); I=imresize(I,[256 256]); figure(1); imshow(I); Negative=255-I; %Image Negative figure(2); imshow(Negative); contrast=1./(1+(256./double(I)).^5); figure(3); imshow(contrast);

%Contrast Stretching

OUTPUT:

Original Image

Image Negative

Contrast Stretching

Experiment 2
Objective: To flip an image horizontally and vertically. Platform Used:MatlabR2011b Theory:
Flip: In flipdim(A,dim) When the value of dim is 1, the array is flipped row-wise down that results in vertical flip. When dim is 2, the array is flipped columnwise left to right. flipdim(A,1)is the same as flipud(A), and flipdim(A,2) is the same as fliplr(A).

Code:
% flip operation I = imread('onion.png'); I2 = flipdim(I ,2); %# horizontal flip I3 = flipdim(I ,1); %# vertical flip I4 = flipdim(I3,2); %# horizontal+vertical flip subplot(2,2,1), imshow(I); subplot(2,2,2), imshow(I2); subplot(2,2,3), imshow(I3); subplot(2,2,4), imshow(I4);

Output

Experiment 3
Objective: To perform average filtering of a noisy image. Platform Used:Matlab Theory:
In average filter a mask of NXN size is used to move over an image. The corresponding pixel of image to the central pixel position of mask is replaced by an average of all NXN pixels overlapping with mask. This method is used to remove the noise (generally Gaussian type) .The value of N can be 3,5,.

Code:
%implementation of arthimetic mean filter clc; close all; a=im2double(rgb2gray(imread('lena.tiff'))); subplot(2,2,1) imshow(a); title('original image') a=imnoise(a,'gaussian',0,0.005); subplot(2,2,2) imshow(a) title('degraded imgae') b=(1/9)*ones(3); [m n]=size(a); for i=1:m-2 for j=1:n-2 a(i,j)=sum(sum((a(i:i+2,j:j+2).*b))); end end subplot(2,2,3) imshow(a) title('restored image')

OUTPUT:

Experiment 4
Objective: To perform histogram equalization on an image. Platform Used:MatlabR2011b Theory:
Histogram equalization is used to enhance the contrast of the image. It uniformly distributes the values of intensities over the pixels. Dark region becomes darker and bright region becomes brighter, that improves the appearance of the image.

Code:
%program for histogram equalization clc; close all; a=rgb2gray(imread('Penguins.jpg'));% read color image and convert into gray image [m n]=size(a); %size of image L=255; % maximum possible gray level subplot(2,1,1) imshow(a) %display original image title('original image') for i=0:L-1 p(i+1)=length(find(a==i))/(m*n); % find the probabilities of each gray level end for i=1:m for j=1:n c=a(i,j); b(i,j)=sum(p(1:c+1)); % sum up the probabilities of pixels (equalization) end end subplot(2,1,2) imshow(b) title('histogram equalized image')

OUTPUT:

Experiment 5
Objective: To implement sobel, Canny edge detection on an image. Platform Used:MatlabR2011b Code:
A=imread('lena.tiff'); subplot(2,2,1),imshow(A); B=rgb2gray(A); B=imresize(B,[256 256]); C=double(B); for i=1:size(C,1)-2 for j=1:size(C,2)-2 %Sobel mask for x-direction: Gx=((2*C(i+2,j+1)+C(i+2,j)+C(i+2,j+2))-(2*C(i,j+1)+C(i,j)+C(i,j+2))); %Sobel mask for y-direction: Gy=((2*C(i+1,j+2)+C(i,j+2)+C(i+2,j+2))-(2*C(i+1,j)+C(i,j)+C(i+2,j))); %The gradient of the image %B(i,j)=abs(Gx)+abs(Gy); B(i,j)=sqrt(Gx.^2+Gy.^2); end end subplot(2,2,2),imshow(B); title('Sobel gradient'); %Define a threshold value Thresh=100; B=max(B,Thresh); B(B==round(Thresh))=0; B=uint8(B); subplot(2,2,3),imshow(B);title('Edge detected Image');

% Canny Edge detection I = imread('lena.tiff'); I=rgb2gray(I); I=imresize(I,[256 256]); th=input('Enter the threshold limit='); % th is upper threshold and lower threshold is .4*upper threshold % The value of threshold should be less than 1 I2 = edge(I,'canny',th); figure(2); imshow(I2); title('Canny edge detected output ');

Output:

Enter the threshold limit=0.25

Experiment 6
Objective: To perform deblurring of an image using Weiner filter. Platform Used:MatlabR2011b Theory:Weiner2 performs 2-D adaptive noise filtering.
wiener2lowpass-filters a grayscale image that has been degraded by constant power additive noise. wiener2 uses a pixelwise adaptive Wiener method based on statistics estimated from a local neighborhood of each pixel ie. The wiener2 function applies a Wiener filter (a type of linear filter) to an image adaptively. Where the variance is large, wiener2 performs little smoothing. Where the variance is small, wiener2 performs more smoothing. This approach often produces better results than linear filtering. The adaptive filter is more selective than a comparable linear filter, preserving edges and other high-frequency parts of an image..wiener2, however, does require more computation time than linear filtering. wiener2 works best when the noise is constant-power ("white") additive noise, such as Gaussian noise. wiener2 estimates the local mean and variance around each pixel,

where is the N-by-M local neighborhood of each pixel in the image A. wiener2 then creates a pixelwise Wiener filter using these estimates,

where 2 is the noise variance. If the noise variance is not given, wiener2 uses the average of all the local estimated variances. Wiener filter can be applied on an image to deblur(image restoration) it. deconvwnr(I,PSF,NSR) function is used to deblur the image I, PSF is a point Spread Function with which I was convolved, NSR is a noise to signal ratio.

Code:
RGB = imread('saturn.png'); I = rgb2gray(RGB); J = imnoise(I,'gaussian',0,0.025); subplot(2,1,1),imshow(J); K = wiener2(J,[5 5]); subplot(2,1,2), imshow(K),title('filtered image');

Output:

Experiment 7
Objective: To apply Median filter to an image. Platform Used:Matlab Theory:Median filtering is a nonlinear process useful in reducing impulsive, or salt-and-pepper noise. It
is also useful in preserving edges in an image while reducing random noise. Impulsive or salt-and pepper noise can occur due to a random bit error in a communication channel. In a median filter, a window slides along the image, and the median intensity value of the pixels within the window becomes the output intensity of the pixel being processed Like lowpass filtering, median filtering smoothes the image and is thus useful in reducing noise. Unlike lowpass filtering, median filtering can preserve discontinuities in a step function and can smooth a few pixels whose values differ significantly from their surroundings without affecting the other pixels If the two impulsive values are due to noise, the result of using a median filter will be the reduce the noise. If the two values are part of the signal, however, using the median filter will distort the image.

Code:
I=imread('lena.tiff'); I=rgb2gray(I); I=imresize(I,[256 256]); subplot(2,3,1); imshow(I); title('Original Image'); I=imnoise(I,'salt & pepper'); subplot(2,3,2); imshow(I); title('Degraded Image'); %Median filtering for 3X3 window I_3=medfilt2(I,[3 3]); subplot(2,3,3); imshow(I_3); title('Filtered Image (3X3)'); %Median filtering for 5X5 window I_3=medfilt2(I,[5 5]); subplot(2,3,4); imshow(I_3); title('Filtered Image (5X5)'); %Median filtering for 7X7 window I_3=medfilt2(I,[7 7]); subplot(2,3,5); imshow(I_3); title('Filtered Image (7X7)');

Output

Experiment 8
Objective: To implement Discrete Cosine Transform(DCT) of an image. Platform Used:MatlabR2011b Code
%Discrete Cosine Transform (DCT) clc; close all clear all; a=imread('lena1.jpg'); a=im2double(rgb2gray(a)); a=imresize(a,[256,256]); imshow(a); N=256; for k=0:N-1 for n=0:N-1 if k==0 C(k+1,n+1)=sqrt(1/N); else C(k+1,n+1)=sqrt(2/N)*cos((pi*(2*n+1)*k)/(2*N)); end end end b=C*a*C'; figure imshow(b); %Reconstruction of Image d=C'*b*C figure imshow(d)

Output

Original Image

Transformed Image

Reconstructed Image

Experiment 9
Objective: To implement Hadamard Transform(DCT) of an image. Platform Used:MatlabR2011b Code
%Kronecker Product Function function [B]=kronecker_product(A) B=[A A; A -A]; end %Hadammard Transform clc; close all; clear all; a=imread('lena.jpg'); a=imresize(a,[128,128]); a=im2double(a); figure imshow(a); %n=size(a); h=[1/sqrt(2) 1/sqrt(2);1/sqrt(2) -1/sqrt(2)]; for i=1:log2(128)-1 h=1/sqrt(2)*kronecker_product(h); end h b=h*a*h'; figure imshow(b); %Reconstruction c=h'*b*h; figure imshow(c);

OUTPUT:

Original Image

Transformed Image

Reconstructed Image

Experiment 10
Objective: To perform dilation and erosion of an image. Platform Used:MatlabR2011b Theory
Erosion and Dilation:Morphological operations apply a structuring element to an input image, creating an output image of the same size. In dilation the value of the output pixel is the maximum value of all the pixels in the input pixel's neighborhood. In a binary image, if any of the pixels is set to the value 1, the output pixel is set to 1.In Erosion the value of output pixel is minimum value of all the pixels in the input pixels neighborhood. In binary image, if any of the pixel is set to 0, the output pixel is set to 0.

Code
I = imread('lena.tiff'); I=rgb2gray(I); figure(1); subplot(2,2,1); imshow(I); title('Original Image'); %erode operation %If IM is logical and the structuring element is flat, imerode performs %binary erosion; otherwise it performs grayscale erosion. %If SE is an array of structuring element objects, imerode performs multiple erosions %of the input image, using each structuring element in SE in succession SE=strel('line',10,45);

IM2 = imerode(I,SE); subplot(2,2,3); imshow(IM2); title('Eroded Image'); %dialation operation BW2 = imdilate(I,SE); subplot(2,2,4); imshow(BW2); title('Dilated Image');

Output