裁剪图像#

在处理显微镜图像时,处理整个图像通常意义有限。我们通常会裁剪出感兴趣的区域并对其进行详细处理。

from skimage.io import imread, imshow
image = imread("../../data/blobs.tif")

在裁剪图像之前,我们可能想知道它的精确形状(尺寸):

image.shape
(254, 256)

回顾:使用imshow进行可视化:

imshow(image)
<matplotlib.image.AxesImage at 0x2448a01e9d0>
../_images/9a8c839dc0acff2ba809f86a23468055d8bdd1640593ff51f6da4c23eaeaaa5e.png

裁剪图像的工作方式与裁剪列表和元组完全相同,通过使用索引来指定要使用的元素范围:

cropped_image1 = image[0:128]

imshow(cropped_image1);
../_images/166eed5c1c0ee8fe248cd58b80a3ba6890fe8f13143de5e8c646a1a7a0ab4b6e.png
mylist = [1,2,2,3,4,5,78]

要在第二个维度上也裁剪图像,我们在方括号中添加一个,

cropped_image2 = image[0:128, 128:]

imshow(cropped_image2);
../_images/6984d54e12d0cfc03d33deacd59308e9501822d4506d7273fd2bebfca85d82e3.png

子采样图像#

也可以像处理列表和元组一样指定步长。从技术上讲,我们在这种情况下是对图像进行子采样。我们以5为步长采样原始像素的子集:

sampled_image = image[::5, ::5]

imshow(sampled_image);
../_images/9acacd83d855db9ff4df52fe458641d10f4ceb657e208677466e538cfd68ad56.png

翻转图像#

负步长会翻转图像。

flipped_image = image[::, ::-1]

imshow(flipped_image);
../_images/9975815040af600d91ec3649a4a64b2ef821164b2b1d7babdd7702cfab6e38c0.png

练习#

打开banana020.tif数据集并裁剪出香蕉片所在的区域。