Example #1
0
 def fragment_io(self):
     io_data = []
     for fragment in self.FragmentData:
         frag_object = Fragment(fragment)
         if frag_object.status == True:
             io_data.append(frag_object)
     return(io_data)
Example #2
0
def N12Frag(As):
    A = Fragment()
    sizeA = len(As.points)
    A.points = np.empty([1, sizeA, 2], np.int)
    for i in range(0, sizeA):
        A.points[0][i] = As.points[i]
    A.turning_angles = As.turning_angles
    A.images = As.images
    return A
Example #3
0
def getTransformedFragment(A, T):
    if (T == None):
        return None
    B = Fragment()
    (dummy1, sizeA, dummy2) = A.points.shape
    B.points = np.empty([1, sizeA, 2], np.int)
    B.images = 0
    B.turning_angles = 0
    for i in range(0, sizeA):
        B.points[0][i] = A.points[0][i]
    transformCountour(B.points, T, config.NORMALNUMPY)
    return B
Example #4
0
def getMergedFragment(A, B, startA, endA, startB, endB, flag):
    # print "WE ARE HERE"
    # print "startA = ",startA,"endA = ",endA,"startB = ",startB,"endB = ",endB
    print "\nIMAGES IN A = ", len(A.images)
    print "\nIMAGES IN B = ", len(B.images)
    T = getTransformationMatirxFromFragment(B, A, startB, endB, startA, endA,
                                            config.FRAGMENT)
    if (T is None):
        return None


# 	print T
    dummy1, sizeA, dummy2 = A.points.shape
    dummy1, sizeB, dummy2 = B.points.shape

    if (flag == config.ENHANCEMODE):
        startA, endA, startB, endB = findProperStartAndEndPoint(
            A, B, startA, endA, startB, endB, T)

    Xnumpy = np.empty([1, sizeA + sizeB + 2, 2], np.int)
    X = Xnumpy[0]
    contourA = A.points[0]
    contourB = B.points[0]

    j = 0
    if (endA > startA and endB > startB):
        # print "FIRST CASE"
        for i in range(0, startA + 1):
            X[j] = contourA[i]
            j = j + 1
        for i in range(startB - 1, -1, -1):
            P = getTransformedPoint(T, contourB[i])
            X[j] = P
            j = j + 1
        for i in range(sizeB - 1, endB - 1, -1):
            P = getTransformedPoint(T, contourB[i])
            X[j] = P
            j = j + 1
        for i in range(endA + 1, sizeA):
            X[j] = contourA[i]
            j = j + 1
    if (endA > startA and endB < startB):
        # print "2nd CASE"
        for i in range(0, startA):
            X[j] = contourA[i]
            j = j + 1
        for i in range(startB, sizeB):
            P = getTransformedPoint(T, contourB[i])
            X[j] = P
            j = j + 1
        for i in range(0, endB):
            P = getTransformedPoint(T, contourB[i])
            X[j] = P
            j = j + 1
        for i in range(endA, sizeA):
            X[j] = contourA[i]
            j = j + 1
    if (endA < startA and endB > startB):
        # print "3rd CASE"
        for i in range(0, endA + 1):
            X[j] = contourA[i]
            j = j + 1
        for i in range(endB + 1, sizeB):
            P = getTransformedPoint(T, contourB[i])
            X[j] = P
            j = j + 1
        for i in range(0, startB):
            P = getTransformedPoint(T, contourB[i])
            X[j] = P
            j = j + 1
        for i in range(startA, sizeA):
            X[j] = contourA[i]
            j = j + 1
    if (endA < startA and endB < startB):
        # print "4th CASE"
        for i in range(0, endA):
            X[j] = contourA[i]
            j = j + 1
        for i in range(endB - 1, -1, -1):
            P = getTransformedPoint(T, contourB[i])
            X[j] = P
            j = j + 1
        for i in range(sizeB - 1, startB, -1):
            P = getTransformedPoint(T, contourB[i])
            X[j] = P
            j = j + 1
        for i in range(startA, sizeA):
            X[j] = contourA[i]
            j = j + 1
    # now j is the number of points on the new contour

    F = Fragment()
    F.points = np.empty([1, j, 2], np.int)
    for i in range(0, j):
        F.points[0][i] = X[i]
    F.images = []

    for i in range(0, len(A.images)):
        image = Image()
        image.name = A.images[i].name
        image.transform_matrix = A.images[i].transform_matrix
        print "\nMatrix ", i, " (A)", "\n"
        print image.transform_matrix
        F.images.append(image)

    for i in range(0, len(B.images)):
        image = Image()
        image.name = B.images[i].name
        image.transform_matrix = T * (B.images[i].transform_matrix)
        print "\nMatrix ", i, " (B)", "\n"
        print image.transform_matrix
        F.images.append(image)
    print "\nIMAGES IN F = ", len(F.images)
    return F
Example #5
0
def CompareContour(F1,F2):
    global sequence1,sequence2,scoreTable,traceBack,traceBack1
    sequence1=F1.turning_angles
    sequence2=F2.turning_angles[::-1]
    
    
    print(sequence1)
    print(sequence2)
    
    # print("sequence1")
    # print(sequence1)
    # print("sequence2")
    # print(sequence2)

    l1=len(sequence1)+1
    l2=len(sequence2)+1
    
    
    initialize(l1,l2)
    fillIn(l1,l2)
    
    start_end=getTraceback(F1.points,F2.points[::-1],F1.turning_angles,F2.turning_angles[::-1])
    
    match= Matchset()
    match_1=Fragment()
    match_2=Fragment()
    lt=len(traceBack)
    match_1.points=get1N2(traceBack)
    match_2.points=get1N2(traceBack1)
    
    FF1=Fragment()
    FF2=Fragment()
    
    
    FF1.points=get1N2(F1.points)
    FF1.turning_angles=F1.turning_angles
    FF2.points=get1N2(F2.points)
    FF2.turning_angles=F2.turning_angles

    FF1.images = []
    FF2.images = []



    for i in range(0,len(F1.images)):
        image = Image()
        image.name = F1.images[i].name
        image.transform_matrix = getIdentitymatrix() * F1.images[i].transform_matrix
        FF1.images.append(image)

    for i in range(0,len(F2.images)):
        image = Image()
        image.name = F2.images[i].name
        image.transform_matrix = getIdentitymatrix() * F2.images[i].transform_matrix
        FF2.images.append(image)
    
    
    match.fragment_1=FF1
    match.fragment_2=FF2
    match.match_1=match_1
    match.match_2=match_2
    match.score=highScoreCell.score
    match.match_1_start=start_end[0]
    match.match_2_start=l2-start_end[1]+1
    match.match_1_end=start_end[2]
    match.match_2_end=l2-start_end[3]+1
    
    
    
    
    contour_img=np.zeros((1000,1000,1), np.uint8)
    contour_img1=np.zeros((1000,1000,1), np.uint8)
    
    #traceBack=cv2.approxPolyDP(traceBack,2,True)
    
    lt=len(traceBack1)
    #displayContour("TraceBack"+str(lt),traceBack)
    #displayContour("TraceBack1"+str(lt),traceBack1)

    #cv2.drawContours(contour_img, traceBack, -1, 255, 1)
    #cv2.drawContours(contour_img1, traceBack1, -1, 255, 1)
    
    #displayContour("Match1",traceBack)
    #displayContour("Match2",traceBack1)
    
    
    # cv2.imshow('IMPORTANT !!! :D',contour_img)
    # cv2.imshow('IMPORTANT2 !!! :D',contour_img1)
    
#     print("Length 1")
#     print(len(traceBack1))
#     print("Length 2")
#     print(len(traceBack))
#     


    contour_img=np.zeros((1000,1000),np.uint8)

    #cv2.drawContours(contour_img,np.array(traceBack),-1,255,1)

    return match