This website works better with desktop in both themes, for mobile devices please change to light theme.

Image Processing#

[1]:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from matplotlib import style

style.use("ggplot")

%matplotlib inline

BGR to Grayscale#

from scratch#

[2]:
img = mpimg.imread("./images/rdj.jpg")
[3]:
img.shape
[3]:
(550, 550, 3)
[4]:
plt.imshow(img)
[4]:
<matplotlib.image.AxesImage at 0x7f86a455b340>
../_images/ComputerVision_ImageProcessing_6_1.png

Average method#

[6]:
gray_img = np.mean(img,axis=2)
plt.imshow(gray_img,cmap='gray')
[6]:
<matplotlib.image.AxesImage at 0x7f86a0a1a220>
../_images/ComputerVision_ImageProcessing_8_1.png

Weighted method or luminosity method#

  • 0.2989 R + 0.5870 G + 0.1140 B

[5]:
B, G, R = img[...,0], img[...,1], img[...,2]

imgGray = 0.2989 * R + 0.5870 * G + 0.1140 * B
gray_img = ( 0.21 * R ) + (0.72 * G ) + ( 0.07 * B)
plt.imshow(gray_img,cmap='gray')
[5]:
<matplotlib.image.AxesImage at 0x7f86a0a2b910>
../_images/ComputerVision_ImageProcessing_10_1.png

using pillow#

[7]:
from PIL import Image

img = Image.open("./images/rdj.jpg")
gray_img = img.convert('LA')
[8]:
plt.imshow(gray_img)
[8]:
<matplotlib.image.AxesImage at 0x7f86a09750a0>
../_images/ComputerVision_ImageProcessing_13_1.png

using cv2#

[9]:
import cv2 as cv
[10]:
img = cv.imread("./images/rdj.jpg")
[11]:
plt.imshow(cv.cvtColor(img,cv.COLOR_BGR2GRAY),cmap='gray')
[11]:
<matplotlib.image.AxesImage at 0x7f8692ef3d60>
../_images/ComputerVision_ImageProcessing_17_1.png