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

image=cv2.imread('photo.jpeg')
image_rgb=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)

gaussian=cv2.GaussianBlur(image,(7,7),0)
median=cv2.medianBlur(image,7)

kernel=np.array([[0,-1,0],[-1,5,-1],[0,-1,0]])
sharpened=cv2.filter2D(image,-1,kernel)

bilateral=cv2.bilateralFilter(image,d=9,sigmaColor=75,sigmaSpace=75)

gaussian_rgb=cv2.cvtColor(gaussian,cv2.COLOR_BGR2RGB)
median_rgb=cv2.cvtColor(median,cv2.COLOR_BGR2RGB)
sharpened_rgb=cv2.cvtColor(sharpened,cv2.COLOR_BGR2RGB)
bilateral_rgb=cv2.cvtColor(bilateral,cv2.COLOR_BGR2RGB)

plt.figure(figsize=(12,8))
plt.subplot(2,3,1);plt.imshow(image_rgb);plt.title("Original Image");plt.axis("off")
plt.subplot(2,3,2);plt.imshow(gaussian_rgb);plt.title("Gaussian Blur");plt.axis("off")
plt.subplot(2,3,3);plt.imshow(median_rgb);plt.title("Median Filter");plt.axis("off")
plt.subplot(2,3,4);plt.imshow(sharpened_rgb);plt.title("Sharpening");plt.axis("off")
plt.subplot(2,3,5);plt.imshow(bilateral_rgb);plt.title("Bilateral Filter");plt.axis("off")
plt.tight_layout()
plt.show()