【问题标题】:How do you divide an image/array into blocks?如何将图像/数组划分为块?
【发布时间】:2017-11-20 18:15:54
【问题描述】:

我想知道是否可以将图像分成块,例如 8x8 块 (64 pixels per block) 并为每个块执行直方图功能并将结果保存到新图像中而不是单独图像?

def apply_histogram(block):
    h, b = np.histogram(block.flatten(), 256, normed=True)
    cdf = h.cumsum()
    cdf = 255 * cdf / cdf[-1]
    return np.interp(block.flatten(), b[:-1], cdf).reshape(block.shape)

【问题讨论】:

标签: python numpy


【解决方案1】:

为什么不遍历图像中的所有8x8 块?

image = ...
block_img = np.zeros(image.shape)
im_h, im_w = image.shape[:2]
bl_h, bl_w = 8, 8

for row in np.arange(im_h - bl_h + 1, step=bl_h):
    for col in np.arange(im_w - bl_w + 1, step=bl_w):
        block_img[row:row+bl_h, col:col+bl_w] = apply_histogram(image[row:row+bl_h, col:col+bl_w])

image:

block_img:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多