目標檢測之線段檢測---lsd line segment detector


(1)線段檢測應用背景

(2)線段檢測原理簡介

(3)線段檢測實例 a line segment detector

(4)hough 變換和 lsd 的區別

---------------------author:pkf

------------------------------time:2015-1-26

-----------------------------------------qq:1327706646

(1)線段檢測應用背景

  線段檢測在高鐵電機機車頂部圖像檢測系統中有很大應用,像受電弓檢測程序之類的,很有必要,最近也是客戶有這個需求,做lsd移植發現的。

http://wenku.baidu.com/link?url=Tsm6xLIA1Dx2VQECCpY8xpMRWm0bcnJ0Ivn_dk4Nb5DcEwPVqOE9pn55sBpHvt8aKqe7s6XLMcyHNLMkJbAn-iqO9uPbVbrkApmGSVqOLf3 機車頂部圖像檢測系統方案!

http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=受電弓檢測程序&rsv_pq=b0f1b87b000047b9&rsv_t=17eaouGpLbNXKYoRVknb%2B3%2BRaEZADB3lfcGpq7nR%2FQCM9hZcVI2x7vj%2FgaE&rsv_enter=1&inputT=1014&rsv_sug3=4&rsv_n=2&rsv_sug2=0&rsv_sug4=1872

(2)線段檢測簡介

  為提高數字圖像中的直線的檢測速度,從時頻域變換和空間域變換兩個角度出發,提出了一種改進型數字圖像中直線快速檢測方法。首先,采用小波提升提取圖像中的低頻輪廓信息,抑制高頻噪聲。然后,對像素降低后的圖像進行二值化處理;基於"兩點確定一條直線"以及Hough變換過程中"圖像空間中一條直線上的多個點對應參數空間中一個點"的原理,按照從局部到整體的檢測順序,將二值化后圖像空間中的非零點映射到參數空間中具有較大存在概率的累加單元,而不是所有可能的累加單元。最后,對累加單元進行統計,以確定圖像中直線的參數。利用該方法對一幅像素為128×128的數字圖像進行直線檢測,耗時為213 ms。

首先,我們需要回顧一下,為什么需要檢測圖像中的直線段?直線段作為圖像中邊緣的一種,又有什么特殊之處呢?在Marr關於視覺的計算理論中提到,視覺是一種處理過程,經過這個過程我們能從圖像中發現外部世界中有什么東西和它們在什么地方。同時,我們還知道,信息處理具有三個層次:(1)第一個層次是信息處理的計算理論(theory),也就是研究是對什么信息進行計算和為什么要進行這些計算;(2)第二個層次是算法(algorithm),也就是如何進行所需要的計算,或者說是設計算法;(3)第三個層次是實現算法的機制,也就是研究某一算法的特定構成。對於視覺系統,觀看圖像的過程,也可以看做是信息處理的過程。從圖像推理得到物體的形狀信息的過程也可以對應為三個階段:(1)初始簡圖(primal sketch),這個初始簡圖可以是輪廓圖像,也可以是一堆具有特定意義的特征點構成的掩碼,或者是像素的光強等信息;(2)2.5維簡圖(2.5 dimensional sketch),2.5維簡圖是對初始簡圖進行一系列的處理和運算,推導出的一個能反映某些幾何特征的表象,它和初始簡圖都是以觀察者為核心;(3)三維模型(3D model)。

    那么哪些信息可以用來構造圖像的初始簡圖呢?一個形象的例子是畫畫。畫家速寫時,用很少的邊,點,線等符號,就可以勾勒出大致的景物。當然,這樣的景物與實際景物在人體視網膜上產生的以像素為單位的亮度矩陣式不一樣的,但是人們也可以輕松的識別出他們。這說明視覺對圖形所做的第一個運算就是把他們轉換成一些原始符號構成的描述,這些描述所反映的不止是亮度的絕對值的大小,還有圖像中的亮度變化和局部的幾何特征。

    初始簡圖是一種基元。它可以由若干邊緣段(edge segments),線(line segment),斑點(blob)和端點(terminations)構成,這些雜亂的基元構成的初始簡圖又被稱作未處理的初始簡圖,當這些基元通過各種方式進行聚合、概括和抽象以形成更大、更加抽象的標記(tokens)時,這樣的初始簡圖又被稱為完全的初始簡圖。

    這也就是邊緣檢測之所以稱為圖像處理和機器視覺的基本問題的原因。邊緣檢測的直接目的是尋找未處理的初始簡圖。它通常尋找圖像中亮度變化明顯的點,當這些點位置相鄰且方向相近時,則構成了邊緣中的特殊邊緣-直線段。目前流行的直線檢測算法主要是霍夫變換,它的優勢是不受圖像旋轉的影響,易於進行幾何圖像的快速變換。基於霍夫變換的改進方法也很多,其中一個重要的方法是廣義霍夫變換,可以用來檢測任意形狀的曲線。 

最簡單的霍夫變換是在圖像中識別直線。在平面直角坐標系(x-y)中,一條直線可以用方程

y=kx+b

表示。對於直線上一個確定的點(x_0,y_0),有

y_0=kx_0+b

這表示參數平面(k-b)中的一條直線。因此,圖像中的一個點對應參數平面中的一條正弦曲線,圖像中的一條直線對應參數平面中的一個點。對圖像上所有的點作霍夫變換,最終所要檢測的直線對應的一定是參數平面中直線相交最多的那個點。這樣就在圖像中檢測出了直線。在實際應用中,直線通常采用參數方程

p=x\cos\theta+y\sin\theta.

類似的還有檢測線段、圓、圓弧、橢圓、矩形等的霍夫變換。

      廢話了這么多,終於開始回顧LSD了,使用LSD主要是在遙感圖像中幾何形狀明顯的目標進行檢測時用到。利用LSD,可以快速的檢測圖像中的直線段,然后根據目標的幾何特征設計快速算法,以快速確定疑似目標區域。

      LSD的核心是像素合並於誤差控制。利用合並像素來檢測直線段並不是什么新鮮的方法,但是合並像素的方法通常運算量較大。LSD號稱是能在線性時間(linear-time)內得到亞像素級准確度的直線段檢測算法。LSD雖然號稱不需人工設置任何參數,但是實際使用時,可以設置采樣率和判斷倆像素是否合並的方向差。我們知道,檢測圖像中的直線其實就是尋找圖像中梯度變化較大的像素。因此,梯度和圖像的level-line是LSD提及的兩個基本概念。LSD首先計算每一個像素與level-line的夾角以構成一個level-line場。然后,合並這個場里方向近似相同的像素,這樣可以得到一系列regions,這些 regions被稱為 line support regions。如下圖所示。

    每一個line support region其實就是一組像素,它也是直線段(line segment)的候選。同時,對於這個line support region,我們可以觀察它的最小外接矩形。直觀上來講,當一組像素構成的區域,特別細長時,那么這組像素更加可能是直線段。基於此,作者還統計了line support region的最小外接矩形的主方向。line support region中的一個像素的level-line 角度與最小外接矩形的主方向的角度差在容忍度(tolerance)2τ內的話,那么這個點被稱作"aligned point"。作者統計最小外接矩形內的所有像素數和其內的alinedg points數,用來判定這個line support region是否是一個直線段。判定的准則使用的是“a contrario approach”和“Helmholtz principle”方法。在這里,aligned  points的數量是我們感興趣的信息。因此作者考慮如下假設:aligned points越多,那么region越可能是直線段。對於一副圖像i和一個矩形r,記k(i,r)為aligned points的數量,n(r)為矩形r內的總像素數。那么,我們希望能夠看到:

      其中,Ntest是所有要考慮的矩形的數量。PH0是針對 contrario model H0的一個概率。I是在H0模型下的隨機圖像。在這篇文章中,作者用H0的模型,主要有以下兩個屬性:

       (1){LLA(j)},其中j是像素,是一由一組隨機變量組成;(2)LLA(j)在[0,2π]上均勻分布。

       因此,判斷一個像素是不是aligned point可以記作概率:

          p = τ/π

       這樣,再通過誤差控制,最終的直線段檢測算法如下:

     在上述算法中,還有兩個要點我們沒有解釋。一是line support region具體是怎么得到了,二是怎樣進行誤差控制的。

    前面我們說過,line support region是通過合並方向近似相同的像素得到。其實在這里,這個合並的過程更多的是依賴於區域生長算法。對於一個level-line 場LLA,種子像素P,和容忍度 τ。我們 可以通過簡單的區域生長算法來得到line support region,具體的算法過程參考論文里給出的步驟吧。

     至於NFA(the number of false alarms)計算,作者使用如下公式計算:

   其中,N和M是采樣過后圖像的列和行,B(n,k,p)是一個二項分布。n依舊是矩形內所有像素數,k是矩形內的所有p-aligned point數。此處的p-aligned point是指和矩形的主方向在容忍度pπ下方向相同的像素。如果,那么可以認為結果有效。

         在實際使用作者的源碼時,可以調整lsd函數中的scale來調整圖像采樣率。此外,合並角度代碼里默認是22.5度。圖像越小,角度越小,得到的結果越少。不過當圖像采樣不同時,在同一位置可能得到差異特別大的直線段,這個暫時不知道是什么造成的。

       一個比較迷人的結果:

 

 http://blog.csdn.net/polly_yang/article/details/10085401

http://blog.csdn.net/carson2005/article/details/9326847

http://coursegraph.com/category/math

http://blog.csdn.net/polly_yang/article/category/1243538 pgm 公開課

 

(3)線段檢測實例 a line segment detector

有帶縮放的高斯下采樣,也有1.0的不縮放的檢測

http://www.ipol.im/pub/art/2012/gjmr-lsd/?utm_source=doi v1.6 

http://blog.csdn.net/tianwaifeimao/article/details/17678669

(4)hough 變換和 lsd 的區別

http://blog.csdn.net/tianwaifeimao/article/details/17678669 各自優缺點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM