1. produkty
  2.   obraz
  3.   Python
  4.   Sikit Image
 
  

Open Source Python API pro obrázky

Vědecká analýza obrázků, filtrování a obnova obrázků prostřednictvím Python API.

Sikit-Image je open source Python API pro zpracování obrázků. API poskytuje širokou škálu rutin pro zpracování obrazu v Pythonu. Pomocí API můžete extrahovat data ze specifických, vědeckých a obecných obrázků, používat operace NumPy pro manipulaci s obrázky, generovat strukturovací prvky, blokovat pohledy na obrázky, manipulovat s expozicí a barevnými kanály, spravovat hrany a čáry a provádět geometrické transformace.

Kromě toho API umožňuje filtrování a obnovu obrázků. Můžete odstranit objekty malého měřítka v obrázcích ve stupních šedi, používat průměrné filtry, maskování usharp a další. A nejen to, API umožňuje mnohem více funkcí pro manipulaci s obrázky.

Previous Next

Začínáme se Sikit-Image

Doporučený způsob instalace Sikit-Image je přes Pip. K instalaci Sikit-Image použijte následující příkaz.

Nainstalujte Sikit-Image přes Pip

pip install scikit-image

Manipulujte s kanály expozice a barev pomocí Pythonu

Sikit-Image API umožňuje programově manipulovat s barvou a expozicí obrázků. Obrázek RGB můžete převést na obrázek ve stupních šedi nebo obrázek HSV. Můžete pracovat na porovnávání histogramů, separaci barev imunohistochemického barvení, tónování snímků ve stupních šedi, ekvalizaci histogramu, nastavení kontrastu gama a log, filtrování regionálních maxim a přizpůsobení filtrů ve stupních šedi snímkům RGB.

Geometrické transformace pomocí bezplatného Python API

Sikit-Image API umožňuje programově manipulovat s barvou a expozicí obrázků. Obrázek RGB můžete převést na obrázek ve stupních šedi nebo obrázek HSV. Můžete pracovat na porovnávání histogramů, separaci barev imunohistochemického barvení, tónování snímků ve stupních šedi, ekvalizaci histogramu, nastavení kontrastu gama a log, filtrování regionálních maxim a přizpůsobení filtrů ve stupních šedi snímkům RGB.

Provádějte geometrické transformace pomocí Pythonu

# 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()

Filtrování a obnova obrázků pomocí Pythonu

Knihovna Scikit-Image umožňuje vývojářům programově filtrovat a obnovovat obrázky. Z obrázků ve stupních šedi můžete odstranit malé objekty pomocí filtru cylindru, používat funkce oken s obrázky, používat střední filtry, používat neostré maskování, používat dekonvoluci obrázků a další.

Proveďte filtrování obrázků pomocí Pythonu

# 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()
 Čeština