图像标准化

问题描述:

在我看来,图像标准化是使每个像素都被标准化为一个介于0和1之间的值,对吗?图像标准化

但下面的代码是什么意思?

image_size = 28  # Pixel width and height. 
pixel_depth = 255.0 # Number of levels per pixel. 

for image in image_files: 
    image_file = os.path.join(folder, image) 

    try: 
    image_data = (ndimage.imread(image_file).astype(float) - 
       pixel_depth/2)/pixel_depth # WHY ?? 
    if image_data.shape != (image_size, image_size): 
     raise Exception('Unexpected image shape: %s' % str(image_data.shape)) 
    dataset[num_images, :, :] = image_data 
    num_images = num_images + 1 

    except IOError as e: 
    print('Could not read:', image_file, ':', e, '- it\'s ok, skipping.') 
+2

标准化可能意味着很多事情。提示:为什么不是-0.5到0.5? – kazemakase

+0

对!但有什么区别? – WeiJay

+0

它看起来像这个代码它是一些超/多光谱成像的一部分。对于这些技术,这不是进行标准化的方法。代码所做的只是将一些pixcel转换成一个数据立方体,并将它们从8位图像转换为一个64/32位浮点数组,位于-0.5和0.5之间。还有,它会检查分辨率是否相同。 –

Image normalization仅仅是改变像素强度值的范围的过程。

新范围的选择取决于您。

在显示的情况下,它看起来像范围-0.5 .. 0.5已被选中。

+0

的图像我知道了。但是在机器学习中使用不同范围作为数据集的区别是什么? – WeiJay

+0

这是一个完全不同的问题。这是我不熟悉的话题。我能想到的一件事就是自动将数据分为正数和负数。当你是例如试图找到范围的中间值(在这种情况下为0)。 –