首页 > 解决方案 > 如何从图像像素阵列创建平均 rgb 向量?

问题描述

我有一张图像,我想将其分成 30 像素 x 30 像素的块。然后,我想平均每个像素的 r、g 和 b 值。因此,例如,一个 900 像素 x 900 像素的块将分成 900 个块(每个块 30 像素 x 30 像素)。然后我想取每个块中 r、g 和 b 值的平均值。最后,我想要一个由 900 个三维向量组成的数组,每个向量代表各自块的平均 r、g、b 值。

我尝试使用 numpy 和枕头来分解块,但我似乎没有正确拼接我的像素阵列。

import numpy as np
from PIL import Image

item_image = Image.open("1.jpg")
pixel_array = np.asarray(item_image)
width, height = item_image.size
blocks = []

BLOCK_WIDTH = 30
BLOCK_HEIGHT = 30

row_start = 0
row_end = BLOCK_HEIGHT
column_start = 0
column_end = BLOCK_WIDTH
print(len(pixel_array))
while row_end < height:
  while column_end < width:
    row = slice(row_start, row_end)
    col = slice(column_start, column_end)
    blocks.append(pixel_array[ row , col ])
    column_start += BLOCK_WIDTH
    column_end += BLOCK_WIDTH
  row_start += BLOCK_HEIGHT
  row_end += BLOCK_HEIGHT

averaged_blocks = []

for i in range(BLOCK_HEIGHT):
  for j in range(BLOCK_WIDTH):
    averaged_blocks.append(np.mean(blocks[i][j], axis = 0))


我在处理图像方面还很陌生,所以如果有人有任何建议或建议,我将不胜感激!

标签: pythonnumpypython-imaging-library

解决方案


这在 Imagemagick 中非常简单。您需要做的就是将图像缩小到 30x30 像素。比例平均 30x30 非重叠像素的块。(或使用 -filter box -resize 代替 -scale)。然后只需使用 txt: 输出格式列出生成的图像的像素值。

创建 900x900 像素的水平渐变:

convert -size 900x900 gradient: -rotate 90 grad.png


在此处输入图像描述

缩放图像并列出每个像素:

 convert grad.png -scale 30x30 txt:

# ImageMagick pixel enumeration: 30,30,65535,gray

coords:  (16-bit rgb values) hex values   percent

0,0: (1057,0,64478)  #04210000FBDE  srgb(2%,0%,98%)
1,0: (3244,0,62291)  #0CAC0000F353  srgb(5%,0%,95%)
2,0: (5431,0,60104)  #15370000EAC8  srgb(8%,0%,92%)
3,0: (7618,0,57917)  #1DC20000E23D  srgb(12%,0%,88%)
4,0: (9805,0,55730)  #264D0000D9B2  srgb(15%,0%,85%)
5,0: (11992,0,53543)  #2ED80000D127  srgb(18%,0%,82%)
6,0: (14179,0,51356)  #37630000C89C  srgb(22%,0%,78%)
7,0: (16366,0,49169)  #3FEE0000C011  srgb(25%,0%,75%)
8,0: (18552,0,46983)  #48780000B787  srgb(28%,0%,72%)
9,0: (20739,0,44796)  #51030000AEFC  srgb(32%,0%,68%)
10,0: (22926,0,42609)  #598E0000A671  srgb(35%,0%,65%)
11,0: (25113,0,40422)  #621900009DE6  srgb(38%,0%,62%)
12,0: (27300,0,38235)  #6AA40000955B  srgb(42%,0%,58%)
13,0: (29487,0,36048)  #732F00008CD0  srgb(45%,0%,55%)
14,0: (31674,0,33861)  #7BBA00008445  srgb(48%,0%,52%)
15,0: (33861,0,31674)  #844500007BBA  srgb(52%,0%,48%)
16,0: (36048,0,29487)  #8CD00000732F  srgb(55%,0%,45%)
17,0: (38235,0,27300)  #955B00006AA4  srgb(58%,0%,42%)
18,0: (40422,0,25113)  #9DE600006219  srgb(62%,0%,38%)
19,0: (42609,0,22926)  #A6710000598E  srgb(65%,0%,35%)
20,0: (44796,0,20739)  #AEFC00005103  srgb(68%,0%,32%)
21,0: (46983,0,18552)  #B78700004878  srgb(72%,0%,28%)
22,0: (49169,0,16366)  #C01100003FEE  srgb(75%,0%,25%)
23,0: (51356,0,14179)  #C89C00003763  srgb(78%,0%,22%)
24,0: (53543,0,11992)  #D12700002ED8  srgb(82%,0%,18%)
25,0: (55730,0,9805)  #D9B20000264D  srgb(85%,0%,15%)
26,0: (57917,0,7618)  #E23D00001DC2  srgb(88%,0%,12%)
27,0: (60104,0,5431)  #EAC800001537  srgb(92%,0%,8%)
28,0: (62291,0,3244)  #F35300000CAC  srgb(95%,0%,5%)
29,0: (64478,0,1057)  #FBDE00000421  srgb(98%,0%,2%)
0,1: (1057,0,64478)  #04210000FBDE  srgb(2%,0%,98%)
1,1: (3244,0,62291)  #0CAC0000F353  srgb(5%,0%,95%)
2,1: (5431,0,60104)  #15370000EAC8  srgb(8%,0%,92%)
3,1: (7618,0,57917)  #1DC20000E23D  srgb(12%,0%,88%)
4,1: (9805,0,55730)  #264D0000D9B2  srgb(15%,0%,85%)
5,1: (11992,0,53543)  #2ED80000D127  srgb(18%,0%,82%)
6,1: (14179,0,51356)  #37630000C89C  srgb(22%,0%,78%)
7,1: (16366,0,49169)  #3FEE0000C011  srgb(25%,0%,75%)
8,1: (18552,0,46983)  #48780000B787  srgb(28%,0%,72%)
9,1: (20739,0,44796)  #51030000AEFC  srgb(32%,0%,68%)
10,1: (22926,0,42609)  #598E0000A671  srgb(35%,0%,65%)
11,1: (25113,0,40422)  #621900009DE6  srgb(38%,0%,62%)
12,1: (27300,0,38235)  #6AA40000955B  srgb(42%,0%,58%)
13,1: (29487,0,36048)  #732F00008CD0  srgb(45%,0%,55%)
14,1: (31674,0,33861)  #7BBA00008445  srgb(48%,0%,52%)
15,1: (33861,0,31674)  #844500007BBA  srgb(52%,0%,48%)
16,1: (36048,0,29487)  #8CD00000732F  srgb(55%,0%,45%)
17,1: (38235,0,27300)  #955B00006AA4  srgb(58%,0%,42%)
18,1: (40422,0,25113)  #9DE600006219  srgb(62%,0%,38%)
19,1: (42609,0,22926)  #A6710000598E  srgb(65%,0%,35%)
20,1: (44796,0,20739)  #AEFC00005103  srgb(68%,0%,32%)
21,1: (46983,0,18552)  #B78700004878  srgb(72%,0%,28%)
22,1: (49169,0,16366)  #C01100003FEE  srgb(75%,0%,25%)
23,1: (51356,0,14179)  #C89C00003763  srgb(78%,0%,22%)
24,1: (53543,0,11992)  #D12700002ED8  srgb(82%,0%,18%)
25,1: (55730,0,9805)  #D9B20000264D  srgb(85%,0%,15%)
26,1: (57917,0,7618)  #E23D00001DC2  srgb(88%,0%,12%)
27,1: (60104,0,5431)  #EAC800001537  srgb(92%,0%,8%)
28,1: (62291,0,3244)  #F35300000CAC  srgb(95%,0%,5%)
29,1: (64478,0,1057)  #FBDE00000421  srgb(98%,0%,2%)
.
.
.
0,28: (1057,0,64478)  #04210000FBDE  srgb(2%,0%,98%)
1,28: (3244,0,62291)  #0CAC0000F353  srgb(5%,0%,95%)
2,28: (5431,0,60104)  #15370000EAC8  srgb(8%,0%,92%)
3,28: (7618,0,57917)  #1DC20000E23D  srgb(12%,0%,88%)
4,28: (9805,0,55730)  #264D0000D9B2  srgb(15%,0%,85%)
5,28: (11992,0,53543)  #2ED80000D127  srgb(18%,0%,82%)
6,28: (14179,0,51356)  #37630000C89C  srgb(22%,0%,78%)
7,28: (16366,0,49169)  #3FEE0000C011  srgb(25%,0%,75%)
8,28: (18552,0,46983)  #48780000B787  srgb(28%,0%,72%)
9,28: (20739,0,44796)  #51030000AEFC  srgb(32%,0%,68%)
10,28: (22926,0,42609)  #598E0000A671  srgb(35%,0%,65%)
11,28: (25113,0,40422)  #621900009DE6  srgb(38%,0%,62%)
12,28: (27300,0,38235)  #6AA40000955B  srgb(42%,0%,58%)
13,28: (29487,0,36048)  #732F00008CD0  srgb(45%,0%,55%)
14,28: (31674,0,33861)  #7BBA00008445  srgb(48%,0%,52%)
15,28: (33861,0,31674)  #844500007BBA  srgb(52%,0%,48%)
16,28: (36048,0,29487)  #8CD00000732F  srgb(55%,0%,45%)
17,28: (38235,0,27300)  #955B00006AA4  srgb(58%,0%,42%)
18,28: (40422,0,25113)  #9DE600006219  srgb(62%,0%,38%)
19,28: (42609,0,22926)  #A6710000598E  srgb(65%,0%,35%)
20,28: (44796,0,20739)  #AEFC00005103  srgb(68%,0%,32%)
21,28: (46983,0,18552)  #B78700004878  srgb(72%,0%,28%)
22,28: (49169,0,16366)  #C01100003FEE  srgb(75%,0%,25%)
23,28: (51356,0,14179)  #C89C00003763  srgb(78%,0%,22%)
24,28: (53543,0,11992)  #D12700002ED8  srgb(82%,0%,18%)
25,28: (55730,0,9805)  #D9B20000264D  srgb(85%,0%,15%)
26,28: (57917,0,7618)  #E23D00001DC2  srgb(88%,0%,12%)
27,28: (60104,0,5431)  #EAC800001537  srgb(92%,0%,8%)
28,28: (62291,0,3244)  #F35300000CAC  srgb(95%,0%,5%)
29,28: (64478,0,1057)  #FBDE00000421  srgb(98%,0%,2%)
0,29: (1057,0,64478)  #04210000FBDE  srgb(2%,0%,98%)
1,29: (3244,0,62291)  #0CAC0000F353  srgb(5%,0%,95%)
2,29: (5431,0,60104)  #15370000EAC8  srgb(8%,0%,92%)
3,29: (7618,0,57917)  #1DC20000E23D  srgb(12%,0%,88%)
4,29: (9805,0,55730)  #264D0000D9B2  srgb(15%,0%,85%)
5,29: (11992,0,53543)  #2ED80000D127  srgb(18%,0%,82%)
6,29: (14179,0,51356)  #37630000C89C  srgb(22%,0%,78%)
7,29: (16366,0,49169)  #3FEE0000C011  srgb(25%,0%,75%)
8,29: (18552,0,46983)  #48780000B787  srgb(28%,0%,72%)
9,29: (20739,0,44796)  #51030000AEFC  srgb(32%,0%,68%)
10,29: (22926,0,42609)  #598E0000A671  srgb(35%,0%,65%)
11,29: (25113,0,40422)  #621900009DE6  srgb(38%,0%,62%)
12,29: (27300,0,38235)  #6AA40000955B  srgb(42%,0%,58%)
13,29: (29487,0,36048)  #732F00008CD0  srgb(45%,0%,55%)
14,29: (31674,0,33861)  #7BBA00008445  srgb(48%,0%,52%)
15,29: (33861,0,31674)  #844500007BBA  srgb(52%,0%,48%)
16,29: (36048,0,29487)  #8CD00000732F  srgb(55%,0%,45%)
17,29: (38235,0,27300)  #955B00006AA4  srgb(58%,0%,42%)
18,29: (40422,0,25113)  #9DE600006219  srgb(62%,0%,38%)
19,29: (42609,0,22926)  #A6710000598E  srgb(65%,0%,35%)
20,29: (44796,0,20739)  #AEFC00005103  srgb(68%,0%,32%)
21,29: (46983,0,18552)  #B78700004878  srgb(72%,0%,28%)
22,29: (49169,0,16366)  #C01100003FEE  srgb(75%,0%,25%)
23,29: (51356,0,14179)  #C89C00003763  srgb(78%,0%,22%)
24,29: (53543,0,11992)  #D12700002ED8  srgb(82%,0%,18%)
25,29: (55730,0,9805)  #D9B20000264D  srgb(85%,0%,15%)
26,29: (57917,0,7618)  #E23D00001DC2  srgb(88%,0%,12%)
27,29: (60104,0,5431)  #EAC800001537  srgb(92%,0%,8%)
28,29: (62291,0,3244)  #F35300000CAC  srgb(95%,0%,5%)
29,29: (64478,0,1057)  #FBDE00000421  srgb(98%,0%,2%)

推荐阅读