【问题标题】:Divide image into blocks将图像分成块
【发布时间】:2016-11-09 23:24:12
【问题描述】:

我正在使用代码列出具有重要信息的图像像素以供以后使用 - 红色、绿色、蓝色、X、Y。

import numpy as np
from scipy.misc import imread

im = imread("image.jpg") 

indices = np.dstack(np.indices((im.shape[:2])))
data = np.concatenate((im, indices), axis=-1)
print data

打印数据:

        R   G   B    X   Y
    [[[237 233 234   0   0]
      [235 231 232   0   1]
      [243 234 237   0   2]
      ..., 
      [236 232 233   0 507]
      [233 229 230   0 508]
      [236 232 233   0 509]]

但它打印整个图像数据,而不是块。如何以 2x2 块的形式获取这些数据,块中的 4 个像素信息?像这样:

    R   G   B    X   Y
[[[237 233 234   0   0]
  [235 231 232   0   1]
  [243 234 237   0   2]
  [243 234 257   0   3]]

【问题讨论】:

  • 2x2 块具有以下索引 X = [0, 0, 1, 1],Y = [0, 1, 1, 0]。而不是你提到的
  • 或者 X = [0, 0, 1, 1], Y = [0, 1, 0, 1]
  • 而且输出是 4d,因为图像中的每个 2x2 块都有 4x5 矩阵。

标签: python numpy image-processing scipy


【解决方案1】:

将以下内容添加到您的代码中:

a = data[::2, ::2, :]
b = data[::2, 1::2, :]
c = data[1::2, ::2, :]
d = data[1::2, 1::2, :]
e = np.stack([a, b, c, d], axis=3)
print(e)

使用我的图片:

     R    G    B     X    Y
[[[  47  124  206    0    0]
  [  52  124  206    0    1]
  [  53  126  205    0    2]
  ..., 
  [  74  129  211    0 1021]
  [  73  130  211    0 1022]
  [  69  132  211    0 1023]]

 [[  47  124  206    1    0]
  [  51  123  205    1    1]
  [  53  126  205    1    2]
  ..., 
  [  75  130  212    1 1021]
  [  73  130  211    1 1022]
  [  69  130  210    1 1023]] ...

转向:

[[[[  47   52   47   51]   R
   [ 124  124  124  123]   G
   [ 206  206  206  205]   B
   [   0    0    1    1]   X
   [   0    1    0    1]]  Y

  [[  53   58   53   58]   R
   [ 126  125  126  125]   G
   [ 205  204  205  204]   B
   [   0    0    1    1]   X
   [   2    3    2    3]]  Y

  [[  64   71   64   70]   R
   [ 127  126  127  127]   G
   [ 206  208  206  208]   B
   [   0    0    1    1]   X
   [   4    5    4    5]]  Y

  ..., 

【讨论】:

  • 感谢 Ophir,它似乎完全符合我的需要,请您检查一下我是否正确理解输出前 3 个值 R、G、B 代表第 4 个值?底部条目是 X 和 Y? R G B ? [[237 235 238 237] [233 231 234 233] [234 232 235 234] [ 0 0 1 1] X [ 0 1 0 1]] Y R G B ? [[243 240 244 240] [234 231 235 231] [237 234 238 234] [ 0 0 1 1] X [ 2 3 2 3]] Y
猜你喜欢
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 2014-04-11
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多