我使用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)
有人知道我的错误是什么吗?
答案 0 :(得分:2)
根据scikit-image documentation,您无需将图像重新缩放为0..1并将其从RGB转换为HSV:
注释
对于彩色图像,执行以下步骤:
- 图像转换为HSV色彩空间
- CLAHE算法在V(值)通道上运行
- 图像被转换回RGB空间并返回
对于RGBA图像,将删除原始Alpha通道。
因此,当您使用关键字参数kernel_size
,clip_limit
和nbins
的默认值时,您只需编写:
X_train_eq = skimage.exposure.equalize_adapthist(X_train)