使用 Skimage 分割图像
Split Image using Skimage
我希望能够使用 skimage 对图像进行第四次处理。
我能找到的只是裁剪图像,但我想对它进行第四次处理,而不仅仅是裁剪部分。我需要对它进行第四次处理才能与其他图像进行对称性比较。
我该怎么做?
如果找不到函数或拆分方法,我的一个想法是手动查找垂直线和水平线,然后使用这些值作为切片索引进行裁剪。
height, width = size(image)
vertical = height / 2
horizontal = width / 2
实现此目标的最佳方法是什么?
在 scikit-image 中,images are just NumPy arrays 所以你应该为此使用 NumPy 切片:
from skimage import data
import matplotlib.pyplot as plt
image = data.camera()
nrows, ncols = image.shape
rsplit, csplit = nrows // 2, ncols // 2
quadrants = [
image[:rsplit, :csplit],
image[:rsplit, csplit:],
image[rsplit:, :csplit],
image[rsplit:, csplit:],
]
fig, axes = plt.subplots(2, 2)
for quadrant, ax in zip(quadrants, axes.flat):
ax.imshow(quadrant, cmap='gray')
ax.set_axis_off()
当且仅当您确定图像的行数和列数是偶数时,您可以得到象限 skimage.util.view_as_blocks
:
from skimage.util import view_as_blocks
quadrants = view_as_blocks(image, (rsplit, csplit)).reshape(
(4, rsplit, csplit)
)
我希望能够使用 skimage 对图像进行第四次处理。
我能找到的只是裁剪图像,但我想对它进行第四次处理,而不仅仅是裁剪部分。我需要对它进行第四次处理才能与其他图像进行对称性比较。
我该怎么做?
如果找不到函数或拆分方法,我的一个想法是手动查找垂直线和水平线,然后使用这些值作为切片索引进行裁剪。
height, width = size(image)
vertical = height / 2
horizontal = width / 2
实现此目标的最佳方法是什么?
在 scikit-image 中,images are just NumPy arrays 所以你应该为此使用 NumPy 切片:
from skimage import data
import matplotlib.pyplot as plt
image = data.camera()
nrows, ncols = image.shape
rsplit, csplit = nrows // 2, ncols // 2
quadrants = [
image[:rsplit, :csplit],
image[:rsplit, csplit:],
image[rsplit:, :csplit],
image[rsplit:, csplit:],
]
fig, axes = plt.subplots(2, 2)
for quadrant, ax in zip(quadrants, axes.flat):
ax.imshow(quadrant, cmap='gray')
ax.set_axis_off()
当且仅当您确定图像的行数和列数是偶数时,您可以得到象限 skimage.util.view_as_blocks
:
from skimage.util import view_as_blocks
quadrants = view_as_blocks(image, (rsplit, csplit)).reshape(
(4, rsplit, csplit)
)