Skip to content
Snippets Groups Projects
Commit 3dc9397b authored by LexvanGastel's avatar LexvanGastel
Browse files

vraag 25

parent 9150874c
Branches
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@ class ImageProcessor:
def __init__(self, image_path):
self.image = cv2.imread(image_path)
self.image_rgb = cv2.cvtColor(self.image, cv2.COLOR_BGR2RGB)
self.image_hsv = cv2.cvtColor(self.image, cv2.COLOR_BGR2HSV)
def apply_median_filter(self, kernel_size = 5):
filtered_image = cv2.medianBlur(self.image_rgb,kernel_size)
......@@ -18,20 +19,34 @@ class ImageProcessor:
return red_channel, green_channel, blue_channel
def convert_to_hsv(self):
hsv_image =cv2.cv2.cvtColor(self.image, cv2.COLOR_BGR2HSV)
return cv2.cvtColor(self.image, cv2.COLOR_BGR2HSV)
def calculate_snr(self, channel):
mean = np.mean(channel)
stddev = np.std(channel)
snr = mean / stddev
return snr
def get_color_masks(self):
lower_red1 = np.array([0, 100, 100])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([170, 100, 100])
upper_red2 = np.array([180, 255, 255])
lower_yellow = np.array([22, 100, 100])
upper_yellow = np.array([32, 255, 255])
lower_green = np.array([45, 100, 100])
upper_green = np.array([72, 255, 255])
red_mask = cv2.inRange(self.image_hsv, lower_red1, upper_red1) | cv2.inRange(self.image_hsv, lower_red2, upper_red2)
yellow_mask =cv2.inRange(self.image_hsv, lower_yellow, upper_yellow)
green_mask = cv2.inRange(self.image_hsv, lower_green, upper_green)
return red_mask, yellow_mask, green_mask
class Plotter:
@staticmethod
def __init__(self):
pass
@staticmethod
def plot_image_channels(image, red, green, blue):
......@@ -53,7 +68,7 @@ class Plotter:
axes[1,1].set_title("blue channel")
axes[1,1].axis("off")
#plt.show()
plt.show()
@staticmethod
def plot_histograms(red, green ,blue):
fig, axes = plt.subplots(1,3, figsize =(15,5))
......@@ -73,7 +88,7 @@ class Plotter:
axes[2].set_xlabel('Pixel Intensity')
axes[2].set_ylabel('Frequency')
#plt.show()
plt.show()
@staticmethod
def plot_filtered_image(original, filtered):
......@@ -89,10 +104,30 @@ class Plotter:
plt.show()
@staticmethod
def plot_color_masks(image, red_mask, yellow_mask, green_mask):
fig, axes = plt.subplots(1, 3, figsize = (18,6))
axes[0].imshow(red_mask, cmap='gray')
axes[0].set_title("Red Mask")
axes[0].axis("off")
axes[1].imshow(yellow_mask, cmap='gray')
axes[1].set_title("Yellow Mask")
axes[1].axis("off")
axes[2].imshow(green_mask, cmap='gray')
axes[2].set_title("Green Mask")
axes[2].axis("off")
plt.show()
image_path = "traffic_light_image_1.png"
processor = ImageProcessor(image_path)
red, green, blue = processor.get_color_channels()
red_mask, yellow_mask, green_mask = processor.get_color_masks()
snr_red = processor.calculate_snr(red)
snr_green = processor.calculate_snr(green)
snr_blue = processor.calculate_snr(blue)
......@@ -104,6 +139,8 @@ snr_blue = processor.calculate_snr(blue)
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)
Plotter.plot_filtered_image(processor.image_rgb, filtered_image)
\ No newline at end of file
#Plotter.plot_image_channels(processor.image_rgb,red,green,blue)
#Plotter.plot_histograms(red, green, blue)
#Plotter.plot_filtered_image(processor.image_rgb, filtered_image)
Plotter.plot_color_masks(processor.image_rgb, red_mask, yellow_mask, green_mask)
print(processor.image.shape)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment