一、RGB彩色图像转灰度图像
转换公式
G
r
a
y
=
R
∗
0.3
+
G
∗
0.59
+
B
∗
0.11
Gray = R*0.3+G*0.59+B*0.11
Gray=R∗0.3+G∗0.59+B∗0.11
Python代码
#输入彩色图像的四维张量,输出灰度图像的四维张量
def RGB2Gray(img):
r,g,b = torch.split(img,1,dim=1)
gray = torch.zeros_like(r)
gray = 0.3*r+0.59*g+0.11*b
return gray
二、RGB颜色空间转YCbCr颜色空间
转换公式
Y
=
0.257
∗
R
+
0.504
∗
G
+
0.098
∗
B
+
16
Y=0.257*R+0.504*G+0.098*B+16
Y=0.257∗R+0.504∗G+0.098∗B+16
C
b
=
−
0.148
∗
R
−
0.291
∗
G
+
0.439
∗
B
+
128
Cb=-0.148*R-0.291*G+0.439*B+128
Cb=−0.148∗R−0.291∗G+0.439∗B+128
C
r
=
0.439
∗
R
−
0.368
∗
G
−
0.071
∗
B
+
128
Cr=0.439*R-0.368*G-0.071*B+128
Cr=0.439∗R−0.368∗G−0.071∗B+128
python代码
#输入RGB彩色空间的四维张量,输出YCbCr颜色空间的四维张量
def RGB2YCbCr(img):
img = img*255.0
r,g,b = torch.split(img,1,dim=1)
y = torch.zeros_like(r)
cb = torch.zeros_like(r)
cr = torch.zeros_like(r)
y = 0.257*r+0.504*g+0.098*b+16
y = y/255.0
cb = -0.148*r-0.291*g+0.439*b+128
cb = cb/255.0
cr = 0.439*r-0.368*g-0.071*b+128
cr = cr/255.0
img = torch.cat([y,cb,cr],dim=1)
return img
三、YCbCr颜色空间转RGB颜色空间
转换公式
R
=
1.164
∗
(
Y
−
16
)
+
1.596
∗
(
C
r
−
128
)
R=1.164*(Y-16)+1.596*(Cr-128)
R=1.164∗(Y−16)+1.596∗(Cr−128)
G
=
1.164
∗
(
Y
−
16
)
−
0.392
∗
(
C
b
−
128
)
−
0.813
∗
(
C
r
−
128
)
G=1.164*(Y-16)-0.392*(Cb-128)-0.813*(Cr-128)
G=1.164∗(Y−16)−0.392∗(Cb−128)−0.813∗(Cr−128)
B
=
1.164
∗
(
Y
−
16
)
+
2.017
∗
(
C
b
−
128
)
B=1.164*(Y-16)+2.017*(Cb-128)
B=1.164∗(Y−16)+2.017∗(Cb−128)
python代码
#输入YCbCr颜色空间的四维张量,输出RGB颜色空间的四维张量
def YCbCr2RGB(img):
img = img*255.0
y,cb,cr = torch.split(img,1,dim=1)
r = torch.zeros_like(y)
g = torch.zeros_like(y)
b = torch.zeros_like(y)
r = 1.164*(y-16)+1.596*(cr-128)
r = r/255.0
g = 1.164*(y-16)-0.392*(cb-128)-0.813*(cr-128)
g = g/255.0
b = 1.164*(y-16)+2.017*(cb-128)
b = b/255.0
img = torch.cat([r,g,b],dim=1)
return img