這又是一次「爲難」人的大做業了,幸虧此次不是一我的,有大佬們撐着,但仍是好麻煩。本次實驗圍繞着圖像特徵進行,包含特徵提取、特色去除、特徵點匹配中的一些模型和方法,總歸仍是內容滿滿的
Be alone, that is the secret of invention; be alone, that is when ideas are born. -- Nikola Tesla
做業內容html
特徵與匹配git
做業分析:github
FERNS方法:web
特徵檢測:算法
野點去除xcode
NN (nearest neighbor):只比較有足夠類似性的點app
NNDR (nearest neighbor distance ratio)dom
進一步排除:ANMS(adaptive non-maximal suppression,自適應非極大值抑制)
特徵點匹配
BruteForce(暴力算法):全比較
FLANN(Fast Library for Approximate Nearest Neighbors,快速最鄰近)
RANSAC(random sample consensus,隨機採樣一致性)
通用的RANSAC算法
運行$k$次:
- 隨機選取$n$個採樣;
- 對$n$個採樣配合合適的參數$\Theta$;
- 對另外$N-n$個點,計算對應模型的適應度,獲得匹配集合的點數$c$。
輸出參數$\Theta $和最大適配集合$c$。
Hough Cluster
快速特徵點檢測方法
ORB
接下來,咱們打開CMake進行編譯,
OPENCV_ENABLE_NONFREE
打開(必定要注意,不然將沒法使用有專利的算法)。在點擊6處Generate,等待完成便可。
make
和sudo make install
後,就安裝好這兩個包了。最後,就是在XCode中配置咱們須要的環境了,這裏咱們和以前實驗同樣,在Header SearchPaths
中填入/usr/local/include
(或/usr/local/include/opencv
),在Library Search Paths
中填入/usr/local/lib
。接下來,和以前不一樣,咱們此次再也不Build Phases
設置中放入連接了,而是在Build Settings
中Other Linker Flags
中放入-lopencv_***
標誌,來創建鏈接(因爲鏈接過多,最終,也不這樣實現了)。
**.CV-Lab.xcodeproj
文件(右鍵,顯示包內容),而後用文本編輯器打開project.pbxoproj
文件,在/* Begin XBuildConfiguration section */
下相應位置,填入須要的標記便可,以下圖所示,
OTHER_LDFLAGS = ("-lopencv_aruco","-lopencv_bgsegm","-lopencv_bioinspired","-lopencv_calib3d","-lopencv_ccalib","-lopencv_core","-lopencv_datasets","-lopencv_dnn","-lopencv_dnn_objdetect","-lopencv_dpm","-lopencv_face","-lopencv_features2d","-lopencv_flann","-lopencv_fuzzy","-lopencv_highgui","-lopencv_gapi","-lopencv_hfs","-lopencv_highgui","-lopencv_imgcodecs","-lopencv_imgproc","-lopencv_img_hash","-lopencv_line_descriptor","-lopencv_ml","-lopencv_objdetect","-lopencv_optflow","-lopencv_phase_unwrapping","-lopencv_photo","-lopencv_plot","-lopencv_reg","-lopencv_rgbd","-lopencv_saliency","-lopencv_shape","-lopencv_stereo","-lopencv_structured_light","-lopencv_stitching","-lopencv_superres","-lopencv_surface_matching","-lopencv_text","-lopencv_tracking","-lopencv_video","-lopencv_videoio","-lopencv_videostab","-lopencv_xfeatures2d","-lopencv_ximgproc","-lopencv_xobjdetect","-lopencv_xphoto",);
給出兩個連接,看完這兩個後,基本一些內容已是能夠實現的了,
過程當中的一些提醒以下,
features2d
和xfeatures2d
,前者包含了ORB,後者包含了SIFT和SURF。若是有一些函數沒法應用,頗有多是其中缺了一個。有大佬們的幫助,終於又度過一劫,系統的不一樣仍是帶來了一些麻煩,中途還由於錯誤操做致使系統重裝,不過這是另外一個故事了。另外各類參考資料較多,文章中已經給出了,這裏就再也不重複水字數了,感謝大佬們的貢獻。