Abdulla DIP File

Download as pdf or txt
Download as pdf or txt
You are on page 1of 15

BABSAHEB BHIMRAO AMBEDKAR

UNIVERSITY

Digital Image Processing Lab


Practical File (ECS-851)
2023-2024

Submitted by- Submitted to-


Abdulla Ansari Dr. P.D. Saxena
208705 Faculty of CSE
B.tech(CS) 8th Sem

Page | 1
INDEX

S.no Program Date Sign


1 Write a program for image morphology
(boundary extraction, interior filling).

2 To apply Laplacian Transformation on Image

3 To Apply Low Pass Filter on the image

4 Program to Implement Edge Detection on an


image (Edge detection)

5 To display the Gray scale images

Page | 2
Program No. 1

Write a program for image morphology


(boundary extraction, interior filling).
Input:

Original Image

Code:
 MATLAB

clc;
close all;
clear all;

% Read Colour Image and convert it to a grey


level Image
% Display the original Image
I= imread('image10.png');

%I rgb2gray(RGB);
I1 = imtophat(I, strel('disk', 10));
figure, imshow(I1);
I2 = imadjust(I1);
figure,imshow(I2);

Page | 3
level = graythresh(I2);
BW = im2bw(I2,level);
figure,imshow(BW);
C=~BW;
figure,imshow(C);
D = ~bwdist(C);
D(C) = -Inf;
L = watershed(D);
Wi=label2rgb(L,'hot','w');
figure,imshow(Wi);
im=I;

Call the above function using the MATLAB command window.


Output:

Page | 4
Program No. 2

To apply Laplacian Transformation on Image


Input:

Original Image

Code:
 MATLAB

clc;
close all;
clear all;

% Read Colour Image and convert it to a grey


level Image
% Display the original Image
mycolourimage = imread('image1.jpg');
myimage = rgb2gray(mycolourimage);
subplot(3,3,1);
imshow(myimage); title('Original Image');

% Apply Laplacian Filter


f=fspecial('laplacian');
lapedg = imfilter(myimage,f,'symmetric');

Page | 5
subplot(3,3,7);
imshow(lapedg,[]); title('Laplacian Filter');

Call the above function using the MATLAB command window.


Output:

Page | 6
Program No. 3

To Apply Low Pass Filter on the image

Approach:
Step 1: Input – Read an image
Step 2: Saving the size of the input image in pixels
Step 3: Get the Fourier Transform of the input_image
Step 4: Assign the Cut-off Frequency
Step 5: Designing filter: Ideal Low Pass Filter
Step 6: Convolution between the Fourier Transformed input image and the filtering mask
Step 7: Take Inverse Fourier Transform of the convoluted image
Step 8: Display the resultant image as output
Implementation in MATLAB:

% MATLAB Code | Ideal Low Pass Filter

% Reading input image : input_image


input_image = imread('[name of input image
file].[file format]');

% Saving the size of the input_image in


pixels-
% M : no of rows (height of the image)

Page | 7
% N : no of columns (width of the image)
[M, N] = size(input_image);

% Getting Fourier Transform of the


input_image
% using MATLAB library function fft2 (2D
fast fourier transform)
FT_img = fft2(double(input_image));

% Assign Cut-off Frequency


D0 = 30; % one can change this value
accordingly

% Designing filter
u = 0:(M-1);
idx = find(u>M/2);
u(idx) = u(idx)-M;
v = 0:(N-1);
idy = find(v>N/2);
v(idy) = v(idy)-N;

% MATLAB library function meshgrid(v, u)


returns
% 2D grid which contains the coordinates of
vectors
% v and u. Matrix V with each row is a copy
% of v, and matrix U with each column is a
copy of u
[V, U] = meshgrid(v, u);

% Calculating Euclidean Distance

Page | 8
D = sqrt(U.^2+V.^2);

% Comparing with the cut-off frequency and


% determining the filtering mask
H = double(D <= D0);

% Convolution between the Fourier


Transformed
% image and the mask
G = H.*FT_img;

% Getting the resultant image by Inverse


Fourier Transform
% of the convoluted image using MATLAB
library function
% ifft2 (2D inverse fast fourier transform)
output_image = real(ifft2(double(G)));

% Displaying Input Image and Output Image


subplot(2, 1, 1), imshow(input_image),
subplot(2, 1, 2), imshow(output_image, [ ]);

Input Image – Output Image-

Page | 9
Program No. 4
Program to Implement Edge Detection on an image(Edge detection)
.Approach:

Step 1: Input – Read an image


Step 2: Convert the true-color RGB image to the grayscale image
Step 3: Convert the image to double
Step 4: Pre-allocate the filtered_image matrix with zeros
Step 5: Define Prewitt Operator Mask
Step 6: Edge Detection Process (Compute Gradient approximation and magnitude of vector)
Step 7: Display the filtered image
Step 8: Thresholding on the filtered image
Step 9: Display the edge-detected image
Implementation in MATLAB:
% MATLAB Code | Prewitt Operator from Scratch

% Read Input Image


input_image = imread('[name of input image file].[file format]');

% Displaying Input Image


input_image = uint8(input_image);
figure, imshow(input_image); title('Input Image');

% Convert the truecolor RGB image to the grayscale image


input_image = rgb2gray(input_image);

% Convert the image to double


input_image = double(input_image);

% Pre-allocate the filtered_image matrix with zeros


filtered_image = zeros(size(input_image));

% Prewitt Operator Mask


Mx = [-1 0 1; -1 0 1; -1 0 1];
My = [-1 -1 -1; 0 0 0; 1 1 1];

% Edge Detection Process


% When i = 1 and j = 1, then filtered_image pixel
% position will be filtered_image(2, 2)
% The mask is of 3x3, so we need to traverse
% to filtered_image(size(input_image, 1) - 2
%, size(input_image, 2) - 2)
% Thus we are not considering the borders.
for i = 1:size(input_image, 1) - 2
for j = 1:size(input_image, 2) - 2

Page | 10
% Gradient approximations
Gx = sum(sum(Mx.*input_image(i:i+2, j:j+2)));
Gy = sum(sum(My.*input_image(i:i+2, j:j+2)));

% Calculate magnitude of vector


filtered_image(i+1, j+1) = sqrt(Gx.^2 + Gy.^2);

end
end

% Displaying Filtered Image


filtered_image = uint8(filtered_image);
figure, imshow(filtered_image); title('Filtered Image');

% Define a threshold value


thresholdValue = 100; % varies between [0 255]
output_image = max(filtered_image, thresholdValue);
output_image(output_image == round(thresholdValue)) = 0;

% Displaying Output Image


output_image = im2bw(output_image);
figure, imshow(output_image); title('Edge Detected Image');

Input Image –

Page | 11
Filtered Image:

Edge Detected Image:

Advantages:
1. Good performance on detecting vertical and horizontal edges
2. Best operator to detect the orientation of an image
Limitations:
1. The magnitude of coefficient is fixed and cannot be changed
2. Diagonal direction points are not preserved always

Page | 12
Program No. 5
To display the Gray scale images
Approach :
 Read the source image file into image matrix
 Convert it to grayscale, if it is an RGB image
 Iterate over image matrix and count the frequency of every possible value of intensity
 plot the counted frequency

% Read source image file


img = imread('apple.jpg');

% Convert image to grayscale image


img=rgb2gray(img);

% get the dimension of the image


[x, y] = size(img);

% Create a frequency array of size 256


frequency = 1 : 256;

count = 0;

% Iterate over grayscale image matrix


% for every possible intensity value
% and count them

for i = 1 : 256
for j = 1 : x
for k = 1 : y

Page | 13
% if image pixel value at location (j, k)
is i-1
% then increment count
if img(j, k) == i-1
count = count + 1;
end
end
end
% update ith position of frequency array
with count
frequency(i) = count;

% reset count
count = 0;

end

n = 0 : 255;

% Display Histogram
stem(n, frequency);

grid on;
ylabel('Number of pixels with such intensity
levels -->');
xlabel('Intensity Levels -->');
title('HISTOGRAM OF THE IMAGE');

Input:

Page | 14
Output:

Page | 15

You might also like