diff --git a/Q2main.py b/Q2main.py
index 4d9250d95289058bdaeebc0a00ba70c768a3556e..4fcbdedd85828810da83c88c7e9dab2e61a0e4e1 100644
--- a/Q2main.py
+++ b/Q2main.py
@@ -7,8 +7,9 @@ class ImageProcessor:
         self.image = cv2.imread(image_path)
         self.image_rgb = cv2.cvtColor(self.image, cv2.COLOR_BGR2RGB)
 
-    def apply_median_filter(self, kernel_size):
-        return filterd_image
+    def apply_median_filter(self, kernel_size = 5):
+        filtered_image = cv2.medianBlur(self.image_rgb,kernel_size)
+        return filtered_image
 
     def get_color_channels(self):
         red_channel = self.image_rgb[:, :, 0]
@@ -73,7 +74,21 @@ class Plotter:
         axes[2].set_ylabel('Frequency')
 
         #plt.show()
-        
+
+    @staticmethod
+    def plot_filtered_image(original, filtered):
+        fig, axes = plt.subplots(1, 2, figsize=(12,6))
+
+        axes[0].imshow(original)
+        axes[0].set_title("Original Image")
+        axes[0].axis("off")
+
+        axes[1].imshow(filtered)
+        axes[1].set_title("Filtered Image (Median Blur)")
+        axes[1].axis("off")
+
+        plt.show()
+
 image_path = "traffic_light_image_1.png"
 processor = ImageProcessor(image_path)
 red, green, blue = processor.get_color_channels()
@@ -82,10 +97,13 @@ snr_red = processor.calculate_snr(red)
 snr_green = processor.calculate_snr(green)
 snr_blue = processor.calculate_snr(blue)
 
-print(f"SNR for Red Channel {snr_red:.2f}")
-print(f"SNR for Green Channel {snr_green:.2f}")
-print(f"SNR for Blue Channel {snr_blue:.2f}")
+#print(f"SNR for Red Channel {snr_red:.2f}")
+#print(f"SNR for Green Channel {snr_green:.2f}")
+#print(f"SNR for Blue Channel {snr_blue:.2f}")
+
+filtered_image = processor.apply_median_filter(kernel_size = 5)
 
 
 Plotter.plot_image_channels(processor.image_rgb,red,green,blue)
-Plotter.plot_histograms(red, green, blue)
\ No newline at end of file
+Plotter.plot_histograms(red, green, blue)
+Plotter.plot_filtered_image(processor.image_rgb, filtered_image)
\ No newline at end of file