OpenCV is the huge open-source library for computer vision, machine learning, and image processing and now it plays a major role in real-time operation which is very important in today’s systems. By using it, one can process images and videos to identify objects, faces, or even the handwriting of a human.
Point processing in spatial domain
All the processing done on the pixel values. Point processing operations take the form –
s = T ( r )
Here, T is referred to as a grey level transformation function or a point processing operation, s refers to the processed image pixel value and r refers to the original image pixel value.
Image Negative:
s = (L-1) – r, where L= number of grey levels
Thresholding:
s = L-1 for r > threshold s = 0 for r < threshold
Grey level slicing with background:
s = L-1 for a < r < b, here a and b define some specific range of grey level s = r otherwise.
Below is the implementation.
Original Input Image :
Python3
import cv2 import numpy as np # Image negative img = cv2.imread( 'food.jpeg' , 0 ) # To ascertain total numbers of # rows and columns of the image, # size of the image m,n = img.shape # To find the maximum grey level # value in the image L = img. max () # Maximum grey level value minus # the original image gives the # negative image img_neg = L - img # convert the np array img_neg to # a png image cv2.imwrite( 'Cameraman_Negative.png' , img_neg) # Thresholding without background # Let threshold =T # Let pixel value in the original be denoted by r # Let pixel value in the new image be denoted by s # If r<T, s= 0 # If r>T, s=255 T = 150 # create an array of zeros img_thresh = np.zeros((m,n), dtype = int ) for i in range (m): for j in range (n): if img[i,j] < T: img_thresh[i,j] = 0 else : img_thresh[i,j] = 255 # Convert array to png image cv2.imwrite( 'Cameraman_Thresh.png' , img_thresh) # the lower threshold value T1 = 100 # the upper threshold value T2 = 180 # create an array of zeros img_thresh_back = np.zeros((m,n), dtype = int ) for i in range (m): for j in range (n): if T1 < img[i,j] < T2: img_thresh_back[i,j] = 255 else : img_thresh_back[i,j] = img[i,j] # Convert array to png image cv2.imwrite( 'Cameraman_Thresh_Back.png' , img_thresh_back) |
Output :
Image Negative
Output :
Image with Thresholding :
Output :
Image with Grey Level Slicing with Background