Na obrazach niektóre często stosowane techniki ekstrakcji obiektów to binaryzacja i rozmycie
Binarizacja: konwertuje tablicę obrazu na 1 i 0. Odbywa się to podczas konwertowania obrazu na obraz 2D. Można również zastosować skalowanie szarości. Daje macierz numeryczną obrazu. Skala szarości zajmuje znacznie mniej miejsca, gdy jest przechowywana na dysku.
Oto jak to zrobić w Pythonie:
from PIL import Image
%matplotlib inline
#Import an image
image = Image.open("xyz.jpg")
image
Przykładowy obraz:
Teraz przekonwertuj na skalę szarości:
im = image.convert('L')
im
zwróci ci ten obraz:
Macierz można zobaczyć, uruchamiając to:
array(im)
Tablica wyglądałaby mniej więcej tak:
array([[213, 213, 213, ..., 176, 176, 176],
[213, 213, 213, ..., 176, 176, 176],
[213, 213, 213, ..., 175, 175, 175],
...,
[173, 173, 173, ..., 204, 204, 204],
[173, 173, 173, ..., 205, 205, 204],
[173, 173, 173, ..., 205, 205, 205]], dtype=uint8)
Teraz użyj wykresu histogramu i / lub wykresu konturowego, aby zobaczyć funkcje obrazu:
from pylab import *
# create a new figure
figure()
gray()
# show contours with origin upper left corner
contour(im, origin='image')
axis('equal')
axis('off')
figure()
hist(im_array.flatten(), 128)
show()
To zwróci ci wykres, który wygląda mniej więcej tak:
Rozmycie: Algorytm rozmycia bierze średnią ważoną sąsiednich pikseli, aby uwzględnić kolor otoczenia w każdym pikselu. Poprawia kontury i pomaga lepiej zrozumieć funkcje i ich znaczenie.
I tak to robisz w Pythonie:
from PIL import *
figure()
p = image.convert("L").filter(ImageFilter.GaussianBlur(radius = 2))
p.show()
A zamazany obraz to:
Oto kilka sposobów inżynierii obiektów. W przypadku zaawansowanych metod musisz zrozumieć podstawy wizji komputerowej i sieci neuronowych, a także różne typy filtrów oraz ich znaczenie i matematykę.