原创 OpenCV同態濾波

濾波原理 簡而言之,圖像的同態濾波是基於以入射光和反射光爲基礎的圖像模型上的,如果把圖像函數F(x,y)表示爲光照函數,即照射分量i(x,y)與反射分量r(x,y)兩個分量的乘積,那麼圖像的模型可以表示爲F(x,y)= i(x,y

原创 直線檢測之極座標表示

直線檢測算法LSD有比較好的效果,相比Hough變換檢測直線更高效,然而有個缺點是同一條直線上的線段會斷開,此時想到將檢測到的直線轉化爲極座標表示,然後根據極座標的相似程度對線段合併。這裏圖像上的直線與極座標下角度的範圍有着怎樣的

原创 判斷文件是否爲二進制

在工作中,碰到處理STL文件,有時候拿到的文件是二進制,有時候又是ASCII, 所以 想着寫個方法進行判斷,然後再選擇打開方式。 話不多說,上代碼! enum FileTypeEnum { FileTypeUnkn

原创 形狀識別之直線檢測

形狀識別中常見的即是矩形框的識別,識別的主要步驟通常是:圖像二值化,查找輪廓,四邊形輪廓篩選等。當識別的目標矩形有一條邊被部分遮擋,如圖1所示,傳統的識別方法就不能達到識別的目的。 圖1 在這裏,提供一種識別的思路,僅供參

原创 在OpenGL中理解攝像機標定

攝像機是3D世界和2D圖像之間的一種映射。 利用齊次座標表示3D空間座標X(X,Y,Z,1) ,2D圖像空間座標x(x,y,1) ,存在一個3X4的矩陣P ,滿足: x=PX                          

原创 RANSAC 原理

RANSAC, Random Sample Consensus(隨機抽樣一致算法)是一個通用的魯棒估計算法,由Fischler和Bolles提出文獻。 算法原理很簡單,如圖: 現以平面點集擬合直線爲例進行說明。已知點集(xi,

原创 C++編碼規範 —— Google C++ Style

長時間以來,大部分編程工作都是基於OpenCV進行的二次開發,基本談不上什麼代碼量,Coding效率與能力有較大短板。近來安裝使用第三方開源庫的時候,接觸到單元測試框架 google’s gtest、編程規範 Google C++

原创 CMake 七步入門

前言 CMake是什麼? 官網給出的定義是這樣的:”an open-source, cross-platform family of tools designed to build, test and package softwa

原创 OpenCV 3.1.0 重編譯——支持CUDA8.0

寫在前面 最近主要在看機器學習的十大算法,嘗試書中提供的示例,實驗環境是win7 + python3.4.4 。突然間,我發現新版本的OpenCV對機器學習大部分算法都有很好的實現,原諒我一直停留在2.4版本。相較於python,

原创 Pthread使用總結

摘要 最近由於開發需要用到多線程,以前看的ARTOOKIT項目中有用到pthread,所以又重新看了一下,重點分析了它的多線程實現。它的實現方式的確很nice,以前沒有注意到,現在整理在這裏,一方面便於以後查詢,另一方面也方便其他

原创 pcl::PolygonMesh簡析

PCL利用VTK的IO接口,可以直接讀取stl,ply,obj等格式的三維點雲數據。pcl的接口方法爲 int pcl::io::loadPolygonFile (const std::string &file_name, pcl

原创 算法【排序二】

高效排序(歸併排序) 這裏開始分析比初級排序更高效的方法——歸併排序。歸併排序的核心思想爲將兩個有序的數組合併成一個更大的有序數組。對一個數組進行排序,可以將它分成兩部分分別進行排序,然後將結果歸併起來。此時不難發現,分割的子數組同樣可以

原创 Two-Pass算法——圖像連通域分析

在處理二值圖像,提取感興趣目標時經常需要通過連通域的大小對候選目標進行初步篩選。OpenCV中findContour 方法可以返回輪廓並能夠計算輪廓面積。可其侷限性在對於非凸多邊形的面積計算是不準確的。 此時,利用連通域計算面積的方法更可

原创 算法【查找一】

高效檢索計算機和網絡中的海量信息,是處理它們的前提。本節開始,分三節總結三種經典的數據類型,用於實現高效的查找方法,亦即符號表。該三種數據類型分別爲:二叉查找樹、紅黑樹、和散列表。算法實現語言採用C++。 關於符號表的定義: 符號表是一

原创 CMAKE 實現自動區分不同版本庫

開發SDK時,經常需要依賴第三方庫。此時需要考慮庫的版本問題,一方面針對不同的編譯器和Release、Debug版本靈活選擇不同的第三方庫,另一方面生成不同版本的庫,並能被其他項目靈活引用。CMAKE此時體現其重要作用。 這裏記錄並分析開