让颜色更加饱满和有冲击力:图像颜色校正


    大家拍照或图片时,获取会遇到图像颜色与实际颜色存在色差的现象。我们看一个标准色卡的图片:

相机拍出有色差的色卡图像

色卡图标准图像

第一张图片就是有色差的图片,这种现象一般是相机或光线的原因造成的,我们可以通过标准色卡进行校正。

第一张图片是有色差的图片拍摄的标准色卡图片,第二张是标准色卡的正常图片,其实我们只要拿到两张色卡的颜色转换关系就可以解决这个问题了。

当然,我们的第一张色卡有些畸变,最好做一个校正,我这里为了演示效果没有做这方面的处理。但白平衡时必须的:

''''

### 白平衡演示代码:defimage_balance(imagefile):src=cv2.imread(imagefile)src_copy=src.copy()b,g, r = cv2.split(src)r_avg=cv2.mean(r)[0]g_avg=cv2.mean(g)[0]b_avg=cv2.mean(b)[0] # 求各个通道所占增益k=(r_avg + g_avg + b_avg) / 3kr=k / r_avgkg=k / g_avgkb=k / b_avgr=cv2.addWeighted(src1=r, alpha=kr, src2=0, beta=0, gamma=0)g=cv2.addWeighted(src1=g, alpha=kg, src2=0, beta=0, gamma=0)b=cv2.addWeighted(src1=b, alpha=kb, src2=0, beta=0, gamma=0)balance_img=cv2.merge([b, g, r])imgs=np.hstack([src_copy, balance_img])cv2.namedWindow("imgs",0)cv2.imshow("imgs",imgs)cv2.waitKey(0)defimage_balance_v2(imagefile):src=cv2.imread(imagefile)src_copy=src.copy()final=cv2.cvtColor(src,cv2.COLOR_BGR2LAB)avg_a=np.average(final[:, :, 1])avg_b=np.average(final[:, :, 2])forx in range(final.shape[0]):fory in range(final.shape[1]):l,a,b=final[x,y,:]l*=100/255.0final[x,y, 1] = a - ((avg_a - 128)*(l/100)*1.1)final[x,y, 2] = b - ((avg_b - 128) * (l / 100) * 1.1)final=cv2.cvtColor(final,cv2.COLOR_LAB2BGR)imgs=np.hstack([src_copy, final])cv2.namedWindow("imgs",0)cv2.imshow("imgs",imgs)cv2.waitKey(0)

''''

最后我选择完美反射算法进行白平衡处理。再接下来就是对两张色卡图片进行拟合,获得转换系数,这个很简单就不具体说了,拟合效果如下:

#### 颜色校准方法测试:url_path ="https://img2.baidu.com/it/u=3233561313,355379518&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375"src = url2img(url_path)image_color_correction(src)

下面看一下具体结果:

示例1:

示例2:

示例3:

今天就分享到这里, 我是paperClub。

备注:WeiXin 搜索paperClub, 添加关注并回复【666】即可获取使用方法。 

1. 感谢各位小伙伴的关注, 您的点赞、鼓励和留言,都是我深夜坚持的一份动力,无论褒贬,都是我们行进途中最好的回馈,也都会被认真对待。

2. 我将持续分享各类、好玩且有趣的算法应用及工程和项目,欢迎分享和转发。沟通、学习和交流,请与我联系,虽然平时忙,但留言必回,勿急,感谢理解!

3. 分享内容包括开源项目和自研项目,如在引用或使用时,考虑不周、遗漏引用信息或涉及版权等,请您及时联系。如果您对某些内容感兴趣,我们可以一起讨论、交流和学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值