Nas imagens, algumas técnicas freqüentemente usadas para extração de recursos são binarização e desfoque
Binarização: converte a matriz de imagens em 1s e 0s. Isso é feito durante a conversão da imagem em uma imagem 2D. Também pode ser usada a escala de cinza. Fornece uma matriz numérica da imagem. A escala de cinza ocupa muito menos espaço quando armazenada no disco.
É assim que você faz em Python:
from PIL import Image
%matplotlib inline
#Import an image
image = Image.open("xyz.jpg")
image
Imagem de exemplo:
Agora, converta em escala de cinza:
im = image.convert('L')
im
retornará esta imagem:
E a matriz pode ser vista executando este:
array(im)
A matriz ficaria assim:
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)
Agora, use um gráfico de histograma e / ou um gráfico de contorno para dar uma olhada nos recursos da imagem:
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()
Isso retornaria uma plotagem, mais ou menos assim:
Desfocagem: o algoritmo de desfocagem leva a média ponderada de pixels vizinhos para incorporar a cor do ambiente em cada pixel. Aprimora melhor os contornos e ajuda a entender melhor os recursos e sua importância.
E é assim que você faz em Python:
from PIL import *
figure()
p = image.convert("L").filter(ImageFilter.GaussianBlur(radius = 2))
p.show()
E a imagem borrada é:
Portanto, estas são algumas maneiras pelas quais você pode fazer a engenharia de recursos. E para métodos avançados, você precisa entender os conceitos básicos de Visão Computacional e redes neurais, e também os diferentes tipos de filtros, seu significado e a matemática por trás deles.