Atvirojo kodo Python API vaizdams
Mokslinė vaizdų analizė, filtravimas ir vaizdų atkūrimas naudojant Python API.
Sikit-Image yra atvirojo kodo Python API, skirta vaizdo apdorojimui. API suteikia platų Python vaizdų apdorojimo veiksmų spektrą. Naudodami API galite išgauti duomenis iš konkrečių, mokslinių ir bendrosios paskirties vaizdų, naudoti NumPy operacijas vaizdų manipuliavimui, generuoti struktūrizavimo elementus, blokuoti vaizdų rodinius, manipuliuoti ekspozicijos ir spalvų kanalais, valdyti briaunas ir linijas bei atlikti geometrines transformacijas.
Be to, API leidžia filtruoti ir atkurti vaizdus. Galite pašalinti mažo mastelio objektus iš pilkų atspalvių vaizdų, naudoti vidutinius filtrus, ryškų maskavimą ir kt. Negana to, API suteikia daug daugiau funkcijų, leidžiančių manipuliuoti vaizdais.
Darbo su Sikit-Image pradžia
Rekomenduojamas Sikit-Image diegimo būdas yra per Pip. Norėdami įdiegti „Sikit-Image“, naudokite šią komandą.
Įdiekite „Sikit-Image“ per „Pip“.
pip install scikit-image
Manipuliuokite ekspozicijos ir spalvų kanalus naudodami Python
„Sikit-Image“ API leidžia programiškai manipuliuoti vaizdų spalvomis ir ekspozicija. Galite konvertuoti RGB vaizdą į pilkos spalvos vaizdą arba HSV vaizdą. Galite dirbti su histogramos suderinimu, imunohistocheminiu dažymo spalvų atskyrimu, pilkos spalvos vaizdų atspalviu, histogramos išlyginimu, gama ir žurnalo kontrasto reguliavimu, regioninių maksimumų filtravimu ir pilkos spalvos filtrų pritaikymu RGB vaizdams.
Geometrinės transformacijos naudojant nemokamą Python API
Sikit-Image API leidžia programiškai valdyti vaizdų spalvas ir ekspoziciją. Galite konvertuoti RGB vaizdą į pilkos spalvos vaizdą arba HSV vaizdą. Galite dirbti su histogramos suderinimu, imunohistocheminiu dažymo spalvų atskyrimu, pilkos spalvos vaizdų atspalviu, histogramos išlyginimu, gama ir žurnalo kontrasto reguliavimu, regioninių maksimumų filtravimu ir pilkos spalvos filtrų pritaikymu RGB vaizdams.
Atlikite geometrines transformacijas naudodami 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()
Vaizdo filtravimas ir atkūrimas naudojant Python
„Scikit-Image“ biblioteka leidžia kūrėjams programiškai filtruoti ir atkurti vaizdus. Galite pašalinti mažus objektus iš pilkų atspalvių vaizdų naudodami viršutinį filtrą, naudoti „Windows“ funkcijas su vaizdais, naudoti vidutinius filtrus, naudoti neryškų maskavimą, naudoti vaizdo dekonvoliuciją ir kt.
Atlikite vaizdo filtravimą naudodami 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()