Nelle immagini, alcune tecniche usate di frequente per l'estrazione di feature sono la binarizzazione e la sfocatura
Binarizzazione: converte l'array di immagini in 1s e 0s. Questo viene fatto durante la conversione dell'immagine in un'immagine 2D. È possibile utilizzare anche il ridimensionamento del grigio. Ti dà una matrice numerica dell'immagine. La scala di grigi occupa molto meno spazio quando è memorizzata su disco.
Ecco come lo fai in Python:
from PIL import Image
%matplotlib inline
#Import an image
image = Image.open("xyz.jpg")
image
Immagine di esempio:
Ora converti in scala di grigi:
im = image.convert('L')
im
ti restituirà questa immagine:
E la matrice può essere vista eseguendo questo:
array(im)
L'array sarebbe simile a questo:
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)
Ora, usa un diagramma a istogrammi e / o un diagramma di contorno per dare un'occhiata alle caratteristiche dell'immagine:
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()
Questo ti restituirebbe una trama, che assomiglia a questa:
Sfocatura: l' algoritmo di sfocatura prende la media ponderata dei pixel vicini per incorporare il colore circostante in ogni pixel. Migliora i contorni meglio e aiuta a comprendere meglio le caratteristiche e la loro importanza.
Ed è così che lo fai in Python:
from PIL import *
figure()
p = image.convert("L").filter(ImageFilter.GaussianBlur(radius = 2))
p.show()
E l'immagine sfocata è:
Quindi, questi sono alcuni modi in cui puoi fare ingegneria delle caratteristiche. E per i metodi avanzati, devi comprendere le basi di Computer Vision e le reti neurali, nonché i diversi tipi di filtri, il loro significato e la matematica che li sta dietro.