コード例 #1
0
    def run(self):
        print("Processing No.", self.index, "image")
        time1 = time.time()

        sigma = 1.6
        num_intervals = 3
        assumed_blur = 0.5
        image_border_width = 5
        image = self.image.astype('float32')
        base_image = SIFT.generateBaseImage(image, sigma, assumed_blur)
        # print("Processing No.", self.index, "step1.")
        num_octaves = SIFT.computeNumberOfOctaves(base_image.shape)
        # print("Processing No.", self.index, "step2.")
        gaussian_kernels = SIFT.generateGaussianKernels(sigma, num_intervals)
        # print("Processing No.", self.index, "step3.")
        gaussian_images = SIFT.generateGaussianImages(base_image, num_octaves,
                                                      gaussian_kernels)
        # print("Processing No.", self.index, "step4.")
        dog_images = SIFT.generateDoGImages(gaussian_images)
        # print("Processing No.", self.index, "step5.")
        keypoints = SIFT.findScaleSpaceExtrema(gaussian_images, dog_images,
                                               num_intervals, sigma,
                                               image_border_width)
        # print("Processing No.", self.index, "step6.")
        keypoints = SIFT.removeDuplicateKeypoints(keypoints)
        # print("Processing No.", self.index, "step7.")
        keypoints = SIFT.convertKeypointsToInputImageSize(keypoints)
        # print("Processing No.", self.index, "step8.")
        descriptors = SIFT.generateDescriptors(keypoints, gaussian_images)
        # print("Processing No.", self.index, "finished.")

        threadLock.acquire()
        # 释放锁,开启下一个线程
        self.list.append([self.index, keypoints, descriptors])
        threadLock.release()

        time2 = time.time()
        c = time2 - time1
        print("Processing No.", self.index, " costs ", c)