Segmentace s využitím barevných světel¶
Import knihoven a konfigurace¶
%run ./library.ipynb
Pomocné funkce¶
Z následujících funkcí je potřeba vybírat ty vhodné pro splnění úkolu.
Seznam funkcí pro přehlednost:
Úkol¶
Vaším úkolem bude spočítat množství červených, zelených nebo modrých korálků v krabičce. Korálky nasnímejte monochromatickou kamerou, při snímání použijte různá světla a experimentujte s nimi, tak aby byl následný segmentační algoritmus co možná nejjednodušší.
Pro volbu vhodné iluminační techniky a vhodného osvětlení můžete konzultovat přehledový dokument Volba vhodného osvětlení v kombinaci s kamerou, nebo přednášku Kamerový systém a zpracování obrazu.
1) Načtení dat¶
img = load_image("./data/red_light.jpg")
img = crop(img, 650, 600, 1700, 1600) # optional, může se hodit
# Případné další předzpracování
img = to_gray(img)
plot_images(img)
2) Výběr prahů pro segmentaci¶
S využitím slideru najděte prahy pro segmentaci vámi zvolených korálků ve vámi zvoleném obrázku.
@interact(value=create_slider(min=0, max=255, description='Value'))
def _(value):
mask = segmentation_two_thresholds(img, value[0], value[1]) ###
plot_images(mask, img, titles=['Segmentation', 'Original'])
interactive(children=(IntRangeSlider(value=(0, 255), continuous_update=False, description='Value\xa0\xa0\xa0\x…
3) Segmentace¶
Vysegmentujte zvolené korálky a spočtěte je.
def count_objects(mask, min_area, max_area):
segmented, count, _ = find_contours(mask, min_area, max_area)
return segmented, count
selected_color = 'red'
mask = segmentation_two_thresholds(img, 176, 255) # Zisk masky segmentací
segmented, count = count_objects(mask, 200, 50000)
print(f'In total {count} {selected_color} objects found.')
plot_images(img, segmented) # Poronvání původního obrázku s výsledkem segmentace
In total 4 red objects found.
4) Bonusová část - opakujte postup pro alespoň jednu další barvu¶
img = load_image("./data/green_light.jpg")
img = crop(img, 800, 600, 1800, 1600) # optional, může se hodit
# Případné další předzpracování
img = to_gray(img)
plot_images(img)
@interact(value=create_slider(min=0, max=255, description='Value'))
def _(value):
mask = segmentation_two_thresholds(img, value[0], value[1]) ###
plot_images(mask, img, titles=['Segmentation', 'Original'])
interactive(children=(IntRangeSlider(value=(0, 255), continuous_update=False, description='Value\xa0\xa0\xa0\x…
selected_color = 'green'
mask = segmentation_two_thresholds(img, 100, 108) # Zisk masky segmentací
segmented, count = count_objects(mask, 300, 50000)
print(f'In total {count} {selected_color} objects found.')
plot_images(img, segmented) # Poronvání původního obrázku s výsledkem segmentace
In total 7 green objects found.