紫外光下纸币图像转RGB的图像处理优化方案问询
紫外光纸币图像转RGB实现面额识别问题
问题背景
我有一组紫外光下拍摄的纸币图像数据集,需要通过图像处理将其转换为RGB格式,以此实现纸币面额(20、50、100等)的识别。由于项目将部署在硬件设备上,为保证运行效率与速度,不打算通过开关紫外灯的方式获取RGB图像。
已实现的图像处理函数
我已经编写了用于调整对比度、色温(warmth)和色调(tint)的代码:
def change_contrast(img, level): factor = (259 * (level + 255)) / (255 * (259 - level)) def contrast(c): return 128 + factor * (c - 128) return img.point(contrast) def adjust_warmth(image, warmth_factor): b, g, r = cv2.split(image) r = cv2.add(r, int(warmth_factor)) # 增加红色通道 b = cv2.subtract(b, int(warmth_factor)) # 减少蓝色通道 warmed_image = cv2.merge([b, g, r]) return np.clip(warmed_image, 0, 255).astype(np.uint8) def adjust_tint(image, tint_factor): tinted_image = np.zeros_like(image) # 增减各通道值 tinted_image[:, :, 0] = cv2.add(image[:, :, 0], int(tint_factor)) # 蓝色通道 tinted_image[:, :, 1] = cv2.add(image[:, :, 1], int(tint_factor)) # 绿色通道 tinted_image[:, :, 2] = cv2.add(image[:, :, 2], int(tint_factor)) # 红色通道 return np.clip(tinted_image, 0, 255).astype(np.uint8)
当前处理效果与代码
我已进行示例处理,但目前的效果无法还原纸币的原始颜色:
- 原始紫外图像:

- 当前处理后图像:

使用的处理代码如下:
new_image = change_contrast(Image.open('20-f.jpg'), 50) new_image = new_image.rotate(90) new_image_np = np.array(new_image) img3_warmth = adjust_warmth(new_image_np, -25) img3_tint = adjust_tint(img3_warmth, -35) fig = plt.figure(figsize=(12,12)) ax = fig.add_subplot(111) ax.imshow(img3_tint) plt.show()
期望目标
希望达到的图像效果如下:
内容的提问来源于stack exchange,提问作者ANAXA GORAS
相关产品推荐
相关产品推荐

