国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        教你使用OpenCV對圖像進行特征檢測、描述和匹配

        介紹在本文中,我將討論使用 OpenCV 進行圖像特征檢測、描述和特征匹配的各種算法。首先,讓我們看看什么是計算機視覺,OpenCV 是一個開源計算機視覺庫。當(dāng)人類看到這張圖片時會發(fā)生什么?

        他將能夠識別圖像中的面孔。因此,簡單來說,計算機視覺就是讓計算機能夠像人類一樣查看和處理視覺數(shù)據(jù)。計算機視覺涉及分析圖像以產(chǎn)生有用的信息。

        什么是特征?當(dāng)你看到芒果圖像時,如何識別它是芒果?通過分析顏色、形狀和質(zhì)地,你可以說它是芒果。用于識別圖像的線索稱為圖像的特征。同樣,計算機視覺的功能是檢測圖像中的各種特征。我們將討論 OpenCV 庫中用于檢測特征的一些算法。

        1. 特征檢測算法

        1.1 Harris角點檢測Harris角點檢測算法用于檢測輸入圖像中的角點。該算法有三個主要步驟。確定圖像的哪個部分的強度變化很大,因為角落的強度變化很大。它通過在整個圖像中移動一個滑動窗口來實現(xiàn)這一點。對于識別的每個窗口,計算一個分值 R。對分數(shù)應(yīng)用閾值并標記角點。這是該算法的 Python 實現(xiàn)。

        import cv2
        import numpy as np
        imput_img = 'det_1.jpg'
        ori = cv2.imread(imput_img)
        image = cv2.imread(imput_img)
        gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
        gray = np.float32(gray)
        dst = cv2.cornerHarris(gray,2,3,0.04)
        dst = cv2.dilate(dst,None)
        image[dst>0.01*dst.max()]=[0,0,255]
        cv2.imshow('Original',ori)
        cv2.imshow('Harris',image)
        if cv2.waitKey(0) & 0xff == 27:
           cv2.destroyAllWindows()
        這是輸出。

        1.2 Shi-Tomasi 角點檢測器

        這是另一種角點檢測算法。它的工作原理類似于哈里斯角檢測。這里唯一的區(qū)別是 R 值的計算。該算法還允許我們找到圖像中最好的 n 個角。讓我們看看 Python 的實現(xiàn)。import numpy as np
        import cv2
        from matplotlib import pyplot as plt
        img = cv2.imread('det_1.jpg')
        ori = cv2.imread('det_1.jpg')
        gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        corners = cv2.goodFeaturesToTrack(gray,20,0.01,10)
        corners = np.int0(corners)
        for i in corners:
           x,y = i.ravel()
           cv2.circle(img,(x,y),3,255,-1)
        cv2.imshow('Original', ori)
        cv2.imshow('Shi-Tomasi', img)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
        這是 Shi-Tomasi 算法的輸出。這里檢測到前 20 個角。

        下一個是尺度不變特征變換。

        1.3 尺度不變特征變換(SIFT)SIFT 

        用于檢測角、斑點、圓等。它還用于縮放圖像。

        考慮這三個圖像。盡管它們在顏色、旋轉(zhuǎn)和角度上有所不同,但你知道這是芒果的三種不同圖像。計算機如何能夠識別這一點?在這種情況下,Harris 角點檢測和 Shi-Tomasi 角點檢測算法都失敗了。但 SIFT 算法在這里起著至關(guān)重要的作用。它可以從圖像中檢測特征,而不管其大小和方向。讓我們實現(xiàn)這個算法。import numpy as np
        import cv2 as cv
        ori = cv.imread('det_1.jpg')
        img = cv.imread('det_1.jpg')
        gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
        sift = cv.SIFT_create()
        kp, des = sift.detectAndCompute(gray,None)
        img=cv.drawKeypoints(gray,kp,img,flags=cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
        cv.imshow('Original',ori)
        cv.imshow('SIFT',image)
        if cv.waitKey(0) & 0xff == 27:
           cv.destroyAllWindows()
        輸出如下所示。

        你可以看到圖像中有一些線條和圓圈。特征的大小和方向分別用圓圈和圓圈內(nèi)的線表示。我們將看到下一個特征檢測算法。

        1.4 加速魯棒特征(SURF)

        SURF算法只是SIFT的升級版。以下是代碼實現(xiàn):import numpy as np
        import cv2 as cv
        ori =cv.imread('/content/det1.jpg')
        img = cv.imread('/content/det1.jpg')
        surf = cv.xfeatures2d.SURF_create(400)
        kp, des = surf.detectAndCompute(img,None)
        img2 = cv.drawKeypoints(img,kp,None,(255,0,0),4)
        cv.imshow('Original', ori)
        cv.imshow('SURF', img2)

        接下來,我們將看到如何提取另一個名為 bob 的特征。

        2. 斑點檢測BLOB 

        代表二進制大對象。它指的是特定二值圖像中具有共同屬性的一組連接像素或區(qū)域。這些區(qū)域是 OpenCV 中的輪廓,具有一些額外的特征,如質(zhì)心、顏色、面積、均值和覆蓋區(qū)域中像素值的標準差。以下是代碼實現(xiàn):import cv2
        import numpy as np;
        ori = cv2.imread('det_1.jpg')
        im = cv2.imread("det_1.jpg", cv2.IMREAD_GRAYSCALE)
        detector = cv2.SimpleBlobDetector_create()
        keypoints = detector.detect(im)
        im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.a(chǎn)rray([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
        cv2.imshow('Original',ori)
        cv2.imshow('BLOB',im_with_keypoints)
        if cv2.waitKey(0) & 0xff == 27:
           cv2.destroyAllWindows()
        讓我們看看輸出。在這里,斑點被很好地檢測到。

        現(xiàn)在,讓我們進入特征描述符算法。

        3. 特征描述符算法

        特征通常是圖像中的不同點,描述符給出特征,因此它描述了所考慮的關(guān)鍵點。它提取該點周圍的局部鄰域,從而創(chuàng)建局部圖像塊并計算來自該局部塊的特征。3.1 定向梯度直方圖(HoG)在深度學(xué)習(xí)出現(xiàn)之前,HoG 是對象檢測應(yīng)用中最突出的特征描述符之一。HoG 是一種用于計算圖像局部中梯度方向出現(xiàn)的技術(shù)。讓我們實現(xiàn)這個算法。from skimage.feature import hog
        import cv2
        ori = cv2.imread('/content/det1.jpg')
        img = cv2.imread("/content/det1.jpg")
        _, hog_image = hog(img, orientations=8, pixels_per_cell=(16, 16),
                           cells_per_block=(1, 1), visualize=True, multichannel=True)
        cv2.imshow('Original', ori)
        cv2.imshow('HoG', hog_image)

        下一個是BRIEF。

        3.2 二元魯棒獨立基本特征(BRIEF)

        Brief 是流行的 SIFT 描述符的替代品,它們計算速度更快,更緊湊。讓我們看看它的實現(xiàn)。import numpy as np
        import cv2 as cv
        ori = cv.imread('/content/det1.jpg')
        img = cv.imread('/content/det1.jpg',0)
        star = cv.xfeatures2d.StarDetector_create()
        brief = cv.xfeatures2d.BriefDescriptorExtractor_create()
        kp = star.detect(img,None)
        kp, des = brief.compute(img, kp)
        print( brief.descriptorSize() )
        print( des.shape )
        img2 = cv.drawKeypoints(img, kp, None, color=(0, 255, 0), flags=0)
        cv.imshow('Original', ori)
        cv.imshow('BRIEF', img2)
        這是結(jié)果。

        3.3 定向快速旋轉(zhuǎn)簡報 (ORB)

        ORB 是一種一次性面部識別算法。它目前正在你的手機和應(yīng)用程序中使用,例如 Google 照片,你可以在其中對人進行分組,你看到的圖像是根據(jù)人分組的。這個算法不需要任何主要的計算。它不需要GPU。快速而簡短。它適用于關(guān)鍵點匹配。圖像中不同區(qū)域的關(guān)鍵點匹配,如強度變化。下面是這個算法的實現(xiàn)。import numpy as np
        import cv2
        ori = cv2.imread('/content/det1.jpg')
        img = cv2.imread('/content/det1.jpg', 0)
        orb = cv2.ORB_create(nfeatures=200)
        kp = orb.detect(img, None)
        kp, des = orb.compute(img, kp)
        img2 = cv2.drawKeypoints(img, kp, None, color=(0, 255, 0), flags=0)
        cv2.imshow('Original', ori)
        cv2.imshow('ORB', img2)
        這是輸出。

        現(xiàn)在,讓我們看看特征匹配。

        4. 特征匹配

        特征匹配就像比較兩個圖像的特征,這兩個圖像可能在方向、視角、亮度上不同,甚至大小和顏色也不同。讓我們看看它的實現(xiàn)。import cv2
        img1 = cv2.imread('/content/det1.jpg', 0)
        img2 = cv2.imread('/content/88.jpg', 0)
        orb = cv2.ORB_create(nfeatures=500)
        kp1, des1 = orb.detectAndCompute(img1, None)
        kp2, des2 = orb.detectAndCompute(img2, None)
        bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
        matches = bf.match(des1, des2)
        matches = sorted(matches, key=lambda x: x.distance)
        match_img = cv2.drawMatches(img1, kp1, img2, kp2, matches[:50], None)
        cv2.imshow('original image', img1)
        cv2.imshow('test image', img2)
        cv2.imshow('Matches', match_img)
        cv2.waitKey()
        這是這個算法的結(jié)果。

        尾注我希望你喜歡這篇文章。我已經(jīng)簡要介紹了各種特征檢測、描述和特征匹配技術(shù)。上述技術(shù)用于對象檢測、對象跟蹤和對象分類應(yīng)用。當(dāng)你開始練習(xí)時,真正的樂趣就開始了。所以,開始練習(xí)這些算法,在實際項目中實現(xiàn)它們,看看其中的樂趣。保持學(xué)習(xí)。

        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

        發(fā)表評論

        0條評論,0人參與

        請輸入評論內(nèi)容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

        暫無評論

        暫無評論

          掃碼關(guān)注公眾號
          OFweek人工智能網(wǎng)
          獲取更多精彩內(nèi)容
          文章糾錯
          x
          *文字標題:
          *糾錯內(nèi)容:
          聯(lián)系郵箱:
          *驗 證 碼:

          粵公網(wǎng)安備 44030502002758號

          主站蜘蛛池模板: 镶黄旗| 综艺| 免费看无码网站成人A片| 华安县| 露脸丨91丨九色露脸| aV无码av高潮aV三区| 国产97在线?|?日韩| 桐庐县| 人人插人人| 日韩a级?a级| 南平市| 久草视频网站| 亚洲综合另类| 榆中县| 岛国在线无码| 91资源在线| 贵州省| 衡山县| 亚洲男人天堂网| 国产精品久久久影院色| 午夜插逼| AV在线亚洲天堂| 制服丝袜无码在线| 国产三级网| AV资源站| 国产V在线| 国产精品性爱| 日日干日| 人妻?无码?中出| 美女成人网站| 阿拉善右旗| 成人精品18| 91碰碰| 3Pav图| 酒泉市| 中文字幕无码Av在线看| 免费av在线| 黄色不卡| WWW免费视频| 亚洲?欧美?自拍?偷拍| 陈巴尔虎旗|