Atvērtā pirmkoda Python API attēliem
Attēlu zinātniskā analīze, filtrēšana un attēlu atjaunošana, izmantojot Python API.
Sikit-Image ir atvērtā koda Python API attēlu apstrādei. API nodrošina plašu Python attēlu apstrādes rutīnu klāstu. Izmantojot API, jūs varat iegūt datus no īpašiem, zinātniskiem un vispārējas nozīmes attēliem, izmantot NumPy darbības attēlu manipulācijām, ģenerēt strukturēšanas elementus, bloķēt attēlu skatus, manipulēt ar ekspozīcijas un krāsu kanāliem, pārvaldīt malas un līnijas un veikt ģeometriskas transformācijas.
Turklāt API ļauj filtrēt un atjaunot attēlus. Varat noņemt maza mēroga objektus pelēktoņu attēlos, izmantot vidējos filtrus, asu maskēšanu un daudz ko citu. Ne tikai tas, ka API nodrošina daudz vairāk funkciju, lai manipulētu ar attēliem.
Darba sākšana ar Sikit-Image
Ieteicamais Sikit-Image instalēšanas veids ir Pip. Lūdzu, izmantojiet šo komandu, lai instalētu Sikit-Image.
Instalējiet Sikit-Image, izmantojot Pip
pip install scikit-image
Manipulējiet ar ekspozīcijas un krāsu kanāliem, izmantojot Python
Sikit-Image API ļauj programmatiski manipulēt ar attēlu krāsām un ekspozīciju. Varat pārvērst RGB attēlu pelēktoņu attēlā vai HSV attēlā. Varat strādāt ar histogrammas saskaņošanu, imūnhistoķīmisko krāsošanas krāsu atdalīšanu, pelēktoņu attēlu tonēšanu, histogrammas izlīdzināšanu, gamma un žurnāla kontrasta regulēšanu, reģionālo maksimumu filtrēšanu un pelēktoņu filtru pielāgošanu RGB attēliem.
Ģeometriskās transformācijas, izmantojot bezmaksas Python API
Sikit-Image API ļauj programmatiski manipulēt ar attēlu krāsām un ekspozīciju. RGB attēlu var pārveidot par pelēktoņu attēlu vai HSV attēlu. Varat strādāt ar histogrammas saskaņošanu, imūnhistoķīmisko krāsošanas krāsu atdalīšanu, pelēktoņu attēlu tonēšanu, histogrammas izlīdzināšanu, gamma un žurnāla kontrasta regulēšanu, reģionālo maksimumu filtrēšanu un pelēktoņu filtru pielāgošanu RGB attēliem.
Veiciet ģeometriskās transformācijas, izmantojot 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()
Attēlu filtrēšana un atjaunošana, izmantojot Python
Scikit-Image bibliotēka ļauj izstrādātājiem programmatiski filtrēt un atjaunot attēlus. Varat noņemt mazus objektus no pelēktoņu attēliem, izmantojot cilindrisko filtru, izmantot Windows funkcijas ar attēliem, izmantot vidējos filtrus, izmantot neasu maskēšanu, izmantot attēla dekonvolūciju un daudz ko citu.
Veiciet attēlu filtrēšanu, izmantojot 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()