为什么裁剪后的图像颜色会变深?

Why cropped images color go deeper?

我正在尝试针对一些病理图像测试我的模型。我需要将它们裁剪成小块。
这是我的裁剪代码。

def crop_to_four_with_cropSize(image, crop_sz=None):
    if crop_sz == None:
        crop_sz = image.shape[0] // 2
    img_sz = image.shape[0]
    y = 0
    x = 0
    h = crop_sz
    w = crop_sz
    image_crop_1 = image[y:y + h, x:x + w, :]
    image_crop_2 = image[-h:, x:x + w, :]
    image_crop_3 = image[y:y + h, -w:, :]
    image_crop_4 = image[-h:, -w:, :]
    return (image_crop_1, image_crop_2, image_crop_3, image_crop_4)

下面是我保存的方法

def save_to_file(image, name, path='./'):
    if not os.path.exists(path):
        os.makedirs(path)
    full_name = os.path.join(path, name)
    scipy.misc.toimage(image).save(full_name)

left is orignal image,right is cropped image.

我的模型是颜色敏感的,但我不知道为什么一个数字矩阵有不同程度的亮度。

非常感谢您的指点。

这里的罪魁祸首是 scipy.misc.toimage 函数。根据 documentation of toimage, this function uses bytescale 中的警告,用于缩放数组值以使用字节的完整范围,即从 0 到 255。这就是裁剪图像中的颜色具有更好对比度的原因。

如果 image 变量是类数组对象(numpy 数组等),则可以使用 scipy.misc.toimage 后接 save 而不是其他一些将图像保存到磁盘的方法,例如 OpenCV 的 scipy.misc.imsave of SciPy or imwrite 函数。