[Numpy-discussion] confusion about eigenvector
devnew at gmail.com
devnew at gmail.com
Thu Mar 6 09:39:56 EST 2008
ok..I coded everything again from scratch..looks like i was having a
problem with matrix class
when i used a matrix for facespace
facespace=sortedeigenvectorsmatrix * adjustedfacematrix
and trying to convert the row to an image (eigenface).
by
make_simple_image(facespace[x],"eigenimage_x.jpg",(imgwdth,imght))
.i was getting black images instead of eigenface images.
def make_simple_image(v, filename,imsize):
v.shape=(-1,) #change to 1 dim array
im = Image.new('L', imsize)
im.putdata(v)
im.save(filename)
i made it an array instead of matrix
make_simple_image(asarray(facespace[x]),"eigenimage_x.jpg",
(imgwdth,imght))
this produces eigenface images
another observation,
the eigenface images obtained are too dark,unlike the eigenface images
generated by Arnar's code.so i examined the elements of the facespace
row
sample rows:
[ -82.35294118, -82.88235294, -91.58823529 ,..., -66.47058824,
-68.23529412, -60.76470588]
..
[ 89.64705882 82.11764706 79.41176471 ..., 172.52941176
170.76470588 165.23529412]
looks like these are signed ints..
i used another make_image() function that converts the elements
def make_image(v, filename,imsize):
v.shape = (-1,) #change to 1 dim array
a, b = v.min(), v.max()
span = max(abs(b), abs(a))
im = Image.new('L', imsize)
im.putdata((v * 127. / span) + 128)
im.save(filename)
This function makes clearer images..i think the calculations convert
the elements to unsigned 8-bit values (as pointed out by Robin in
another posting..) ,i am wondering if there is a more direct way to
get clearer pics out of the facespace row elements
More information about the NumPy-Discussion
mailing list