📄 conv.c
字号:
/*#!/usr/bin/pythonimport mathdens = 20r = 1.8s = 0.0q = 1.8# it is a coincidence that q are r are the samefor j in range(3): for i in xrange(5): e = 0.0 for k in range(3): for yi in range (dens): for xi in range (dens): x = float (i - 2) - 0.5 + float (xi + 0.5) / float (dens) y = float ((j - 1) * 3 + k - 1) - 0.5 + float (yi + 0.5) / float (dens) e = e + math.exp (-(x * x + y * y) / q) e = e / (dens * dens * 3) / r s = s + int (e * 255.0) print '#define G%d%d\t%d' % (i + 1, j + 1, int (e * 255.0)) printprint s*/#if 0#define G11 4#define G21 8#define G31 11#define G41 8#define G51 4#define G12 21#define G22 44#define G32 56#define G42 44#define G52 21#define G13 4#define G23 8#define G33 11#define G43 8#define G53 4#elif 0#define G11 1#define G21 4#define G31 6#define G41 4#define G51 1#define G12 13#define G22 55#define G32 88#define G42 55#define G52 13#define G13 1#define G23 4#define G33 6#define G43 4#define G53 1#else/* above two are too blured, this looks ok though: */#define G11 0#define G21 3#define G31 6#define G41 3#define G51 0#define G12 12#define G22 57#define G32 94#define G42 57#define G52 12#define G13 0#define G23 3#define G33 6#define G43 3#define G53 0#endif#define S1M(x,y) ((unsigned long) source[(x) * bytes_per_pixel + (y) * source_bytes_per_line] )#define S2M(x,y) (((unsigned long) source[(x) * bytes_per_pixel + (y) * source_bytes_per_line] << 8 ) \ + (unsigned long) source[(x) * bytes_per_pixel + 1 + (y) * source_bytes_per_line] )#define S3M(x,y) (((unsigned long) source[(x) * bytes_per_pixel + (y) * source_bytes_per_line] << 16) \ + ((unsigned long) source[(x) * bytes_per_pixel + 1 + (y) * source_bytes_per_line] << 8 ) \ + (unsigned long) source[(x) * bytes_per_pixel + 2 + (y) * source_bytes_per_line])#define S4M(x,y) (((unsigned long) source[(x) * bytes_per_pixel + (y) * source_bytes_per_line] << 24) \ + ((unsigned long) source[(x) * bytes_per_pixel + 1 + (y) * source_bytes_per_line] << 16) \ + ((unsigned long) source[(x) * bytes_per_pixel + 2 + (y) * source_bytes_per_line] << 8 ) \ + (unsigned long) source[(x) * bytes_per_pixel + 3 + (y) * source_bytes_per_line] )#define S1L(x,y) ((unsigned long) source[(x) * bytes_per_pixel + (y) * source_bytes_per_line] )#define S2L(x,y) (((unsigned long) source[(x) * bytes_per_pixel + 1 + (y) * source_bytes_per_line] << 8 ) \ + (unsigned long) source[(x) * bytes_per_pixel + (y) * source_bytes_per_line] )#define S3L(x,y) (((unsigned long) source[(x) * bytes_per_pixel + 2 + (y) * source_bytes_per_line] << 16) \ + ((unsigned long) source[(x) * bytes_per_pixel + 1 + (y) * source_bytes_per_line] << 8 ) \ + (unsigned long) source[(x) * bytes_per_pixel + (y) * source_bytes_per_line] )#define S4L(x,y) (((unsigned long) source[(x) * bytes_per_pixel + 3 + (y) * source_bytes_per_line] << 24) \ + ((unsigned long) source[(x) * bytes_per_pixel + 2 + (y) * source_bytes_per_line] << 16) \ + ((unsigned long) source[(x) * bytes_per_pixel + 1 + (y) * source_bytes_per_line] << 8 ) \ + (unsigned long) source[(x) * bytes_per_pixel + (y) * source_bytes_per_line] )#define S1LR(x,y) ((S1L(x,y) >> red_shift) & red_mask)#define S1LG(x,y) ((S1L(x,y) >> green_shift) & green_mask)#define S1LB(x,y) ((S1L(x,y) >> blue_shift) & blue_mask)#define S2LR(x,y) ((S2L(x,y) >> red_shift) & red_mask)#define S2LG(x,y) ((S2L(x,y) >> green_shift) & green_mask)#define S2LB(x,y) ((S2L(x,y) >> blue_shift) & blue_mask)#define S3LR(x,y) ((S3L(x,y) >> red_shift) & red_mask)#define S3LG(x,y) ((S3L(x,y) >> green_shift) & green_mask)#define S3LB(x,y) ((S3L(x,y) >> blue_shift) & blue_mask)#define S4LR(x,y) ((S4L(x,y) >> red_shift) & red_mask)#define S4LG(x,y) ((S4L(x,y) >> green_shift) & green_mask)#define S4LB(x,y) ((S4L(x,y) >> blue_shift) & blue_mask)#define S1MR(x,y) ((S1M(x,y) >> red_shift) & red_mask)#define S1MG(x,y) ((S1M(x,y) >> green_shift) & green_mask)#define S1MB(x,y) ((S1M(x,y) >> blue_shift) & blue_mask)#define S2MR(x,y) ((S2M(x,y) >> red_shift) & red_mask)#define S2MG(x,y) ((S2M(x,y) >> green_shift) & green_mask)#define S2MB(x,y) ((S2M(x,y) >> blue_shift) & blue_mask)#define S3MR(x,y) ((S3M(x,y) >> red_shift) & red_mask)#define S3MG(x,y) ((S3M(x,y) >> green_shift) & green_mask)#define S3MB(x,y) ((S3M(x,y) >> blue_shift) & blue_mask)#define S4MR(x,y) ((S4M(x,y) >> red_shift) & red_mask)#define S4MG(x,y) ((S4M(x,y) >> green_shift) & green_mask)#define S4MB(x,y) ((S4M(x,y) >> blue_shift) & blue_mask)int n, m, f, g;int G[3][5] = { {G11, G21, G31, G41, G51}, {G12, G22, G32, G42, G52}, {G13, G23, G33, G43, G53}};red = 0;green = 0;blue = 0;if (byte_order == MSBFirst) { if (rgb_order == RedFirst) { switch (bytes_per_pixel) { case 1: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S1MR (f, g - 1) + S1MR (f, g) + S1MR (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S1MG (f, g - 1) + S1MG (f, g) + S1MG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S1MB (f, g - 1) + S1MB (f, g) + S1MB (f, g + 1)) * G[n][m])); break; case 2: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S2MR (f, g - 1) + S2MR (f, g) + S2MR (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S2MG (f, g - 1) + S2MG (f, g) + S2MG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S2MB (f, g - 1) + S2MB (f, g) + S2MB (f, g + 1)) * G[n][m])); break; case 3: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S3MR (f, g - 1) + S3MR (f, g) + S3MR (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S3MG (f, g - 1) + S3MG (f, g) + S3MG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S3MB (f, g - 1) + S3MB (f, g) + S3MB (f, g + 1)) * G[n][m])); break; case 4: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S4MR (f, g - 1) + S4MR (f, g) + S4MR (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S4MG (f, g - 1) + S4MG (f, g) + S4MG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S4MB (f, g - 1) + S4MB (f, g) + S4MB (f, g + 1)) * G[n][m])); break; } } else { switch (bytes_per_pixel) { case 1: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S1MB (f, g - 1) + S1MB (f, g) + S1MB (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S1MG (f, g - 1) + S1MG (f, g) + S1MG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S1MR (f, g - 1) + S1MR (f, g) + S1MR (f, g + 1)) * G[n][m])); break; case 2: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S2MB (f, g - 1) + S2MB (f, g) + S2MB (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S2MG (f, g - 1) + S2MG (f, g) + S2MG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S2MR (f, g - 1) + S2MR (f, g) + S2MR (f, g + 1)) * G[n][m])); break; case 3: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S3MB (f, g - 1) + S3MB (f, g) + S3MB (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S3MG (f, g - 1) + S3MG (f, g) + S3MG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S3MR (f, g - 1) + S3MR (f, g) + S3MR (f, g + 1)) * G[n][m])); break; case 4: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S4MB (f, g - 1) + S4MB (f, g) + S4MB (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S4MG (f, g - 1) + S4MG (f, g) + S4MG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S4MR (f, g - 1) + S4MR (f, g) + S4MR (f, g + 1)) * G[n][m])); break; } }} else { if (rgb_order == RedFirst) { switch (bytes_per_pixel) { case 1: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S1LR (f, g - 1) + S1LR (f, g) + S1LR (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S1LG (f, g - 1) + S1LG (f, g) + S1LG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S1LB (f, g - 1) + S1LB (f, g) + S1LB (f, g + 1)) * G[n][m])); break; case 2: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S2LR (f, g - 1) + S2LR (f, g) + S2LR (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S2LG (f, g - 1) + S2LG (f, g) + S2LG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S2LB (f, g - 1) + S2LB (f, g) + S2LB (f, g + 1)) * G[n][m])); break; case 3: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S3LR (f, g - 1) + S3LR (f, g) + S3LR (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S3LG (f, g - 1) + S3LG (f, g) + S3LG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S3LB (f, g - 1) + S3LB (f, g) + S3LB (f, g + 1)) * G[n][m])); break; case 4: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S4LR (f, g - 1) + S4LR (f, g) + S4LR (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S4LG (f, g - 1) + S4LG (f, g) + S4LG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S4LB (f, g - 1) + S4LB (f, g) + S4LB (f, g + 1)) * G[n][m])); break; } } else { switch (bytes_per_pixel) { case 1: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S1LB (f, g - 1) + S1LB (f, g) + S1LB (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S1LG (f, g - 1) + S1LG (f, g) + S1LG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S1LR (f, g - 1) + S1LR (f, g) + S1LR (f, g + 1)) * G[n][m])); break; case 2: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S2LB (f, g - 1) + S2LB (f, g) + S2LB (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S2LG (f, g - 1) + S2LG (f, g) + S2LG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S2LR (f, g - 1) + S2LR (f, g) + S2LR (f, g + 1)) * G[n][m])); break; case 3: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S3LB (f, g - 1) + S3LB (f, g) + S3LB (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S3LG (f, g - 1) + S3LG (f, g) + S3LG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S3LR (f, g - 1) + S3LR (f, g) + S3LR (f, g + 1)) * G[n][m])); break; case 4: for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) blue += (((S4LB (f, g - 1) + S4LB (f, g) + S4LB (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) green += (((S4LG (f, g - 1) + S4LG (f, g) + S4LG (f, g + 1)) * G[n][m])); i++; for (n = 0, g = j - 3; g <= j + 3; g += 3, n++) for (m = 0, f = i - 2; f <= i + 2; f++, m++) red += (((S4LR (f, g - 1) + S4LR (f, g) + S4LR (f, g + 1)) * G[n][m])); break; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -