图像处理之彩色空间互转

1、颜色空间的基础知识

RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色,将色调,亮度,饱和度三个量放在一起表示。
灰度图,Gray Scale Image 或是Grey Scale Image,又称灰阶图。把白色与黑色之间按对数关系分为若干等级,称为灰度。灰度分为256阶。用灰度表示的图像称作灰度图。
很多算法只对灰度图有效,所以彩色图转灰度是十分重要和关键的

2、彩色空间互转的理论

RGB颜色空间基于颜色的加法混色原理,将R、G、B三个通道作为笛卡尔坐标系中的X、Y、Z轴,就得到了一种对于颜色的空间描述
对于彩色转灰度,有一个很著名的心理学公式:
Gray = R0.299 + G0.587 + B*0.114
直接计算因为是浮点型计算,所以复杂度较高,速度较低。所以我们考虑优化,可以将小数转为整数,除法变为移位,乘法也变为移位(整数计算比浮点型快,移位运算和加减法比乘除法快),但是这种方法也会带来一定的精度损失,我们可以根据实际情况选择需要保留的精度位数。下面给出不同精度(2-20位)的计算公式:

 Grey = (R*1 + G*2 + B*1) >> 2

Grey= (R*2 + G*5 + B*1) >> 3
 
Grey= (R*4 + G*10 + B*2) >> 4
 
Grey = (R*9 + G*19 + B*4) >> 5
 
Grey = (R*19 + G*37 + B*8) >> 6
 
Grey= (R*38 + G*75 + B*15) >> 7
 
Grey= (R*76 + G*150 + B*30) >> 8
 
Grey = (R*153 + G*300 + B*59) >> 9
 
Grey = (R*306 + G*601 + B*117) >> 10
 
Grey = (R*612 + G*1202 + B*234) >> 11
 
Grey = (R*1224 + G*2405 + B*467) >> 12
 
Grey= (R*2449 + G*4809 + B*934) >> 13
 
Grey= (R*4898 + G*9618 + B*1868) >> 14
 
Grey = (R*9797 + G*19235 + B*3736) >> 15
 
Grey = (R*19595 + G*38469 + B*7472) >> 16
 
Grey = (R*39190 + G*76939 + B*14943) >> 17
 
Grey = (R*78381 + G*153878 + B*29885) >> 18
 
Grey =(R*156762 + G*307757 + B*59769) >> 19
 
Grey= (R*313524 + G*615514 + B*119538) >> 20

3、颜色空间互转的代码

def cvt_color(img):
    # 彩色图转化成灰度图
    Grayimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  
    print("shape1 : ",Grayimg.shape)
    cv2.imshow('Grayimg', Grayimg)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


if __name__ == "__main__":
    img = cv2.imread('./xiabang.jpg', cv2.IMREAD_UNCHANGED)
    print('Original Dimensions : ',img.shape)
    cvt_color(img)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值