无法均衡图像

时间:2017-04-23 02:10:26

标签: python numpy image-processing matplotlib scikit-image

我使用Python中的库skimage来增加图像的对比度。 我的图像在名为X_train的列表中以RGB格式显示,其图像形状为:(32x32x3)。

首先我将其转换为[0, 1],然后从RGB转换为HSV,然后我使用库中的方法:

X_train = X_train/256
X_train_hsv = matplotlib.colors.rgb_to_hsv(X_train)
X_train_eq = skimage.exposure.equalize_adapthist(X_train_hsv, kernel_size=None,
                                                 clip_limit=0.01, nbins=256, )

问题是我得到了这个错误:

/home/carnd/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/skimage/exposure/_adapthist.py in interpolate(image, xslice, yslice, mapLU, mapRU, mapLB, mapRB, lut)

        333                  int(xslice[0]):int(xslice[-1] + 1)]
        334     im_slice = lut[view]
    --> 335     new = ((y_inv_coef * (x_inv_coef * mapLU[im_slice]
        336                           + x_coef * mapRU[im_slice])
        337             + y_coef * (x_inv_coef * mapLB[im_slice]

ValueError: operands could not be broadcast together with shapes (2175,2) (2175,2,32,3)

有人知道我的错误是什么吗?

1 个答案:

答案 0 :(得分:2)

根据scikit-image documentation,您无需将图像重新缩放为0..1并将其从RGB转换为HSV:

  

注释

     
      
  • 对于彩色图像,执行以下步骤:

         
        
    • 图像转换为HSV色彩空间
    •   
    • CLAHE算法在V(值)通道上运行
    •   
    • 图像被转换回RGB空间并返回
    •   
  •   
  • 对于RGBA图像,将删除原始Alpha通道。

  •   

因此,当您使用关键字参数kernel_sizeclip_limitnbins的默认值时,您只需编写:

X_train_eq = skimage.exposure.equalize_adapthist(X_train)