def evaluate_grid_approx(self, x0, x1, y0, y1, cx, cy, minval): ''' minval: small value at which to stop evaluating [x0,x1): (int) X values to evaluate [y0,y1): (int) Y values to evaluate (cx,cy): (float) pixel center of the MoG Returns: numpy array of shape (y1-y0, x1-x0) ''' from mix import c_gauss_2d_approx2 assert(self.D == 2) result = np.zeros((y1-y0, x1-x0)) rtn = c_gauss_2d_approx2(x0, x1, y0, y1, cx, cy, minval, self.amp, self.mean,self.var, result) if rtn == -1: raise RuntimeError('c_gauss_2d_approx2 failed') return result
plt.colorbar() plt.title('Grid') ps.savefig() plt.clf() plt.imshow(np.log10(np.maximum(minval * 1e-3, result)), interpolation='nearest', origin='lower') plt.colorbar() plt.title('Approx 1') ps.savefig() assert(np.all(np.abs(r2 - result) < minval)) result2 = np.zeros((H, W)) print 'args (approx2):', x0, x1, y0, y1, dx, dy, minval, amp, mean, var rtn = c_gauss_2d_approx2(x0, x1, y0, y1, dx, dy, minval, amp, mean, var, result2) if rtn == -1: raise RuntimeError('c_gauss_2d_approx2 failed') print 'Max difference 2:', np.max(np.abs(r2 - result2)) plt.clf() plt.imshow(np.log10(np.maximum(minval * 1e-3, result2)), interpolation='nearest', origin='lower') plt.colorbar() plt.title('Approx 2') ps.savefig() plt.clf() plt.imshow(result2 - r2, interpolation='nearest', origin='lower')
plt.colorbar() plt.title('Grid') plt.subplot(1,2,2) plt.imshow(np.log10(np.maximum(minval * 1e-3, result)), interpolation='nearest', origin='lower') plt.colorbar() plt.title('Approx 1') plt.suptitle('j = %i' % j) ps.savefig() assert(np.all(np.abs(r2 - result) < minval)) result2 = np.zeros((H, W)) print 'args (approx2):', x0, x1, y0, y1, dx, dy, minval, amp, mean, var rtn = c_gauss_2d_approx2(x0, x1, y0, y1, dx, dy, minval, amp, mean, var, result2) if rtn == -1: raise RuntimeError('c_gauss_2d_approx2 failed') print 'Max difference 2:', np.max(np.abs(r2 - result2)) plt.clf() plt.subplot(1,2,1) plt.imshow(np.log10(np.maximum(minval * 1e-3, result2)), interpolation='nearest', origin='lower') plt.colorbar() plt.title('Approx 2') plt.subplot(1,2,2) plt.imshow(result2 - r2, interpolation='nearest', origin='lower') plt.colorbar()