API Python de código aberto para imagens
Análise de Imagens Científicas, Filtragem e Restauração de imagens via API Python.
Sikit-Image é uma API Python de código aberto para processamento de imagens. A API fornece uma ampla variedade de rotinas de processamento de imagem em Python. Usando a API, você pode extrair dados de imagens específicas, científicas e de uso geral, usar operações NumPy para manipulação de imagens, gerar elementos estruturantes, bloquear visualizações em imagens, manipular canais de exposição e cores, gerenciar bordas e linhas e realizar transformações geométricas.
Além disso, a API permite a filtragem e restauração de imagens. Você pode remover objetos de pequena escala em imagens em tons de cinza, usar filtros médios, mascarar usharp e muito mais. Além disso, a API permite muito mais recursos para manipular imagens.
Introdução ao Sikit-Image
A maneira recomendada de instalar o Sikit-Image é via Pip. Por favor, use o seguinte comando para instalar o Sikit-Image.
Instale o Sikit-Image via Pip
pip install scikit-image
Manipular canais de exposição e cores via Python
Sikit-Image API permite a manipulação de cores e exposição de imagens de forma programática. Você pode converter uma imagem RGB para uma imagem em escala de cinza ou imagem HSV. Você pode trabalhar na correspondência de histograma, separação de cores de coloração imuno-histoquímica, tingimento de imagens em escala de cinza, equalização de histograma, ajuste de contraste de gama e log, filtragem de máximos regionais e adaptação de filtros de escala de cinza para imagens RGB
Transformações geométricas usando a API gratuita do Python
A API Sikit-Image permite manipular a cor e a exposição das imagens de forma programática. Você pode converter uma imagem RGB em uma imagem em escala de cinza ou imagem HSV. Você pode trabalhar na correspondência de histogramas, separação de cores de coloração imuno-histoquímica, tingimento de imagens em escala de cinza, equalização de histograma, ajuste de contraste de gama e log, filtragem de máximos regionais e adaptação de filtros de escala de cinza para imagens RGB
Execute Transformações Geométricas via Python
# First we create a transformation using explicit parameters:
tform = transform.SimilarityTransform(scale=1, rotation=math.pi/2,
translation=(0, 1))
print(tform.params)
# Alternatively you can define a transformation by the transformation matrix itself:
matrix = tform.params.copy()
matrix[1, 2] = 2
tform2 = transform.SimilarityTransform(matrix)
# apply forward & inverse coordinate transformations b/t the source & destination coordinate systems:
coord = [1, 0]
print(tform2(coord))
print(tform2.inverse(tform(coord)))
# Geometric transformations to warp images:
text = data.text()
tform = transform.SimilarityTransform(scale=1, rotation=math.pi/4,
translation=(text.shape[0]/2, -100))
rotated = transform.warp(text, tform)
back_rotated = transform.warp(rotated, tform.inverse)
fig, ax = plt.subplots(nrows=3)
ax[0].imshow(text, cmap=plt.cm.gray)
ax[1].imshow(rotated, cmap=plt.cm.gray)
ax[2].imshow(back_rotated, cmap=plt.cm.gray)
for a in ax:
a.axis('off')
plt.tight_layout()
Filtragem e restauração de imagens via Python
A biblioteca Scikit-Image permite que os desenvolvedores filtrem e restaurem imagens programaticamente. Você pode remover pequenos objetos de imagens em tons de cinza com um filtro de cartola, usar funções do Windows com imagens, usar filtros de média, usar mascaramento de nitidez, usar deconvolução de imagem e muito mais.
Realizar Filtro de Imagem via Python
# Let us load an image available through scikit-image’s data registry.
image = data.astronaut()
image = color.rgb2gray(image)
# Let us blur this image with a series of uniform filters of increasing size.
blurred_images = [ndi.uniform_filter(image, size=k) for k in range(2, 32, 2)]
img_stack = np.stack(blurred_images)
fig = px.imshow(
img_stack,
animation_frame=0,
binary_string=True,
labels={'animation_frame': 'blur strength ~'}
)
plotly.io.show(fig)
# Plot blur metric
B = pd.DataFrame(
data=np.zeros((len(blurred_images), 3)),
columns=['h_size = 3', 'h_size = 11', 'h_size = 30']
)
for ind, im in enumerate(blurred_images):
B.loc[ind, 'h_size = 3'] = measure.blur_effect(im, h_size=3)
B.loc[ind, 'h_size = 11'] = measure.blur_effect(im, h_size=11)
B.loc[ind, 'h_size = 30'] = measure.blur_effect(im, h_size=30)
B.plot().set(xlabel='blur strength (half the size of uniform filter)',
ylabel='blur metric');
plt.show()