def __build_resp_layers(self): target_image = self.__grayscale image_size = (target_image.width, target_image.height) for s in Surf.SCALES: Dxx = cv.CloneImage(target_image) Dyy = cv.CloneImage(target_image) Dxy = cv.CloneImage(target_image) # Calculating convolutions cv.Filter2D(target_image, Dxx, Filters.fast_hessian(s, FastHessianType.DXX)) cv.Filter2D(target_image, Dyy, Filters.fast_hessian(s, FastHessianType.DYY)) cv.Filter2D(target_image, Dxy, Filters.fast_hessian(s, FastHessianType.DXY)) l = s / 3.0 scale_factor1 = 1 scale_factor2 = 1 temp = cv.CloneImage(Dyy) cv.ConvertScale(Dyy, temp, scale=(1.0 / scale_factor1)) #cv.SaveImage('D:\\hess\\dyy'+str(s)+'.jpg', temp) #cv.SaveImage('D:\\hess\\dyy'+str(s)+'.jpg', Dyy) #cv.SaveImage('D:\\hess\\dxy'+str(s)+'.jpg', Dxy) #Calculating hessian HessMatrS = cv.CreateImage(image_size, cv.IPL_DEPTH_64F, 1) DxxMultDyy = cv.CloneImage(target_image) cv.Mul(Dxx, Dyy, DxxMultDyy, 1.0 / scale_factor1**2) DxySquared = cv.CloneImage(target_image) cv.Mul(Dxy, Dxy, DxySquared, Surf.HESSIAN_RELATIVE_WEIGHT**2 / scale_factor2**2) cv.Sub(DxxMultDyy, DxySquared, HessMatrS) cv.SaveImage('D:\\hess\\hessian'+str(s)+'.jpg', HessMatrS) self.__responses.append(HessMatrS) #Calculating laplacian (trace of the hessian matrix) traceS = cv.CreateImage(image_size, cv.IPL_DEPTH_64F, 1) cv.Add(Dxx, Dyy, traceS) self.__traces.append(traceS)