发明内容
本发明提出了一种高清相机的快速图像处理方法,通过对图像处理算法进行分类、结构化的处理,采用数据映射表控制处理过程。利用查表法减少了图像处理的复杂度,提高了运算速度,使图像处理过程适合嵌入式处理,并使嵌入式系统在一定时间内实现更为丰富的图像处理功能,确保抓拍图像质量,增进了各图像算法在空间和时间上的共享,提高执行效率;提供了算法开发的框架,提高代码复用率,降低更新代价。
高清相机的快速图像处理方法,包括如下步骤:
步骤1:参数初始化;定义并生成比特适配映射表、RGB颜色映射表和亮度映射表。
步骤2:采集RAW图像;根据比特适配映射表的定义,对相应数据格式的场景数据进行采集,得到RAW格式的原始图像。
步骤3:如果不需要对图像的颜色和亮度进行调整,则转到步骤4;反之将采集的图像转换为8比特的RGB图像,再进行去马赛克处理,并转化为YCbCr格式;统计图像的颜色和亮度信息,调用相应的图像分析算法确定R、G、B的调节因子和亮度映射规律,并相应修正RGB颜色映射表和亮度映射表。
步骤4:图像处理;将采集的图像转换为8比特的RGB图像、并进行R/G/B颜色映射、去马赛克、RGB格式转为YCbCr格式;再进行亮度映射,并根据期望的指标对亮度进行滤波操作,生成YCbCr数据流。
步骤5:图像压缩;将YCbCr图像转化为JPEG压缩文件,保存到指定介质或通过网络、硬件接口传输。
所述步骤1中的比特适配映射表用于将不同精度的图像转换为8比特数据,长度根据采集设备的图像精度而定。
所述步骤1中的RGB颜色映射表用于实现颜色平衡,包括R颜色映射表、G颜色映射表和B颜色映射表,它们均为长度为256的8比特数据表,分别对三种颜色进行调整。
所述步骤1中的亮度映射表用于对亮度进行调整,为长度256的8比特数据表,初始化为线性特性。
所述步骤1中的比特适配映射表和RGB颜色映射表根据映射关系合并为RGB比特适配映射表。
所述步骤3中,各图像分析算法各自独立,可分别进行亮度和色度信息的统计,并进行分析;并根据分析的结果修改RGB颜色映射表和亮度映射表。
如果比特适配映射表和RGB颜色映射表合并为RGB比特适配映射表,则修改RGB比特适配映射表和亮度映射表。
所述步骤3中,相应的图像分析算法不对原始图像进行任何修改;分析的过程采用一种或多种图像分析算法,各算法间相互独立,并行执行。
所述步骤4中,R/G/B颜色映射为对R/G/B三个分量分别进行查找经过步骤三修正后的RGB颜色映射表,输出符合特定图像质量所调用算法中设定的R、G、B分量。如果比特适配映射表和RGB颜色映射表合并为RGB比特适配映射表,则查找修正后的RGB比特适配映射表,输出符合特定图像质量所调用算法中设定的R、G、B分量。
所述步骤4中,亮度映射为根据图像的亮度分量查找所述步骤三修正后的亮度映射表,并输出新的亮度分量信息。
本发明高清相机的快速图像处理方法,将图像处理结构明晰化、简单化,确保能够快速的对图像进行处理,包括:
(1)使用快速查表处理的方法,资源占用小,适合嵌入式系统开发。
(2)将多种图像处理功能(如白平衡、颜色调节、对比图调整、局部亮度增强)首先进行并行分析,然后在后续步骤中统一进行处理,快速完成了必要的图像处理功能。
(3)增强了各图像算法空间和时间上的复用率,提高了执行效率。
(4)具有合理的处理框架,使算法的扩展或裁剪更加简单,具有一致性。
具体实施方式
下面结合说明书附图对本发明实施例进行详细说明。
本实施例基于DM642嵌入式平台实现。图像采集单元是200万像素高分辨率CCD,能够提供10bit高清晰图像,通过EDMA传输到DM642嵌入式平台指定内存位置。
本发明提供了快速图像处理方法,具体包括:参数初始化、采集图像、分析图像并调整数据映射表、图像处理和图像压缩五个步骤,如附图1所示。
步骤一:参数初始化。为了提高运算速度,将比特适配映射表和RGB颜色映射表合并,称为RGB比特适配映射表,即用RGB比特适配映射表分别完成对10比特精度的R、G、B图像分量的比特适配映射和颜色调整工作。也可将比特映射和RGB映射分别处理,则在后续步骤中,先进行查比特适配映射表的操作,然后进行查询RGB映射表的操作,同样得到转换为8比特精度的RGB图像。
具体方法是,采用13折线法计算原始的比特适配映射表,经过映射得到如下表所示的RGB比特适配映射表,如附图2所示。
表1 RGB比特适配映射表
i | Alaw[i] | i | Alaw[i] | i | Alaw[i] | i | Alaw[i] | i | Alaw[i] | i | Alaw[i] |
0 | 0 | 53 | 53 | 106 | 106 | 159 | 143 | | | 972 | 254 |
1 | 1 | 54 | 54 | 107 | 107 | 160 | 144 | | | 973 | 254 |
2 | 2 | 55 | 55 | 108 | 108 | 161 | 144 | | | 974 | 254 |
3 | 3 | 56 | 56 | 109 | 109 | 162 | 145 | | | 975 | 254 |
4 | 4 | 57 | 57 | 110 | 110 | 163 | 145 | | | 976 | 254 |
5 | 5 | 58 | 58 | 111 | 111 | 164 | 146 | | | 977 | 254 |
6 | 6 | 59 | 59 | 112 | 112 | 165 | 146 | | | 978 | 254 |
7 | 7 | 60 | 60 | 113 | 113 | 166 | 147 | | | 979 | 254 |
8 | 8 | 61 | 61 | 114 | 114 | 167 | 147 | | | 980 | 254 |
9 | 9 | 62 | 62 | 115 | 115 | 168 | 148 | | | 981 | 254 |
10 | 10 | 63 | 63 | 116 | 116 | 169 | 148 | | | 982 | 254 |
11 | 11 | 64 | 64 | 117 | 117 | 170 | 149 | | | 983 | 254 |
12 | 12 | 65 | 65 | 118 | 118 | 171 | 149 | | | 984 | 254 |
13 | 13 | 66 | 66 | 119 | 119 | 172 | 150 | | | 985 | 254 |
14 | 14 | 67 | 67 | 120 | 120 | 173 | 150 | | | 986 | 254 |
15 | 15 | 68 | 68 | 121 | 121 | 174 | 151 | | | 987 | 254 |
16 | 16 | 69 | 69 | 122 | 122 | 175 | 151 | | | 988 | 254 |
17 | 17 | 70 | 70 | 123 | 123 | 176 | 152 | | | 989 | 254 |
18 | 18 | 71 | 71 | 124 | 124 | 177 | 152 | | | 990 | 255 |
19 | 19 | 72 | 72 | 125 | 125 | 178 | 153 | | | 991 | 255 |
20 | 20 | 73 | 73 | 126 | 126 | 179 | 153 | | | 992 | 255 |
21 | 21 | 74 | 74 | 127 | 127 | 180 | 154 | | | 993 | 255 |
22 | 22 | 75 | 75 | 128 | 128 | 181 | 154 | | | 994 | 255 |
23 | 23 | 76 | 76 | 129 | 128 | 182 | 155 | | | 995 | 255 |
24 | 24 | 77 | 77 | 130 | 129 | 183 | 155 | | | 996 | 255 |
25 | 25 | 78 | 78 | 131 | 129 | 184 | 156 | | | 997 | 255 |
26 | 26 | 79 | 79 | 132 | 130 | 185 | 157 | | | 998 | 255 |
27 | 27 | 80 | 80 | 133 | 130 | 186 | 157 | | | 999 | 255 |
28 | 28 | 81 | 81 | 134 | 131 | 187 | 158 | | | 1000 | 255 |
29 | 29 | 82 | 82 | 135 | 131 | 188 | 158 | | | 1001 | 255 |
30 | 30 | 83 | 83 | 136 | 132 | 189 | 159 | | | 1002 | 255 |
31 | 31 | 84 | 84 | 137 | 132 | 190 | 159 | | | 1003 | 255 |
32 | 32 | 85 | 85 | 138 | 133 | 191 | 160 | | | 1004 | 255 |
33 | 33 | 86 | 86 | 139 | 133 | 192 | 160 | | | 1005 | 255 |
34 | 34 | 87 | 87 | 140 | 134 | 193 | 161 | | | 1006 | 255 |
35 | 35 | 88 | 88 | 141 | 134 | 194 | 161 | | | 1007 | 255 |
36 | 36 | 89 | 89 | 142 | 135 | 195 | 162 | | | 1008 | 255 |
37 | 37 | 90 | 90 | 143 | 135 | 196 | 162 | | | 1009 | 255 |
38 | 38 | 91 | 91 | 144 | 136 | 197 | 163 | | | 1010 | 255 |
39 | 39 | 92 | 92 | 145 | 136 | 198 | 163 | | | 1011 | 255 |
40 | 40 | 93 | 93 | 146 | 137 | 199 | 164 | | | 1012 | 255 |
41 | 41 | 94 | 94 | 147 | 137 | 200 | 164 | | | 1013 | 255 |
42 | 42 | 95 | 95 | 148 | 138 | 201 | 165 | | | 1014 | 255 |
43 | 43 | 96 | 96 | 149 | 138 | 202 | 165 | | | 1015 | 255 |
44 | 44 | 97 | 97 | 150 | 139 | 203 | 166 | | | 1016 | 255 |
45 | 45 | 98 | 98 | 151 | 139 | 204 | 166 | | | 1017 | 255 |
46 | 46 | 99 | 99 | 152 | 140 | 205 | 167 | | | 1018 | 255 |
47 | 47 | 100 | 100 | 153 | 140 | 206 | 167 | | | 1019 | 255 |
48 | 48 | 101 | 101 | 154 | 141 | 207 | 168 | | | 1020 | 255 |
49 | 49 | 102 | 102 | 155 | 141 | 208 | 168 | | | 1021 | 255 |
50 | 50 | 103 | 103 | 156 | 142 | 209 | 169 | | | 1022 | 255 |
51 | 51 | 104 | 104 | 157 | 142 | 210 | 169 | | | 1023 | 255 |
52 | 52 | 105 | 105 | 158 | 143 | 211 | 170 | | | 1024 | 255 |
该比特适配映射表为一张1×1024长度的8比特数据表,占用1KB的存储空间。
然后利用比特适配映射表初始化RGB比特适配映射表,因此R比特适配映射表、G比特适配映射表和B比特适配映射表均为1×1024长度的8比特数据表,数值与该比特适配映射表相同。
亮度映射表采用线性等值映射规则,为1×256长度的8比特数据表,如下表所示。
表2 亮度映射表
原始亮度值 | 映射亮度值 | 原始亮度值 | 映射亮度值 | 原始亮度值 | 映射亮度值 | 原始亮度值 | 映射亮度值 |
0 | 0 | 64 | 64 | 128 | 128 | 192 | 192 |
1 | 1 | 65 | 65 | 129 | 129 | 193 | 193 |
2 | 2 | 66 | 66 | 130 | 130 | 194 | 194 |
3 | 3 | 67 | 67 | 131 | 131 | 195 | 195 |
4 | 4 | 68 | 68 | 132 | 132 | 196 | 196 |
5 | 5 | 69 | 69 | 133 | 133 | 197 | 197 |
6 | 6 | 70 | 70 | 134 | 134 | 198 | 198 |
7 | 7 | 71 | 71 | 135 | 135 | 199 | 199 |
8 | 8 | 72 | 72 | 136 | 136 | 200 | 200 |
9 | 9 | 73 | 73 | 137 | 137 | 201 | 201 |
10 | 10 | 74 | 74 | 138 | 138 | 202 | 202 |
11 | 11 | 75 | 75 | 139 | 139 | 203 | 203 |
12 | 12 | 76 | 76 | 140 | 140 | 204 | 204 |
13 | 13 | 77 | 77 | 141 | 141 | 205 | 205 |
14 | 14 | 78 | 78 | 142 | 142 | 206 | 206 |
15 | 15 | 79 | 79 | 143 | 143 | 207 | 207 |
16 | 16 | 80 | 80 | 144 | 144 | 208 | 208 |
17 | 17 | 81 | 81 | 145 | 145 | 209 | 209 |
18 | 18 | 82 | 82 | 146 | 146 | 210 | 210 |
19 | 19 | 83 | 83 | 147 | 147 | 211 | 211 |
20 | 20 | 84 | 84 | 148 | 148 | 212 | 212 |
21 | 21 | 85 | 85 | 149 | 149 | 213 | 213 |
22 | 22 | 86 | 86 | 150 | 150 | 214 | 214 |
23 | 23 | 87 | 87 | 151 | 151 | 215 | 215 |
24 | 24 | 88 | 88 | 152 | 152 | 216 | 216 |
25 | 25 | 89 | 89 | 153 | 153 | 217 | 217 |
26 | 26 | 90 | 90 | 154 | 154 | 218 | 218 |
27 | 27 | 91 | 91 | 155 | 155 | 219 | 219 |
28 | 28 | 92 | 92 | 156 | 156 | 220 | 220 |
29 | 29 | 93 | 93 | 157 | 157 | 221 | 221 |
30 | 30 | 94 | 94 | 158 | 158 | 222 | 222 |
31 | 31 | 95 | 95 | 159 | 159 | 223 | 223 |
32 | 32 | 96 | 96 | 160 | 160 | 224 | 224 |
33 | 33 | 97 | 97 | 161 | 161 | 225 | 225 |
34 | 34 | 98 | 98 | 162 | 162 | 226 | 226 |
35 | 35 | 99 | 99 | 163 | 163 | 227 | 227 |
36 | 36 | 100 | 100 | 164 | 164 | 228 | 228 |
37 | 37 | 101 | 101 | 165 | 165 | 229 | 229 |
38 | 38 | 102 | 102 | 166 | 166 | 230 | 230 |
39 | 39 | 103 | 103 | 167 | 167 | 231 | 231 |
40 | 40 | 104 | 104 | 168 | 168 | 232 | 232 |
41 | 41 | 105 | 105 | 169 | 169 | 233 | 233 |
42 | 42 | 106 | 106 | 170 | 170 | 234 | 234 |
43 | 43 | 107 | 107 | 171 | 171 | 235 | 235 |
44 | 44 | 108 | 108 | 172 | 172 | 236 | 236 |
45 | 45 | 109 | 109 | 173 | 173 | 237 | 237 |
46 | 46 | 110 | 110 | 174 | 174 | 238 | 238 |
47 | 47 | 111 | 111 | 175 | 175 | 239 | 239 |
48 | 48 | 112 | 112 | 176 | 176 | 240 | 240 |
49 | 49 | 113 | 113 | 177 | 177 | 241 | 241 |
50 | 50 | 114 | 114 | 178 | 178 | 242 | 242 |
51 | 51 | 115 | 115 | 179 | 179 | 243 | 243 |
52 | 52 | 116 | 116 | 180 | 180 | 244 | 244 |
53 | 53 | 117 | 117 | 181 | 181 | 245 | 245 |
54 | 54 | 118 | 118 | 182 | 182 | 246 | 246 |
55 | 55 | 119 | 119 | 183 | 183 | 247 | 247 |
56 | 56 | 120 | 120 | 184 | 184 | 248 | 248 |
57 | 57 | 121 | 121 | 185 | 185 | 249 | 249 |
58 | 58 | 122 | 122 | 186 | 186 | 250 | 250 |
59 | 59 | 123 | 123 | 187 | 187 | 251 | 251 |
60 | 60 | 124 | 124 | 188 | 188 | 252 | 252 |
61 | 61 | 125 | 125 | 189 | 189 | 253 | 253 |
62 | 62 | 126 | 126 | 190 | 190 | 254 | 254 |
63 | 63 | 127 | 127 | 191 | 191 | 255 | 255 |
初始化后的两套数据表将在步骤3中被进一步修正。
步骤二:采集RAW图像。图像采集单元对车辆进行抓拍,生成高清晰高精度10位RAW图像,等待下一步处理。
步骤三:图像分析。如果需要对图像进行分析,则通过对RAW图像进行查找RGB比特适配映射表操作,将10位RGB图像转换为8位RGB图像。
如果图像为马赛克排列,则8位RGB图像将进行去马赛克处理。在此步骤中,BAYER图案的图像将被转换为完整的RGB图像。如附图3所示,由于图像中部分的R、G、B分量是缺失的,本实施例中采用半像素插值法,利用邻近的R和B分量对周围像素的R、B分量进行填充,而G分量则采取对相邻像素求取均值的方法计算。
8位RGB图像根据ITU-R BT.601标准规定转换为YCbCr格式,采用下列公式进行,并进行4:2:0亚采样。每4个点(R,G,B)生成4个Y分量、2个Cb分量和2个Cr分量。
Y=+0.299·R+0.587·G+0.114·B
Cb=128-0.1687·R-0.33127·G+0.5·B
Cr=128+0.5·R-0.4187·G-0.0813·B
接着统计得到的YCbCr格式图像的颜色和亮度信息,根据对图像质量的特定需求来调用相应图像分析算法。本实施例中,期望实现目标图像无色偏且具有特定的对比度特性,因此在本步骤中对颜色和亮度分别进行白平衡和对比度分析。白平衡分析算法中对指定“白点”进行色度统计分别计算R/G/B分量的增益因子,查找并相应调整RGB比特适配映射表中对应位置的值。如果比特适配映射表和RGB颜色映射表未进行合并,则调整RGB颜色映射表对应位置的值。
使用对比度分析算法对亮度进行直方图统计,根据设定的白点基准亮度和黑点基准亮度,将所有高于白点基准亮度的值映射为255,低于黑点基准亮度的值映射为0,对中间区域的亮度值根据白点基准亮度和黑点基准亮度同比例线性拉伸,调整为0~255之间的值。并根据这些信息相应调整亮度映射表中对应位置的值。
在本步骤中,图像分析算法对YCbCr图像进行分析,但并不修改图像内容,因此各图像分析算法产生的工作进程相互独立,即各图像分析算法可以并行执行。只需遍历一次图像,即可进行多种图像分析,得到多个特性参数,提高了执行效率。由此,当图像需要进行多种图像处理时,将所有图像处理的图像分析步骤和处理步骤分离开,再将这些分析和处理方法分别合并,提高系统的时间利用率和空间利用率。
调整完毕后也可对数据表进行进一步的修正。如为增强绿色效果,可增大G分量的增益因子,使G比特适配映射表中分量值较大。同时为提高图像亮度质量,也可对亮度值进行部分或整体的提高,使亮度映射表中部分值增大。
本步骤根据特定图像质量需要对图像进行亮度调整、色度调整或同时进行亮度和色度调整分析,例如,当图像偏暗,可以选择进行亮度调整。如果图像符合使用者的要求,当然也可选择不进行任何调整,直接跳过本步骤。
步骤四:图像处理。通过对采集到的RAW图像进行查找修正后的RGB比特适配映射表,输出符合特定图像质量所调用算法中设定的R、G、B分量。将10位RGB图像处理为具有合理颜色的8位RGB图像。如果比特适配映射表和RGB颜色映射表未进行合并,则查找修正后的RGB颜色映射表对应位置的值,输出符合特定图像质量所调用算法中设定的R、G、B分量。
与步骤三相同,8位BAYER图案的RGB图像通过去马赛克处理将被转换为完整的RGB图像、RGB转YCbCr处理和4:2:0亚采样得到YCbCr图像。不再赘述。
亮度Y分量进行查找修正后的亮度映射表进行亮度映射,在后续步骤中与色度分量CbCr等数据一起进行JPEG压缩处理。
如果使用者对图像有着特定或者个性化的要求,作为优选,可对亮度进行滤波处理,如采用高频分量提升滤波进行细节强化,提高图像清晰度;采用中值滤波等方法对图像进行中值滤波去除噪声;采用高斯滤波等方法平滑图像等。
如果未对亮度映射表进行修正,可跳过查表操作,原图像的亮度值不做任何修改。
步骤五:图像压缩。对YCbCr图像进行JPEG压缩,作为文件保存到指定的介质内或通过网络、硬件接口传输。也可处理根据硬件设备的设定,继续处理下一幅图像,直至所有图像处理完毕。
通过本方法在DM642嵌入式平台(600MHz主频)上实现步骤三和步骤四(包括比特适配、白平衡、颜色增益调整、去马赛克、RGB转YCbCr、4:2:0亚采样、对比度调节、亮度调节等多项功能)仅需要15ms。而且由于多种图像处理算法的分析和处理步骤采用并行方式,减少了代码量,提高了数据复用率,节省了存储空间。
快速的处理速度使得抓拍图像能够在嵌入式设备中进行实时处理,大大减轻了控制服务器的负担。多台设备联合控制时,各设备可独立进行图像处理控制,控制服务器仅需控制通信线程,保存数据。