Esempio n. 1
0
 # plt.show()
 numFrm0 = dstCorr.shape[0]
 numFrm1 = dstCorr.shape[1]
 dirOut = '%s/%s_%s_matches' % (wdir, dir0, dir1)
 if not os.path.isdir(dirOut):
     os.mkdir(dirOut)
 for ii0 in xrange(numFrm0):
     tdst = dstCorr[ii0, :]
     idxMax = np.argmax(tdst)
     ccMax = tdst[idxMax]
     if ccMax > 0.5:
         ii1 = idxMax
         _, img0 = cap0.read(ii0)
         _, img1 = cap1.read(ii1)
         fkp0 = cap0.getKPByID(ii0, dscName)
         kp0, kd0 = fp.file2kp(fkp0)
         fkp1 = cap1.getKPByID(ii1, dscName)
         kp1, kd1 = fp.file2kp(fkp1)
         # H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1)
         H, status, mKP1, mKP0, listGoodMatches, scores = getHomography2(
             kp0, kd0, kp1, kd1)
         cc = calcCCHomography(img0, img1, H)
         imgMatch = drawMatchesAndHomography(img1,
                                             img0,
                                             mKP0,
                                             mKP1,
                                             status,
                                             H,
                                             num=100)
         imgMatch = resizeImageToMaxSize(imgMatch, 900)
         winName = '[%d,%d] corr=%0.2f, Score=%d/%d (%0.1f%%)' % (
    #         kp1,kd1=fp.file2kp(fkp1)
    #         H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1)
    #         cc=calcCCHomography(img0, img1, H)
    #         dstCorr[ii0,ii1]=cc
    #         dstCorr0[ii1]=cc
    #         if cc>0.2:
    #             print "Corr[%d,%d]=%0.2f !!!!" % (ii0,ii1,cc)
    #         else:
    #             print "Corr[%d,%d]=%0.2f" % (ii0,ii1,cc)
    #     np.savetxt(foutDstCorr0, dstCorr0, delimiter=',')

    dstCorr=np.zeros( (numFrm0, numFrm1) )
    for ii0 in xrange(numFrm0):
        _,img0=cap0.read(ii0)
        fkp0=cap0.getKPByID(ii0, dscName)
        kp0,kd0=fp.file2kp(fkp0)
        dstCorr0=np.zeros( (numFrm1,1) )
        foutDstCorr0="%s/%s_match_to_%s_%d.csv" % (wdir,dir0,dir1, ii0)
        if os.path.isfile(foutDstCorr0):
            dstCorr0=np.genfromtxt(foutDstCorr0, delimiter=',')
        dstCorr[ii0,:]=dstCorr0
        # for ii1 in xrange(numFrm1):
        #     _,img1=cap1.read(ii1)
        #     fkp1=cap1.getKPByID(ii1, dscName)
        #     kp1,kd1=fp.file2kp(fkp1)
        #     H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1)
        #     cc=calcCCHomography(img0, img1, H)
        #     dstCorr[ii0,ii1]=cc
        #     dstCorr0[ii1]=cc
        #     if cc>0.2:
        #         print "Corr[%d,%d]=%0.2f !!!!" % (ii0,ii1,cc)
 # plt.show()
 numFrm0=dstCorr.shape[0]
 numFrm1=dstCorr.shape[1]
 dirOut='%s/%s_%s_matches' % (wdir, dir0, dir1)
 if not os.path.isdir(dirOut):
     os.mkdir(dirOut)
 for ii0 in xrange(numFrm0):
     tdst=dstCorr[ii0,:]
     idxMax=np.argmax(tdst)
     ccMax=tdst[idxMax]
     if ccMax>0.5:
         ii1=idxMax
         _,img0=cap0.read(ii0)
         _,img1=cap1.read(ii1)
         fkp0=cap0.getKPByID(ii0, dscName)
         kp0,kd0=fp.file2kp(fkp0)
         fkp1=cap1.getKPByID(ii1, dscName)
         kp1,kd1=fp.file2kp(fkp1)
         # H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1)
         H, status, mKP1, mKP0, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1)
         cc=calcCCHomography(img0, img1, H)
         imgMatch=drawMatchesAndHomography(img1, img0, mKP0, mKP1, status, H, num=100)
         imgMatch=resizeImageToMaxSize(imgMatch, 900)
         winName='[%d,%d] corr=%0.2f, Score=%d/%d (%0.1f%%)' % (ii0, ii1, cc, np.sum(status), len(status), 100.*float(np.sum(status))/float(len(status)))
         fimgOut='%s/match_%d_to_%d_corr=%0.1f.png' % (dirOut, ii0, ii1, cc)
         cv2.putText(imgMatch, winName, (30,30), cv2.FONT_HERSHEY_PLAIN,1.4,(0,0,0),6)
         cv2.putText(imgMatch, winName, (30,30), cv2.FONT_HERSHEY_PLAIN,1.4,(255,255,255),2)
         cv2.imwrite(fimgOut, imgMatch)
         # cv2.imshow(winName, imgMatch)
         cv2.imshow('corr-map', imgMatch)
         cv2.waitKey(20)
Esempio n. 4
0
    #
    # fimg='/home/ar/img/lena.png'
    # img=cv2.imread(fimg, 0)
    # det1=cv2.SIFT()
    # det2=cv2.SURF()
    # kp1,kd1=det1.detectAndCompute(img,None)
    # kp2,kd2=det2.detectAndCompute(img,None)
    # arrkp1=kp2arr(kp1)
    # arrkp2=kp2arr(kp2)
    # print 'test'
    lstfn = np.recfromtxt(fidx)
    cnt = 0
    for ff in lstfn:
        for tt in listDet:
            fkp = '%s_%s.kp' % (ff, tt)
            fimgpOut = '%s_%s_kp_best.png' % (ff, tt)
            imgc = cv2.imread(ff, 1)
            kp, kd = fp.file2kp(fkp)
            # arrkp=kp2arr(kp)
            kpBest = getBestKp(kp)
            # fp.plotFPoints(imgc, kpBest, color=(0,0,255))
            imgc = cv2.drawKeypoints(
                imgc, kpBest, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
            cv2.imshow("win-%s" % tt, imgc)
            # cv2.imwrite(fimgpOut, imgc)
            cv2.waitKey(0)
            print ff
        cnt += 1
        # if cnt>3:
        #     break
Esempio n. 5
0
                frm = cv2.cvtColor(frm, cv2.COLOR_BGR2GRAY)
            if parMaxFrameSize > 1:
                frm = ph.resizeToMaxSize(frm, parMaxFrameSize)
            frmOut = '%s/frame_%04d.png' % (wdirOut, cnt)
            frmOutPano = '%s_pano.png' % frmOut
            cv2.imwrite(frmOut, frm)
            if isFirstFrame:
                fsiz = np.array(frm.shape[0:2][::-1], np.float)
                frmPrev = frm
                frmPrevName = frmName
                isFirstFrame = False
                continue

            fkpPrev = '%s_%s.kp' % (frmPrevName, dscName)
            fkp = '%s_%s.kp' % (frmName, dscName)
            kpPrev = fp.file2kp(fkpPrev)
            kp = fp.file2kp(fkp)
            H, Q, Pano = imregFeaturePoins(frmPrev,
                                           frm, (kpPrev, kp),
                                           isDebug=True,
                                           detector=detector)
            cv2.imwrite(frmOutPano, Pano)
            if Q < parThresholdQ:
                if len(listH) == 0:
                    H = np.eye(3, 3)
                else:
                    H = listH[-1].copy()
            if len(listH) > 0:
                H0 = listH[-1]
                listH.append(np.dot(H0, H))
            else:
 cap=ph.VideoCSVReader(fvideo)
 cap.printInfo()
 lstKP=[]
 lstKD=[]
 lstKPData=[]
 numFrm=cap.getNumFrames()
 numFrm=6
 totH=None
 homoBuff=HomoBuff(pcFrm)
 curlDefData=np.zeros((numFrm,2))
 arrCoords=[]
 imgOld=None
 imgCurr=None
 for ii in xrange(0, numFrm):
     fkp=cap.getKPByID(ii, dscName)
     kpData=fp.file2kp(fkp)
     kpScore=calcFrameKPScore(kpData[0])
     # print kpScore
     # lstKP.append(kpData[0])
     # lstKD.append(kpData[1])
     tmpH=np.eye(3)
     if ii==0:
         # totH=np.eye(3)
         totH=tmpH.copy()
         imgOld=cv2.imread(cap.listFImg[ii], 0)
     else:
         oldKPData=lstKPData[-1]
         tmpH,_,_=getHomography(kpData[0], kpData[1],   oldKPData[0], oldKPData[1])
         # tmpH,_,_=getHomography(oldKPData[0], oldKPData[1],   kpData[0], kpData[1])
         totH=np.dot(totH, tmpH)
         imgCurr=cv2.imread(cap.listFImg[ii], 0)
 cap = ph.VideoCSVReader(fvideo)
 cap.printInfo()
 lstKP = []
 lstKD = []
 lstKPData = []
 numFrm = cap.getNumFrames()
 numFrm = 6
 totH = None
 homoBuff = HomoBuff(pcFrm)
 curlDefData = np.zeros((numFrm, 2))
 arrCoords = []
 imgOld = None
 imgCurr = None
 for ii in xrange(0, numFrm):
     fkp = cap.getKPByID(ii, dscName)
     kpData = fp.file2kp(fkp)
     kpScore = calcFrameKPScore(kpData[0])
     # print kpScore
     # lstKP.append(kpData[0])
     # lstKD.append(kpData[1])
     tmpH = np.eye(3)
     if ii == 0:
         # totH=np.eye(3)
         totH = tmpH.copy()
         imgOld = cv2.imread(cap.listFImg[ii], 0)
     else:
         oldKPData = lstKPData[-1]
         tmpH, _, _ = getHomography(kpData[0], kpData[1], oldKPData[0],
                                    oldKPData[1])
         # tmpH,_,_=getHomography(oldKPData[0], oldKPData[1],   kpData[0], kpData[1])
         totH = np.dot(totH, tmpH)
                frm=cv2.cvtColor(frm, cv2.COLOR_BGR2GRAY)
            if parMaxFrameSize>1:
                frm=ph.resizeToMaxSize(frm, parMaxFrameSize)
            frmOut='%s/frame_%04d.png' % (wdirOut, cnt)
            frmOutPano='%s_pano.png' % frmOut
            cv2.imwrite(frmOut, frm)
            if isFirstFrame:
                fsiz=np.array(frm.shape[0:2][::-1], np.float)
                frmPrev=frm
                frmPrevName=frmName
                isFirstFrame=False
                continue

            fkpPrev='%s_%s.kp' % (frmPrevName, dscName)
            fkp    ='%s_%s.kp' % (frmName,     dscName)
            kpPrev=fp.file2kp(fkpPrev)
            kp    =fp.file2kp(fkp)
            H,Q,Pano=imregFeaturePoins(frmPrev, frm, (kpPrev, kp), isDebug=True, detector=detector)
            cv2.imwrite(frmOutPano, Pano)
            if Q<parThresholdQ:
                if len(listH)==0:
                    H=np.eye(3,3)
                else:
                    H=listH[-1].copy()
            if len(listH)>0:
                H0=listH[-1]
                listH.append(np.dot(H0,H))
            else:
                listH.append(H)
            #
            tdxyas=calcShiftAngleScale2(listH[-1],np.array(frm.shape[:2][::-1])/2.0)
Esempio n. 9
0
    #         kp1,kd1=fp.file2kp(fkp1)
    #         H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1)
    #         cc=calcCCHomography(img0, img1, H)
    #         dstCorr[ii0,ii1]=cc
    #         dstCorr0[ii1]=cc
    #         if cc>0.2:
    #             print "Corr[%d,%d]=%0.2f !!!!" % (ii0,ii1,cc)
    #         else:
    #             print "Corr[%d,%d]=%0.2f" % (ii0,ii1,cc)
    #     np.savetxt(foutDstCorr0, dstCorr0, delimiter=',')

    dstCorr = np.zeros((numFrm0, numFrm1))
    for ii0 in xrange(numFrm0):
        _, img0 = cap0.read(ii0)
        fkp0 = cap0.getKPByID(ii0, dscName)
        kp0, kd0 = fp.file2kp(fkp0)
        dstCorr0 = np.zeros((numFrm1, 1))
        foutDstCorr0 = "%s/%s_match_to_%s_%d.csv" % (wdir, dir0, dir1, ii0)
        if os.path.isfile(foutDstCorr0):
            dstCorr0 = np.genfromtxt(foutDstCorr0, delimiter=',')
        dstCorr[ii0, :] = dstCorr0
        # for ii1 in xrange(numFrm1):
        #     _,img1=cap1.read(ii1)
        #     fkp1=cap1.getKPByID(ii1, dscName)
        #     kp1,kd1=fp.file2kp(fkp1)
        #     H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1)
        #     cc=calcCCHomography(img0, img1, H)
        #     dstCorr[ii0,ii1]=cc
        #     dstCorr0[ii1]=cc
        #     if cc>0.2:
        #         print "Corr[%d,%d]=%0.2f !!!!" % (ii0,ii1,cc)
if __name__=='__main__':
    #
    # fimg='/home/ar/img/lena.png'
    # img=cv2.imread(fimg, 0)
    # det1=cv2.SIFT()
    # det2=cv2.SURF()
    # kp1,kd1=det1.detectAndCompute(img,None)
    # kp2,kd2=det2.detectAndCompute(img,None)
    # arrkp1=kp2arr(kp1)
    # arrkp2=kp2arr(kp2)
    # print 'test'
    lstfn=np.recfromtxt(fidx)
    cnt=0
    for ff in lstfn:
        for tt in listDet:
            fkp='%s_%s.kp' % (ff, tt)
            fimgpOut='%s_%s_kp_best.png' % (ff,tt)
            imgc=cv2.imread(ff, 1)
            kp,kd=fp.file2kp(fkp)
            # arrkp=kp2arr(kp)
            kpBest=getBestKp(kp)
            # fp.plotFPoints(imgc, kpBest, color=(0,0,255))
            imgc=cv2.drawKeypoints(imgc, kpBest, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
            cv2.imshow("win-%s" % tt, imgc)
            # cv2.imwrite(fimgpOut, imgc)
            cv2.waitKey(0)
            print ff
        cnt+=1
        # if cnt>3:
        #     break