Python 有重叠的切分图像 代码(overlap split image)

在深度神经网络训练过程中,常常需要将图像有重叠的切割后送入网络。我现在把这段简单的代码放出来供大家参考。

import numpy as np
import cv2

def cutimg(img,num,overlap_factor):   
    '''img 是图像矩阵,num是切过后子图数目,因为统一为正方形切图,因此这里的num开方后需要为整数,
        overlap_factor 是切分后重叠部分的步长'''
    factor = int(np.sqrt(num))
    rawshape = max(img.shape)
    cutrawshape = rawshape // (factor)
    resizeshape = int(cutrawshape // 32) * 32    # 因为模型要求最小送入矩阵为32
    img = cv2.resize(img, (factor*resizeshape, factor*resizeshape))
    img_stacks = []    # 返回结果装载矩阵
    overlap_factor = overlap_factor
    cutshape = int((factor*resizeshape+overlap_factor)/factor)   # 需要保证除以factor整除
    for i in range(factor):
        for ii in range(factor):
            img_temp = img[(ii*cutshape-ii*overlap_factor):((ii+1)*(cutshape)-ii*overlap_factor),(i*cutshape-i*overlap_factor):((i+1)*cutshape-i*overlap_factor)]
            img_stacks.append(img_temp)

    return img_stacks

 

实际按照倾向左上的方式进行重叠,示意图如下:

Python 有重叠的切分图像 代码(overlap split image)_第1张图片

你可能感兴趣的:(图像处理,Python图像切割,有重叠部分图像的切割,cut,image,图像切分)