Example #1
0
	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)