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