On Mon, May 4, 2009 at 7:00 AM, <josef.p...@gmail.com> wrote: > On Mon, May 4, 2009 at 12:31 AM, Chris Colbert <sccolb...@gmail.com> > wrote: > > this actually sort of worked. Thanks for putting me on the right track. > > > > Here is what I ended up with. > > > > this is what I ended up with: > > > > def hist3d(imgarray): > > histarray = N.zeros((16, 16, 16)) > > temp = imgarray.copy() > > bins = N.arange(0, 257, 16) > > histarray = N.histogramdd((temp[:,:,0].ravel(), temp[:,:,1].ravel(), > > temp[:,:,2].ravel()), bins=(bins, bins, bins))[0] > > return histarray > > > > this creates a 3d histogram of rgb image values in the range 0,255 using > 16 > > bins per component color. > > > > on a 640x480 image, it executes in 0.3 seconds vs 4.5 seconds for a for > > loop. > > > > not quite framerate, but good enough for prototyping. > > > > I don't think your copy to temp is necessary, and use reshape(-1,3) as > in the example of Stefan, which will avoid copying the array 3 times. > > If you need to gain some more speed, then rewriting histogramdd and > removing some of the unnecessary checks and calculations looks > possible.
Indeed, the strategy used in the histogram function is faster than the one used in the histogramdd case, so porting one to the other should speed things up. David > > Josef > _______________________________________________ > Numpy-discussion mailing list > Numpy-discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion