36 #define AVG(a,b) (((int)(a) + (int)(b)) >> 1) 37 #define AVG3(a,b,c) (((int)(a) + (int)(b) + (int)(c)) / 3) 38 #define AVG4(a,b,c,d) (((int)(a) + (int)(b) + (int)(c) + (int)(d)) >> 2) 39 #define WAVG4(a,b,c,d,x,y) ( ( ((int)(a) + (int)(b)) * (int)(x) + ((int)(c) + (int)(d)) * (int)(y) ) / ( 2 * ((int)(x) + (int(y))) ) ) 46 unsigned width = bayer.cols;
47 unsigned height = bayer.rows;
48 unsigned rgb_line_step = color.step[0];
49 unsigned rgb_line_skip = rgb_line_step - width * 3;
50 int bayer_line_step = bayer.step[0];
51 int bayer_line_step2 = bayer_line_step * 2;
53 unsigned char* rgb_buffer = color.data;
54 unsigned char* bayer_pixel = bayer.data;
65 rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1];
66 rgb_buffer[1] = bayer_pixel[0];
67 rgb_buffer[rgb_line_step + 2] = rgb_buffer[2] = bayer_pixel[bayer_line_step];
74 rgb_buffer[4] =
AVG3 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1]);
75 rgb_buffer[rgb_line_step + 5] = rgb_buffer[5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
82 rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
83 rgb_buffer[rgb_line_step + 1] =
AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[bayer_line_step2]);
91 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
97 for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2)
104 rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
105 rgb_buffer[1] = bayer_pixel[0];
106 rgb_buffer[2] = bayer_pixel[bayer_line_step + 1];
112 rgb_buffer[3] = bayer_pixel[1];
113 rgb_buffer[4] =
AVG3 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1]);
114 rgb_buffer[rgb_line_step + 5] = rgb_buffer[5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
121 rgb_buffer[rgb_line_step ] =
AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]);
122 rgb_buffer[rgb_line_step + 1] =
AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
123 rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
129 rgb_buffer[rgb_line_step + 3] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
130 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
140 rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
141 rgb_buffer[1] = bayer_pixel[0];
142 rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = rgb_buffer[5] = rgb_buffer[2] = bayer_pixel[bayer_line_step];
148 rgb_buffer[3] = bayer_pixel[1];
149 rgb_buffer[4] =
AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]);
157 rgb_buffer[rgb_line_step ] =
AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]);
158 rgb_buffer[rgb_line_step + 1] =
AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
165 rgb_buffer[rgb_line_step + 3] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
166 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
169 bayer_pixel += bayer_line_step + 2;
170 rgb_buffer += rgb_line_step + 6 + rgb_line_skip;
172 for (yIdx = 2; yIdx < height - 2; yIdx += 2)
181 rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1];
182 rgb_buffer[1] = bayer_pixel[0];
183 rgb_buffer[2] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]);
191 rgb_buffer[4] =
AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]);
192 rgb_buffer[5] =
AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step]);
199 rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
200 rgb_buffer[rgb_line_step + 1] =
AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[bayer_line_step2]);
201 rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
208 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
209 rgb_buffer[rgb_line_step + 5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
214 for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2)
222 rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
223 rgb_buffer[1] = bayer_pixel[0];
224 rgb_buffer[2] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]);
232 dh = abs (bayer_pixel[0] - bayer_pixel[2]);
233 dv = abs (bayer_pixel[-bayer_line_step + 1] - bayer_pixel[bayer_line_step + 1]);
236 rgb_buffer[4] =
AVG (bayer_pixel[-bayer_line_step + 1], bayer_pixel[bayer_line_step + 1]);
238 rgb_buffer[4] =
AVG (bayer_pixel[0], bayer_pixel[2]);
240 rgb_buffer[4] =
AVG4 (bayer_pixel[-bayer_line_step + 1], bayer_pixel[bayer_line_step + 1], bayer_pixel[0], bayer_pixel[2]);
242 rgb_buffer[3] = bayer_pixel[1];
243 rgb_buffer[5] =
AVG4 (bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step], bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
251 rgb_buffer[rgb_line_step ] =
AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]);
252 rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
254 dv = abs (bayer_pixel[0] - bayer_pixel[bayer_line_step2]);
255 dh = abs (bayer_pixel[bayer_line_step - 1] - bayer_pixel[bayer_line_step + 1]);
258 rgb_buffer[rgb_line_step + 1] =
AVG (bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
260 rgb_buffer[rgb_line_step + 1] =
AVG (bayer_pixel[0], bayer_pixel[bayer_line_step2]);
262 rgb_buffer[rgb_line_step + 1] =
AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
269 rgb_buffer[rgb_line_step + 3] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
270 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
271 rgb_buffer[rgb_line_step + 5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
281 rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
282 rgb_buffer[1] = bayer_pixel[0];
283 rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = rgb_buffer[5] = rgb_buffer[2] = bayer_pixel[bayer_line_step];
289 rgb_buffer[3] = bayer_pixel[1];
290 rgb_buffer[4] =
AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]);
298 rgb_buffer[rgb_line_step ] =
AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]);
299 rgb_buffer[rgb_line_step + 1] =
AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
306 rgb_buffer[rgb_line_step + 3] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
307 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
310 bayer_pixel += bayer_line_step + 2;
311 rgb_buffer += rgb_line_step + 6 + rgb_line_skip;
320 rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1];
321 rgb_buffer[1] = bayer_pixel[0];
322 rgb_buffer[rgb_line_step + 2] = rgb_buffer[2] = bayer_pixel[bayer_line_step];
329 rgb_buffer[4] =
AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]);
330 rgb_buffer[5] =
AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step]);
338 rgb_buffer[rgb_line_step + 1] =
AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]);
339 rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
346 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
347 rgb_buffer[rgb_line_step + 5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
352 for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2)
359 rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
360 rgb_buffer[1] = bayer_pixel[0];
361 rgb_buffer[2] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]);
367 rgb_buffer[rgb_line_step + 3] = rgb_buffer[3] = bayer_pixel[1];
368 rgb_buffer[4] =
AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]);
369 rgb_buffer[5] =
AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[-bayer_line_step + 2]);
376 rgb_buffer[rgb_line_step ] =
AVG (bayer_pixel[-1], bayer_pixel[1]);
377 rgb_buffer[rgb_line_step + 1] =
AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
378 rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
386 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
387 rgb_buffer[rgb_line_step + 5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
396 rgb_buffer[rgb_line_step ] = rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
397 rgb_buffer[1] = bayer_pixel[0];
398 rgb_buffer[5] = rgb_buffer[2] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]);
404 rgb_buffer[rgb_line_step + 3] = rgb_buffer[3] = bayer_pixel[1];
405 rgb_buffer[4] =
AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[-bayer_line_step + 1]);
414 rgb_buffer[rgb_line_step + 1] =
AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
415 rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
422 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
428 unsigned width = bayer.cols;
429 unsigned height = bayer.rows;
430 unsigned rgb_line_step = color.step[0];
431 unsigned rgb_line_skip = rgb_line_step - width * 3;
432 int bayer_line_step = bayer.step[0];
433 int bayer_line_step2 = bayer_line_step * 2;
435 unsigned char* rgb_buffer = color.data;
436 unsigned char* bayer_pixel = bayer.data;
447 rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1];
448 rgb_buffer[1] = bayer_pixel[0];
449 rgb_buffer[rgb_line_step + 2] = rgb_buffer[2] = bayer_pixel[bayer_line_step];
456 rgb_buffer[4] =
AVG3 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1]);
457 rgb_buffer[rgb_line_step + 5] = rgb_buffer[5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
464 rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
465 rgb_buffer[rgb_line_step + 1] =
AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[bayer_line_step2]);
473 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
479 for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2)
486 rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
487 rgb_buffer[1] = bayer_pixel[0];
488 rgb_buffer[2] = bayer_pixel[bayer_line_step + 1];
494 rgb_buffer[3] = bayer_pixel[1];
495 rgb_buffer[4] =
AVG3 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1]);
496 rgb_buffer[rgb_line_step + 5] = rgb_buffer[5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
503 rgb_buffer[rgb_line_step ] =
AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]);
504 rgb_buffer[rgb_line_step + 1] =
AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
505 rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
511 rgb_buffer[rgb_line_step + 3] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
512 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
522 rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
523 rgb_buffer[1] = bayer_pixel[0];
524 rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = rgb_buffer[5] = rgb_buffer[2] = bayer_pixel[bayer_line_step];
530 rgb_buffer[3] = bayer_pixel[1];
531 rgb_buffer[4] =
AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]);
539 rgb_buffer[rgb_line_step ] =
AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]);
540 rgb_buffer[rgb_line_step + 1] =
AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
547 rgb_buffer[rgb_line_step + 3] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
548 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
551 bayer_pixel += bayer_line_step + 2;
552 rgb_buffer += rgb_line_step + 6 + rgb_line_skip;
554 for (yIdx = 2; yIdx < height - 2; yIdx += 2)
563 rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1];
564 rgb_buffer[1] = bayer_pixel[0];
565 rgb_buffer[2] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]);
573 rgb_buffer[4] =
AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]);
574 rgb_buffer[5] =
AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step]);
581 rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
582 rgb_buffer[rgb_line_step + 1] =
AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[bayer_line_step2]);
583 rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
590 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
591 rgb_buffer[rgb_line_step + 5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
596 for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2)
604 rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
605 rgb_buffer[1] = bayer_pixel[0];
606 rgb_buffer[2] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]);
614 dh = abs (bayer_pixel[0] - bayer_pixel[2]);
615 dv = abs (bayer_pixel[-bayer_line_step + 1] - bayer_pixel[bayer_line_step + 1]);
617 if (dv == 0 && dh == 0)
618 rgb_buffer[4] =
AVG4 (bayer_pixel[1 - bayer_line_step], bayer_pixel[1 + bayer_line_step], bayer_pixel[0], bayer_pixel[2]);
620 rgb_buffer[4] =
WAVG4 (bayer_pixel[1 - bayer_line_step], bayer_pixel[1 + bayer_line_step], bayer_pixel[0], bayer_pixel[2], dh, dv);
621 rgb_buffer[3] = bayer_pixel[1];
622 rgb_buffer[5] =
AVG4 (bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step], bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
630 rgb_buffer[rgb_line_step ] =
AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]);
631 rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
633 dv = abs (bayer_pixel[0] - bayer_pixel[bayer_line_step2]);
634 dh = abs (bayer_pixel[bayer_line_step - 1] - bayer_pixel[bayer_line_step + 1]);
636 if (dv == 0 && dh == 0)
637 rgb_buffer[rgb_line_step + 1] =
AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
639 rgb_buffer[rgb_line_step + 1] =
WAVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1], dh, dv);
646 rgb_buffer[rgb_line_step + 3] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
647 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
648 rgb_buffer[rgb_line_step + 5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
658 rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
659 rgb_buffer[1] = bayer_pixel[0];
660 rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = rgb_buffer[5] = rgb_buffer[2] = bayer_pixel[bayer_line_step];
666 rgb_buffer[3] = bayer_pixel[1];
667 rgb_buffer[4] =
AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]);
675 rgb_buffer[rgb_line_step ] =
AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]);
676 rgb_buffer[rgb_line_step + 1] =
AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
683 rgb_buffer[rgb_line_step + 3] =
AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]);
684 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
687 bayer_pixel += bayer_line_step + 2;
688 rgb_buffer += rgb_line_step + 6 + rgb_line_skip;
697 rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1];
698 rgb_buffer[1] = bayer_pixel[0];
699 rgb_buffer[rgb_line_step + 2] = rgb_buffer[2] = bayer_pixel[bayer_line_step];
706 rgb_buffer[4] =
AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]);
707 rgb_buffer[5] =
AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step]);
715 rgb_buffer[rgb_line_step + 1] =
AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]);
716 rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
723 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
724 rgb_buffer[rgb_line_step + 5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
729 for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2)
736 rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
737 rgb_buffer[1] = bayer_pixel[0];
738 rgb_buffer[2] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]);
744 rgb_buffer[rgb_line_step + 3] = rgb_buffer[3] = bayer_pixel[1];
745 rgb_buffer[4] =
AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]);
746 rgb_buffer[5] =
AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[-bayer_line_step + 2]);
753 rgb_buffer[rgb_line_step ] =
AVG (bayer_pixel[-1], bayer_pixel[1]);
754 rgb_buffer[rgb_line_step + 1] =
AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
755 rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
763 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
764 rgb_buffer[rgb_line_step + 5] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]);
773 rgb_buffer[rgb_line_step ] = rgb_buffer[0] =
AVG (bayer_pixel[1], bayer_pixel[-1]);
774 rgb_buffer[1] = bayer_pixel[0];
775 rgb_buffer[5] = rgb_buffer[2] =
AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]);
781 rgb_buffer[rgb_line_step + 3] = rgb_buffer[3] = bayer_pixel[1];
782 rgb_buffer[4] =
AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[-bayer_line_step + 1]);
791 rgb_buffer[rgb_line_step + 1] =
AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]);
792 rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step];
799 rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1];
void debayerEdgeAwareWeighted(const cv::Mat &bayer, cv::Mat &color)
#define WAVG4(a, b, c, d, x, y)
void debayerEdgeAware(const cv::Mat &bayer, cv::Mat &color)