Challenge

Project 2

Challenge 2 of computer vision

This challenge covers Prewitt filter and Laplacian filter used for edge detection

This challenge also highlights the basic difference between Prewitt and Laplacian filter

''' Import the required libraries'''
import cv2
import numpy as np

********* Gaussian Filter is common for both Prewitt and Gaussian filter***************

# gaussian filter removes gaussian noise using gaussian filterand standard deviation(sigma)
def gaussian_filter(img,filter_size,sigma):
filtered_image = cv2.GaussianBlur(img,(filter_size,filter_size), sigma)
return filtered_image

***************************************************************************

# prewitt filter is very similar to sobel filter except different horizontal and vertical filters
def prewitt_filter(img):
image = gaussian_filter(img,5,5)
vertical_filter = np.array([[1,0,-1],[1,0,-1],[1,0,-1]])
horizontal_filter = np.array([[1,1,1],[0,0,0],[-1,-1,-1]]) # horizontal filter is transpose of vertical filter
vertical_filtered = cv2.filter2D(image,-1,vertical_filter) # vertically filter the image
horizontal_filtered = cv2.filter2D(image,-1,horizontal_filter)
abs_grad_x = cv2.convertScaleAbs(vertical_filtered)
abs_grad_y = cv2.convertScaleAbs(horizontal_filtered)
prewitt_grad = cv2.addWeighted(abs_grad_x,0.5,abs_grad_y,0.5,0)
return prewitt_grad

image = cv2.imread('Challenge_2.png')
gray_img = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
prewitt_filter_img = prewitt_filter(gray_img)
cv2.imwrite('prewitt_filtered_image.png', prewitt_filter_img)
cv2.imshow('prewitt_filtered_image', prewitt_filter_img)
cv2.waitKey(0)

******************* Prewitt Filter ends *************************************************


# A direct open CV function is available
def laplacian_filter(img):
image = gaussian_filter(img,5,5)
laplacian_filtered_img = cv2.Laplacian(image,cv2.CV_64F)
return laplacian_filtered_img

image = cv2.imread('Challenge_2.png')
gray_img = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
laplacian_filter_img = laplacian_filter(gray_img)
cv2.imwrite('laplacian_filtered_image.png',laplacian_filter_img)
cv2.imshow('laplacian_filtered_image', laplacian_filter_img)
cv2.waitKey(0)

**************************** Laplacian Filter ends *****************************************

## The Prewitt filter produces better image as it is less prone to noise

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.