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)
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
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
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
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