PIL: Criar histograma unidimensional da luminosidade da cor da imagem?

Eu tenho trabalhado em um script e preciso basicamente dele:

Faça a imagem em escala de cinza (ou bitonal, vou brincar com os dois para ver qual funciona melhor).Processe cada coluna individual e crie um valor de intensidade líquida para cada coluna.Coloque os resultados em uma lista ordenada.

Existe uma maneira muito fácil de fazer isso com o ImageMagick (embora você precise de alguns utilitários do Linux para processar o texto de saída), mas não estou realmente vendo como fazer isso com Python e PIL.

Aqui está o que eu tenho até agora:

from PIL import Image

image_file = 'test.tiff'

image = Image.open(image_file).convert('L')

histo = image.histogram()
histo_string = ''

for i in histo:
  histo_string += str(i) + "\n"

print(histo_string)

Isso gera algo (estou olhando para representar graficamente os resultados), mas não se parece em nada com a saída do ImageMagick. Estou usando isso para detectar a costura e o conteúdo de um livro digitalizado.

Obrigado a quem ajuda!

Eu tenho uma solução (desagradável) que funciona, por enquanto:

from PIL import Image
import numpy

def smoothListGaussian(list,degree=5):
  window=degree*2-1
  weight=numpy.array([1.0]*window)
  weightGauss=[]

  for i in range(window):
    i=i-degree+1
    frac=i/float(window)
    gauss=1/(numpy.exp((4*(frac))**2))
    weightGauss.append(gauss)

  weight=numpy.array(weightGauss)*weight
  smoothed=[0.0]*(len(list)-window)

  for i in range(len(smoothed)):
    smoothed[i]=sum(numpy.array(list[i:i+window])*weight)/sum(weight)

  return smoothed

image_file = 'verypurple.jpg'
out_file = 'out.tiff'

image = Image.open(image_file).convert('1')
image2 = image.load()
image.save(out_file)

intensities = []

for x in xrange(image.size[0]):
  intensities.append([])

  for y in xrange(image.size[1]):
    intensities[x].append(image2[x, y] )

plot = []

for x in xrange(image.size[0]):
  plot.append(0)

  for y in xrange(image.size[1]):
    plot[x] += intensities[x][y]

plot = smoothListGaussian(plot, 10)

plot_str = ''

for x in range(len(plot)):
  plot_str += str(plot[x]) + "\n"

print(plot_str)

questionAnswers(2)

yourAnswerToTheQuestion