API منبع باز Python برای تصاویر
تجزیه و تحلیل علمی تصویر، فیلتر کردن و بازیابی تصاویر از طریق Python API.
Sikit-Image یک API منبع باز پایتون برای پردازش تصویر است. API طیف گسترده ای از روتین های پردازش تصویر را در پایتون فراهم می کند. با استفاده از API میتوانید دادهها را از تصاویر خاص، علمی و عمومی استخراج کنید، از عملیات NumPy برای دستکاری تصویر استفاده کنید، عناصر ساختاری ایجاد کنید، نماها را روی تصاویر مسدود کنید، کانالهای نوردهی و رنگ را دستکاری کنید، لبهها و خطوط را مدیریت کنید و تبدیلهای هندسی انجام دهید.
علاوه بر این، API اجازه فیلتر کردن و بازیابی تصاویر را می دهد. می توانید اشیاء با مقیاس کوچک را در تصاویر خاکستری حذف کنید، از فیلترهای متوسط، پوشاندن یوشارپ و موارد دیگر استفاده کنید. نه تنها این، API به ویژگی های بسیار بیشتری برای دستکاری تصاویر اجازه می دهد.
شروع کار با Sikit-Image
روش توصیه شده برای نصب Sikit-Image از طریق Pip است. لطفا از دستور زیر برای نصب Sikit-Image استفاده کنید.
Sikit-Image را از طریق Pip نصب کنید
pip install scikit-image
کانال های نوردهی و رنگی را از طریق پایتون دستکاری کنید
Sikit-Image API اجازه می دهد تا رنگ و نوردهی تصاویر را به صورت برنامه ریزی شده دستکاری کنید. می توانید تصویر RGB را به یک تصویر در مقیاس خاکستری یا تصویر HSV تبدیل کنید. میتوانید روی تطبیق هیستوگرام، جداسازی رنگهای رنگآمیزی ایمونوهیستوشیمیایی، رنگآمیزی تصاویر در مقیاس خاکستری، تساوی هیستوگرام، تنظیم کنتراست گاما و لاگ، فیلتر کردن حداکثرهای منطقهای و تطبیق فیلترهای مقیاس خاکستری با تصاویر RGB کار کنید.
تبدیلهای هندسی با استفاده از API رایگان پایتون
Sikit-Image API اجازه می دهد تا رنگ و نوردهی تصاویر را به صورت برنامه ریزی شده دستکاری کنید. می توانید یک تصویر RGB را به یک تصویر در مقیاس خاکستری یا تصویر HSV تبدیل کنید. میتوانید روی تطبیق هیستوگرام، جداسازی رنگهای رنگآمیزی ایمونوهیستوشیمیایی، رنگآمیزی تصاویر در مقیاس خاکستری، تساوی هیستوگرام، تنظیم کنتراست گاما و لاگ، فیلتر کردن حداکثرهای منطقهای و تطبیق فیلترهای مقیاس خاکستری با تصاویر RGB کار کنید.
تبدیل هندسی را از طریق پایتون انجام دهید
# 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()
فیلتر کردن و بازیابی تصویر از طریق پایتون
کتابخانه Scikit-Image به توسعه دهندگان اجازه می دهد تا تصاویر را به صورت برنامه ریزی شده فیلتر و بازیابی کنند. میتوانید اشیای کوچک را از تصاویر خاکستری با فیلتر کلاه بالایی حذف کنید، از توابع ویندوز با تصاویر استفاده کنید، از فیلترهای متوسط استفاده کنید، از ماسک کردن واضح، استفاده از دکانولوشن تصویر و موارد دیگر استفاده کنید.
فیلتر کردن تصویر را از طریق پایتون انجام دهید
# 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()