使用python将标量值指定为图像的少数主色的“RGB”

时间:2015-11-19 02:48:31

标签: python arrays image colors data-conversion

我的图像由一些离散的颜色组成,如绿色,蓝色,红色,黄色,海军蓝。我想阅读这个图像,并创建一个具有以下两个属性的数组:

  1. 每种离散颜色的一个数值,
  2. 阵列的每个轴的大小与图像尺寸成比例(大约)。
  3. P.S。:我在阅读图像方面遇到的所有问题都与rgb /像素有关。如果问题的目标被颠倒过来,This只是一个有用的问题,在这种情况下它可能与我提出的问题类似。

2 个答案:

答案 0 :(得分:1)

不确定这是否接近你想要的,但如果我使用安装在大多数Linux发行版上并可用于OSX和Windows的ImageMagick,我可以在终端中运行此命令:

convert image.png -alpha off -colors 6 -sample 50x20! result.png

enter image description here

而且,如果我要求输出文本而不是图像,我会得到这个:

convert image.png -alpha off -colors 6 -sample 50x20! txt:

# ImageMagick pixel enumeration: 50,20,255,srgb
0,0: (47517,15011,17755)  #B93A45  srgb(185,58,69)
1,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
2,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
3,0: (52533,46293,16329)  #CCB440  srgb(204,180,64)
4,0: (52533,46293,16329)  #CCB440  srgb(204,180,64)
5,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
6,0: (47517,15011,17755)  #B93A45  srgb(185,58,69)
7,0: (52533,46293,16329)  #CCB440  srgb(204,180,64)
8,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
9,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
10,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
11,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
12,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
13,0: (52533,46293,16329)  #CCB440  srgb(204,180,64)
14,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
15,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
16,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
17,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
18,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
19,0: (52533,46293,16329)  #CCB440  srgb(204,180,64)
20,0: (47517,15011,17755)  #B93A45  srgb(185,58,69)
21,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
22,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
23,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
24,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
25,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
26,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
27,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
28,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
29,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
30,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
31,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
32,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
33,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
34,0: (47517,15011,17755)  #B93A45  srgb(185,58,69)
35,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
36,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
37,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
38,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
39,0: (47517,15011,17755)  #B93A45  srgb(185,58,69)
40,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
41,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
42,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
43,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
44,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
45,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
46,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
47,0: (17144,20406,18979)  #434F4A  srgb(67,79,74)
48,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
49,0: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
0,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
1,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
2,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
3,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
4,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
5,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
6,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
7,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
8,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
9,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
10,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
11,1: (17144,20406,18979)  #434F4A  srgb(67,79,74)
12,1: (17144,20406,18979)  #434F4A  srgb(67,79,74)
13,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
14,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
15,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
16,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
17,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
18,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
19,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
20,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
21,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
22,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
23,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
24,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
25,1: (17144,20406,18979)  #434F4A  srgb(67,79,74)
26,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
27,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
28,1: (17144,20406,18979)  #434F4A  srgb(67,79,74)
29,1: (17144,20406,18979)  #434F4A  srgb(67,79,74)
30,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
31,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
32,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
33,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
34,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
35,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
36,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
37,1: (17144,20406,18979)  #434F4A  srgb(67,79,74)
38,1: (17144,20406,18979)  #434F4A  srgb(67,79,74)
39,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
40,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
41,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
42,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
43,1: (17144,20406,18979)  #434F4A  srgb(67,79,74)
44,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
45,1: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
46,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
47,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
48,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
49,1: (52533,46293,16329)  #CCB440  srgb(204,180,64)
0,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
1,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
2,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
3,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
4,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
5,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
6,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
7,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
8,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
9,2: (47517,15011,17755)  #B93A45  srgb(185,58,69)
10,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
11,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
12,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
13,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
14,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
15,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
16,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
17,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
18,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
19,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
20,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
21,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
22,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
23,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
24,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
25,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
26,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
27,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
28,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
29,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
30,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
31,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
32,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
33,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
34,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
35,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
36,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
37,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
38,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
39,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
40,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
41,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
42,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
43,2: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
44,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
45,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
46,2: (17144,20406,18979)  #434F4A  srgb(67,79,74)
47,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
48,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
49,2: (52533,46293,16329)  #CCB440  srgb(204,180,64)
0,3: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
1,3: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
...
...
46,18: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
47,18: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
48,18: (17144,20406,18979)  #434F4A  srgb(67,79,74)
49,18: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
0,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
1,19: (52533,46293,16329)  #CCB440  srgb(204,180,64)
2,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
3,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
4,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
5,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
6,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
7,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
8,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
9,19: (52533,46293,16329)  #CCB440  srgb(204,180,64)
10,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
11,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
12,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
13,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
14,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
15,19: (47517,15011,17755)  #B93A45  srgb(185,58,69)
16,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
17,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
18,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
19,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
20,19: (47517,15011,17755)  #B93A45  srgb(185,58,69)
21,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
22,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
23,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
24,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
25,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
26,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
27,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
28,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
29,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
30,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
31,19: (47517,15011,17755)  #B93A45  srgb(185,58,69)
32,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
33,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
34,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
35,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
36,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
37,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
38,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
39,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
40,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
41,19: (52533,46293,16329)  #CCB440  srgb(204,180,64)
42,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
43,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
44,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
45,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
46,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
47,19: (17144,20406,18979)  #434F4A  srgb(67,79,74)
48,19: (50918,44309,39507)  #C6AC9A  srgb(198,172,154)
49,19: (52533,46293,16329)  #CCB440  srgb(204,180,64)

也许这会让你开始......

-median 7之后添加-colors 6会稍微减少小的"嘈杂" 补丁。

convert image.png -alpha off -colors 6 -median 7 -sample 50x20! result.png

enter image description here

请注意,ImageMagick也有Python绑定。

另一种选择可能是制作您想要识别的6种颜色的小色板,如下所示:

convert xc:"rgb(255,230,11)" xc:"rgb(16,128,90)" xc:"rgb(200,160,120)" xc:"rgb(200,0,40)" xc:"rgb(18,140,190)" xc:"rgb(14,17,116)"  +append swatch.png

然后告诉ImageMagick将图像中的所有颜色映射到样本:

convert image.png -quantize sRGB -alpha off -remap swatch.png  -sample 50x20! result.png

enter image description here

如果你想要使用颜色的调色板,在末尾添加-verbose info:而不是输出图像名称,那么你将得到这个 - 看看最后6行 - 它们显示颜色的索引:< / p>

convert image.png -alpha off -colors 6 -sample 50x20! -type palette -verbose info:

Image: image.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 50x20+0+0
  Resolution: 59.05x59.05
  Print size: 0.84674x0.338696
  Units: PixelsPerCentimeter
  Type: Palette
  Base type: Palette
  Endianess: Undefined
  Colorspace: sRGB
  Depth: 8/16-bit
  Channel depth:
    red: 16-bit
    green: 16-bit
    blue: 16-bit
  Channel statistics:
    Pixels: 1000
    Red:
      min: 2 (0.00935378)
      max: 204 (0.801602)
      mean: 114.15 (0.447646)
      standard deviation: 85.674 (0.335977)
      kurtosis: -1.77949
      skewness: -0.174985
      entropy: 0.994611
    Green:
      min: 58 (0.229053)
      max: 180 (0.706386)
      mean: 127.02 (0.498117)
      standard deviation: 45.2218 (0.17734)
      kurtosis: -1.4666
      skewness: -0.2851
      entropy: 0.994611
    Blue:
      min: 64 (0.249165)
      max: 175 (0.687266)
      mean: 107.26 (0.420626)
      standard deviation: 43.1734 (0.169307)
      kurtosis: -1.48194
      skewness: 0.477601
      entropy: 0.994611
  Image statistics:
    Overall:
      min: 2 (0.00935378)
      max: 204 (0.801602)
      mean: 116.143 (0.455463)
      standard deviation: 61.2345 (0.240135)
      kurtosis: -1.14278
      skewness: -0.180352
      entropy: 0.994611
  Colors: 6
  Histogram:
       146: (  2,144,105) #029069 srgb(2,144,105)
       150: ( 10,125,175) #0A7DAF srgb(10,125,175)
       199: ( 67, 79, 74) #434F4A srgb(67,79,74)
       148: (185, 58, 69) #B93A45 srgb(185,58,69)
       200: (198,172,154) #C6AC9A srgb(198,172,154)
       157: (204,180, 64) #CCB440 srgb(204,180,64)
  Colormap entries: 6
  Colormap:
         0: ( 67, 79, 74) #434F4A srgb(67,79,74)      <--- index 0 in palette
         1: (185, 58, 69) #B93A45 srgb(185,58,69)     <--- index 1 in palette
         2: (  2,144,105) #029069 srgb(2,144,105)
         3: (204,180, 64) #CCB440 srgb(204,180,64)
         4: (198,172,154) #C6AC9A srgb(198,172,154)
         5: ( 10,125,175) #0A7DAF srgb(10,125,175)    <--- last palette entry

答案 1 :(得分:1)

我的另一个答案是变得有点太长了,我想要分享一些更多的想法...把这个答案看作是另一个之前的预处理步骤。

如果您在HSL颜色空间中转换图像,请执行以下操作:

convert image.png -colorspace hsl -separate hsl.png

您将在文件hsl-0.png中获取Hue,如下所示:

enter image description here

和文件hsl-1.png中的饱和度如下:

enter image description here

你可以看到,饱和的红色,绿色,蓝色和黄色的饱和度图像更亮,而棕色是你不感兴趣的颜色更深。你还可以看到颜色在色调图像。这让我想到使用饱和度通道作为遮罩,将Hue通道分成颜色......

convert image.png -colorspace hsl -channel s -threshold 80% -channel h -colors 12 -colorspace rgb result.png

enter image description here

或者,从原始图片开始,您可以直接使用:

convert image.png -fx "u.saturation>0.8?u:0" -median 3 result.png

enter image description here

您可以将-median 3增加到5以删除更多斑点。

所以,我想说我目前最好的拍摄方法如下:

# Make a swatch of the colours want in the output image
convert xc:black xc:"rgb(255,230,11)" xc:"rgb(16,128,90)" xc:"rgb(200,0,40)" xc:"rgb(18,140,190)" xc:"rgb(14,17,116)"  +append swatch.png

# Clean up image using Saturation to select coloured areas, median to reduce speckles, then remap to swatch created above and resample down to 50x20
convert image.png -fx "u.saturation>0.8?u:0" -median 3 -remap swatch.png -sample 50x20! result.png

enter image description here

现在打印调色板索引 - 这就是你实际要求的内容 - 我知道如何在PHP中轻松完成这项工作:

#!/usr/local/bin/php
<?php
// Read in a palettised image
$im = imagecreatefrompng("result.png");

for ($r = 0; $r < imagesy($im); $r++) {
    printf("Row %d: ",$r);
    for ($c = 0; $c < imagesx($im); $c++) {
        $pixel = imagecolorat($im, $c, $r);
        $index = $pixel & 0xFF;
        printf("%d ",$index);
    }
    printf("\n");
}
?>

<强>输出

Row 0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 1: 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0
Row 3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 1 1 1 1 1
Row 4: 0 1 1 1 1 2 1 3 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 2 2 0 0 2 0 1 0 0 0 4 0
Row 5: 0 2 2 2 2 2 2 2 2 2 0 0 4 5 2 2 5 2 5 2 2 2 2 2 2 2 2 2 5 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 2 2
Row 6: 0 2 2 2 2 2 2 2 2 2 5 2 2 2 2 2 2 2 2 2 2 2 5 2 2 5 2 2 5 5 2 4 4 2 5 2 5 2 5 2 2 2 2 2 2 2 2 2 2 2
Row 7: 0 0 0 2 0 0 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 0 2 0 2 2 5 2 2 2 2 5 5 2 5 5
Row 8: 0 2 2 2 2 2 2 2 2 2 2 2 2 2 5 5 2 5 5 5 2 5 2 2 2 2 5 2 5 5 5 2 5 5 2 2 2 2 2 2 2 2 2 2 2 2 5 5 5 4
Row 9: 0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
Row 10: 0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 0 0 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
Row 11: 0 4 0 0 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 1 3 3 3 3 0 0 0 0 0 4 0 2 5 5 5 5 5 5 5 5 0 0 5 2 5 5
Row 12: 0 1 1 1 1 1 0 3 3 1 3 1 3 3 3 3 1 3 3 3 3 3 5 3 3 3 5 3 3 3 3 0 0 4 0 0 0 3 3 5 3 1 3 5 3 3 3 3 3 3
Row 13: 0 3 3 1 1 1 3 3 3 3 3 3 3 3 3 0 2 0 0 0 0 0 5 0 5 0 3 3 3 3 3 3 3 3 3 3 3 3 1 3 3 3 3 3 3 3 3 3 3 5
Row 14: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 0 0 0 3 3 3 3 3 3 3 3 0 0 0
Row 15: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 0 0 0 0 0 0 0 0 0 4 0 0 0
Row 16: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 17: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 18: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4
Row 19: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0