DetectorCorner.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:nimo 作者: wolfram2012 项目源码 文件源码
def _detect(self,image):
        # Asssumes a two dimensional array
        A = None
        if isinstance(image,Image):
            A = image.asMatrix2D()
        elif isinstance(image,array) and len(image.shape)==2:
            A = image
        else:
            raise TypeError("ERROR Unknown Type (%s) - Only arrays and pyvision images supported."%type(image))

        filter = array(self.filter)
        assert len(filter.shape) == 2

        #feature window calculation
        del_A_1 = conv2(A,filter) 
        del_A_2 = conv2(A,filter.transpose())


        del_A_1_1 = del_A_1 * del_A_1
        matrix_1_1 = gaussian_filter(del_A_1_1, self.sigma)
        del del_A_1_1

        del_A_2_2 = del_A_2 * del_A_2
        matrix_2_2 = gaussian_filter(del_A_2_2, self.sigma)
        del del_A_2_2

        del_A_1_2 = del_A_1 * del_A_2
        matrix_1_2 = gaussian_filter(del_A_1_2, self.sigma)
        del del_A_1_2

        del del_A_1,del_A_2

        dM = matrix_1_1*matrix_2_2 - matrix_1_2*matrix_1_2
        tM = matrix_1_1+matrix_2_2

        del matrix_1_1 , matrix_1_2, matrix_2_2

        R = dM-self.k*pow(tM,2)

        footprint = ones((self.radius,self.radius))
        mx = maximum_filter(R, footprint = footprint)
        local_maxima = (R == mx) * (R != zeros(R.shape)) # make sure to remove completly dark points
        del mx

        points = nonzero(local_maxima)
        del local_maxima

        points = array([points[0],points[1]]).transpose()
        L = []
        for each in points:
            L.append((R[each[0],each[1]],each[0],each[1],None))

        del R

        return L
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号