一、灰度化
1、RGB2GRAY公式
RGB图转灰度图公式为
G
r
a
y
=
R
×
0.299
+
G
×
0.587
+
B
×
0.114
Gray = R\times0.299 + G\times0.587 + B\times0.114
Gray=R×0.299+G×0.587+B×0.114
一般地,在FPGA中采用用整型移位的方式进行计算。
不同的整型值大小对应不同的转化精度,2位至20位的精度转化公式如下:
G
r
a
y
=
(
R
×
1
+
G
×
2
+
B
×
1
)
>
>
2
G
r
a
y
=
(
R
×
2
+
G
×
5
+
B
×
1
)
>
>
3
G
r
a
y
=
(
R
×
4
+
G
×
10
+
B
×
2
)
>
>
4
G
r
a
y
=
(
R
×
9
+
G
×
19
+
B
×
4
)
>
>
5
G
r
a
y
=
(
R
×
19
+
G
×
37
+
B
×
8
)
>
>
6
G
r
a
y
=
(
R
×
38
+
G
×
75
+
B
×
15
)
>
>
7
G
r
a
y
=
(
R
×
76
+
G
×
150
+
B
×
30
)
>
>
8
G
r
a
y
=
(
R
×
153
+
G
×
300
+
B
×
59
)
>
>
9
G
r
a
y
=
(
R
×
306
+
G
×
601
+
B
×
117
)
>
>
10
G
r
a
y
=
(
R
×
612
+
G
×
1202
+
B
×
234
)
>
>
11
G
r
a
y
=
(
R
×
1224
+
G
×
2405
+
B
×
467
)
>
>
12
G
r
a
y
=
(
R
×
2449
+
G
×
4809
+
B
×
934
)
>
>
13
G
r
a
y
=
(
R
×
4898
+
G
×
9618
+
B
×
1868
)
>
>
14
G
r
a
y
=
(
R
×
9797
+
G
×
19235
+
B
×
3736
)
>
>
15
G
r
a
y
=
(
R
×
19595
+
G
×
38469
+
B
×
7472
)
>
>
16
G
r
a
y
=
(
R
×
39190
+
G
×
76939
+
B
×
14943
)
>
>
17
G
r
a
y
=
(
R
×
78381
+
G
×
153878
+
B
×
29885
)
>
>
18
G
r
a
y
=
(
R
×
156762
+
G
×
307757
+
B
×
59769
)
>
>
19
G
r
a
y
=
(
R
×
313524
+
G
×
615514
+
B
×
119538
)
>
>
20
Gray = (R\times1 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,+ G\times2 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,+ B\times1) >> 2 \\ Gray = (R\times2 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,+ G\times5 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,+ B\times1) >> 3 \\ Gray = (R\times4 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,+ G\times10 \,\,\,\,\,\,\,\,\,\,\,\,+ B\times2) >> 4 \\ Gray = (R\times9 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,+ G\times19 \,\,\,\,\,\,\,\,\,\,\,\,+ B\times4) >> 5 \\ Gray = (R\times19 \,\,\,\,\,\,\,\,\,\,\,\,+ G\times37 \,\,\,\,\,\,\,\,\,\,\,\,+ B\times8) >> 6 \\ Gray = (R\times38 \,\,\,\,\,\,\,\,\,\,\,\,+ G\times75 \,\,\,\,\,\,\,\,\,\,\,\,+ B\times15) >> 7 \\ Gray = (R\times76\,\,\,\,\,\,\,\,\,\,\,\, + G\times150 \,\,\,\,\,\,\,\,\,+ B\times30) >> 8 \\ Gray = (R\times153\,\,\,\,\,\,\,\,\, + G\times300\,\,\,\,\,\,\,\,\, + B\times59) >> 9 \\ Gray = (R\times306 \,\,\,\,\,\,\,\,\,+ G\times601\,\,\,\,\,\,\,\,\, + B\times117) >> 10 \\ Gray = (R\times612\,\,\,\,\,\,\,\,\, + G\times1202 \,\,\,\,\,\,+ B\times234) >> 11\\ Gray = (R\times1224 \,\,\,\,\,\,+ G\times2405\,\,\,\,\,\, + B\times467) >> 12\\ Gray = (R\times2449 \,\,\,\,\,\,+ G\times4809 \,\,\,\,\,\,+ B\times934) >> 13\\ Gray = (R\times4898 \,\,\,\,\,\,+ G\times9618 \,\,\,\,\,\,+ B\times1868) >> 14\\ Gray = (R\times9797 \,\,\,\,\,\,+ G\times19235 \,\,\,+ B\times3736) >> 15\\ Gray = (R\times19595 \,\,\,+ G\times38469\,\,\, + B\times7472) >> 16\\ Gray = (R\times39190 \,\,\,+ G\times76939\,\,\, + B\times14943) >> 17\\ Gray = (R\times78381 \,\,\,+ G\times153878 + B\times29885) >> 18\\ Gray = (R\times156762 +G\times307757 + B\times59769) >> 19\\ Gray = (R\times313524 + G\times615514 + B\times119538) >> 20\\
Gray=(R×1+G×2+B×1)>>2Gray=(R×2+G×5+B×1)>>3Gray=(R×4+G×10+B×2)>>4Gray=(R×9+G×19+B×4)>>5Gray=(R×19+G×37+B×8)>>6Gray=(R×38+G×75+B×15)>>7Gray=(R×76+G×150+B×30)>>8Gray=(R×153+G×300+B×59)>>9Gray=(R×306+G×601+B×117)>>10Gray=(R×612+G×1202+B×234)>>11Gray=(R×1224+G×2405+B×467)>>12Gray=(R×2449+G×4809+B×934)>>13Gray=(R×4898+G×9618+B×1868)>>14Gray=(R×9797+G×19235+B×3736)>>15Gray=(R×19595+G×38469+B×7472)>>16Gray=(R×39190+G×76939+B×14943)>>17Gray=(R×78381+G×153878+B×29885)>>18Gray=(R×156762+G×307757+B×59769)>>19Gray=(R×313524+G×615514+B×119538)>>20
2、RGB2GRAYFPGA程序
module rgb2gray(
input sys_clk,
input [7:0] img_r,
input [7:0] img_g,
input [7:0] img_b,
input input_valid,
output reg [7:0] img_gray,
output reg img_gray_valid
);
reg [7:0] gray_data_reg;
always @(posedge sys_clk ) begin
img_gray <= (img_r*1+img_g*1+img_b*2)>>2;
img_gray_valid <= input_valid;
end
3、效果
二、RGB888转YCbCr
RGB转YCbCr