# -*- coding: utf-8 -*-
"""Morphological_Operations.ipynb

Automatically generated by Colab.

Original file is located at
    https://colab.research.google.com/drive/1dAvJbCRszD1DJw32H1JsgbESg6-V_nl4
"""

import cv2, numpy as np, matplotlib.pyplot as plt
img = cv2.imread(r"abc.jpg", 0) # Load grayscale image
bin = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)[1]  # Binarize

k = np.ones((11,11), np.uint8)  # Define 5x5 kernel
inv = cv2.bitwise_not(bin)
out = cv2.erode(inv, k, 1)
plt.imshow(out, cmap='gray')
plt.axis('off')
plt.show()

import cv2, numpy as np, matplotlib.pyplot as plt

img = cv2.imread(r"abc.jpg", 0)  # Load grayscale image
bin = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)[1]  # Binarize

k = np.ones((3, 3), np.uint8) # Define 3x3 kernel
inv = cv2.bitwise_not(bin)
out = cv2.dilate(inv, k, 1)
plt.imshow(out, cmap='gray'), plt.axis('off'), plt.show()

import cv2, numpy as np, matplotlib.pyplot as plt

img = cv2.imread(r"noise_car.png", 0)  # Load grayscale
bin = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)[1]  # Binarize

k = np.ones((3, 3), np.uint8)  # 3x3 kernel
opened = cv2.morphologyEx(bin, cv2.MORPH_OPEN, k)
plt.imshow(opened, cmap='gray'), plt.axis('off'), plt.show()

import cv2, numpy as np, matplotlib.pyplot as plt

img = cv2.imread(r"noise_car.png", 0)
bin = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)[1]

k = np.ones((3, 3), np.uint8)
closed = cv2.morphologyEx(bin, cv2.MORPH_CLOSE, k)  # Apply closing
plt.imshow(closed, cmap='gray'), plt.axis('off'), plt.show()

import cv2, numpy as np, matplotlib.pyplot as plt
img = cv2.imread(r"abc.jpg", 0)  # Load grayscale image
bin = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)[1]  # Binarize

k = np.ones((3, 3), np.uint8)  # Define 3x3 kernel
inv = cv2.bitwise_not(bin)
out = cv2.morphologyEx(inv, cv2.MORPH_GRADIENT, k)
plt.imshow(out, cmap='gray'), plt.axis('off'), plt.show()

import cv2, numpy as np, matplotlib.pyplot as plt
img = cv2.imread("noise_car.png", 0)

bin = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
k = np.ones((13, 13), np.uint8)
top = cv2.morphologyEx(bin, cv2.MORPH_TOPHAT, k)
plt.imshow(top, cmap='gray'), plt.axis('off'), plt.show()

import cv2, numpy as np, matplotlib.pyplot as plt
img = cv2.imread("noise_car.png", 0)

bin = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
inv = cv2.bitwise_not(bin)
k = np.ones((5, 5), np.uint8)
bh = cv2.morphologyEx(inv, cv2.MORPH_BLACKHAT, k)
plt.imshow(bh, cmap='gray'), plt.axis('off'), plt.show()