国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      斜率逼近式直線檢測方法

      文檔序號:6523619閱讀:302來源:國知局
      斜率逼近式直線檢測方法
      【專利摘要】本發(fā)明提供了一種斜率逼近式直線檢測方法,具體包括:檢測出待處理圖像中所有的邊緣線條;將所有邊緣線條轉(zhuǎn)換為若干由點鏈?zhǔn)c坐標(biāo)和鏈碼序列表示的點鏈;將每個點鏈分為若干個二碼點鏈,使得每個二碼點鏈中的鏈碼取值至多有兩個,這兩個取值代表的方向相鄰;在每個二碼點鏈中尋找直線點鏈,每個所述直線點鏈的首點與其余每個點的斜率范圍都具有同一個非空子集,且點數(shù)達到預(yù)定的點數(shù)閾值。本發(fā)明可以快速而精確地檢測出圖像中的直線,有助于提高需要進行采樣類直線檢測應(yīng)用的效果質(zhì)量。
      【專利說明】斜率逼近式直線檢測方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及圖像處理技術(shù),具體涉及一種斜率逼近式直線檢測方法。
      【背景技術(shù)】
      [0002]根據(jù)直線檢測的應(yīng)用分類,可以分為全局應(yīng)用和采樣應(yīng)用。全局應(yīng)用的直線檢測主要應(yīng)用于對含有直線特征的對象進行提取,例如道路、橋梁、建筑等地物的提取,目標(biāo)跟蹤、識別等,這樣應(yīng)用一般需要檢測出圖上的所有直線甚至是類似直線,因此該檢測一般需要較強的魯棒性以保證檢測的抗噪性和完整性。采樣應(yīng)用的直線檢測的結(jié)果常用于對具有直線特征的對象進行分析以及樣本的進一步操作,諸如立體匹配、刀刃法PSF (點擴散函數(shù))提取等等,這樣的應(yīng)用只需要圖上的一少部分較為精準(zhǔn)的直線而不是所有的直線,因此該檢測一般具有較為嚴(yán)格的精度要求。
      [0003]比如,刀刃法PSF提取主要是以恢復(fù)圖像退化為目的的采樣應(yīng)用。在受到散焦、景物與相機之間的相對運動、大氣擾動等因素的影響下,在遙感圖像中存在著相當(dāng)程度的圖像退化。然而遙感圖像是從距離地面數(shù)千千米高空的遙感平臺獲取的,即使存在微小的圖像退化也可能導(dǎo)致嚴(yán)重的影像識別誤差。所以如何從遙感圖像中獲取用于描述和恢復(fù)其圖像退化的PSF就成為了一個重要的問題。刀刃法通過分析圖像上具有明顯灰度差的線性邊緣區(qū)域(即刀刃區(qū)域)中邊緣兩邊灰度分布情況求得PSF,已經(jīng)被普遍應(yīng)用與在相關(guān)的研究中。而這種方法提取PSF的精度,很大程度上取決于其所選取的刀刃區(qū)域的準(zhǔn)確性。鑒于刀刃區(qū)域的刀刃為線性邊緣,所以刀刃區(qū)域的檢測可以通過直線檢測來實現(xiàn),而且其檢測精度決定了 PSF計算所用到的刀刃區(qū)域的優(yōu)劣,也就決定了恢復(fù)后圖像的圖像質(zhì)量。
      [0004]現(xiàn)有技術(shù)中,對于直線檢測的通常做法是使用Hough變換。Hough變換是利用圖像全局特性而將邊緣像素連接起來組成區(qū)域封閉邊界的一種方法。在預(yù)先知道區(qū)域形狀的條件下,利用Hough變換可以方便的得到邊界曲線而將不連續(xù)的像素邊緣點連接起來。Hough變換的主要優(yōu)點是受噪聲和曲線間斷的影響小。利用Hough變換可以直接檢測出直線,適用于直線檢測的全局應(yīng)用。
      [0005]但是對于這樣的直線檢測方法,首先由于該方法將不連續(xù)的像素點連接起來,那么圖像中出現(xiàn)的間斷就沒有辦法被檢測出來,而且所檢測出的直線在局部上就很難保證直線精度,所有這種方法在如實際的刀刃法PSF提取的采樣應(yīng)用中的效果質(zhì)量都不高。例如在刀刃區(qū)域PSF提取中,根據(jù)這樣的直線來選擇刀刃區(qū)域,會使對于圖像退化的恢復(fù)引入不必要的誤差。

      【發(fā)明內(nèi)容】

      [0006](一)解決的技術(shù)問題
      [0007]針對現(xiàn)有技術(shù)的不足,本發(fā)明提供一種斜率逼近式直線檢測方法,可以快速而精確地檢測出圖像中的直線,有助于提高需要進行采樣類直線檢測應(yīng)用的效果質(zhì)量。
      [0008](二)技術(shù)方案[0009]為實現(xiàn)以上目的,本發(fā)明通過以下技術(shù)方案予以實現(xiàn):
      [0010]一種斜率逼近式直線檢測方法,其特征在于,該方法包括:
      [0011]檢測出待處理圖像中所有的邊緣線條;
      [0012]將所有邊緣線條轉(zhuǎn)換為若干由點鏈?zhǔn)c坐標(biāo)和鏈碼序列表示的點鏈;
      [0013]將每個點鏈分為若干個二碼點鏈,使得每個二碼點鏈中的鏈碼取值至多有兩個,這兩個取值代表的方向相鄰;
      [0014]在每個二碼點鏈中尋找直線點鏈,每個所述直線點鏈的首點與其余每個點的斜率范圍都具有同一個非空子集,且點數(shù)達到預(yù)定的點數(shù)閾值。
      [0015]優(yōu)選地,所述檢測出待處理圖像中所有的邊緣線條包括:
      [0016]載入待檢測圖像的灰度圖像;
      [0017]對所述灰度圖像進行邊緣檢測,得到由二值圖像表示的邊緣線條。
      [0018]優(yōu)選地,所述進行邊緣檢測可以采用Canny算子。
      [0019]優(yōu)選地,所述進行邊緣檢測可以采用Shen-Castan邊緣檢測器。
      [0020]優(yōu)選地,所述將所有邊緣線條轉(zhuǎn)換為若干由點鏈?zhǔn)c坐標(biāo)和鏈碼序列表示的點鏈包括在轉(zhuǎn)換前通過線條細化使所有邊緣線條細化為單點連線。
      [0021]優(yōu)選地,所述線條細化采用Zang-Suen/Stentiford/Holt組合算法。
      [0022]優(yōu)選地,所述在每個二碼點鏈中尋找直線點鏈包括:
      [0023]步驟S1:設(shè)定點鏈斜率范圍;
      [0024]步驟S2:從所述二碼點鏈的第二個點開始依次查詢每個點的鏈碼,將第一個與前面的點的鏈碼都不相同的點設(shè)置為當(dāng)前點;
      [0025]步驟S3:計算該二碼點鏈?zhǔn)c與當(dāng)前點的斜率范圍;
      [0026]步驟S4:更新所述點鏈斜率范圍為當(dāng)前點的斜率范圍與更新前點鏈斜率范圍的交集;
      [0027]步驟S5:當(dāng)所述點鏈斜率范圍不為空集,且當(dāng)前點不為二碼點鏈的尾點時設(shè)置下一個點為當(dāng)前點并返回步驟S3,否則進入步驟S6 ;
      [0028]步驟S6:判斷從該二碼點鏈?zhǔn)c至當(dāng)前點為止的子點鏈點數(shù)是否不小于所述點數(shù)閾值,若是則判斷該子點鏈為直線點鏈。
      [0029]優(yōu)選地,所述首點與其余每個點的斜率范圍通過如下方式取得:
      [0030]對于其余每個點,先找到一個坐標(biāo)方向,所述坐標(biāo)方向上該點與首點的坐標(biāo)之差大于其它方向上的坐標(biāo)之差;
      [0031]找到在該坐標(biāo)方向上距該點1/2像素的兩個點;
      [0032]分別計算這兩個點中的每個點與首點所在直線的斜率;
      [0033]所述斜率范圍即為包含這兩個斜率值的最小范圍。
      [0034]優(yōu)選地,所述步驟S6之后進一步包括:
      [0035]若點鏈斜率范圍為空集,則繼續(xù)判斷該二碼點鏈中剩余未判斷的點的數(shù)量是否不小于所述點數(shù)閾值;
      [0036]若是則由剩余未判斷的點構(gòu)成新的二碼點鏈,對于該二碼點鏈返回步驟SI。
      [0037](三)有益效果
      [0038]本發(fā)明至少具有如下的有益效果:[0039]本方法根據(jù)Freeman的第一條準(zhǔn)則,在圖像中提取出了符合準(zhǔn)則的若干條二碼點鏈,在此基礎(chǔ)上對該點鏈進行進一步的直線檢測,利用的主要方法就是根據(jù)像素點的大小來確定點鏈中每個點相對于點鏈?zhǔn)c的直線組的斜率范圍。如果點鏈中的每一個點的所述斜率范圍都有同樣一個非空子集,那么可以確定至少有斜率屬于該子集的一條直線可以貫穿點鏈中的每一個像素點,結(jié)合對于得到直線點鏈在點數(shù)閾值上的設(shè)定,也就很大程度上保證了這個點鏈所構(gòu)成的線條是直線,或者說該線條的線性程度非常好,得到的直線具有很高的精度。
      [0040]相對于【背景技術(shù)】的Hough全局變換,本方法只是將每條篩選得到的二碼點鏈進行了逐條逐點的檢測,算法復(fù)雜度低,執(zhí)行速度快。所以本發(fā)明可以快速而精確地檢測出圖像中的直線,有助于提高需要進行采樣類直線檢測應(yīng)用的效果質(zhì)量。
      [0041]當(dāng)然,實施本發(fā)明的任一產(chǎn)品或方法并不一定需要同時達到以上所述的所有優(yōu)點。
      【專利附圖】

      【附圖說明】
      [0042]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0043]圖1是本發(fā)明實施例中斜率逼近直線檢測法的簡單流程圖;
      [0044]圖2是本發(fā)明一個實施例中遙感圖像的灰度圖像;
      [0045]圖3是本發(fā)明一個實施例中采用Canny算子的邊緣檢測結(jié)果示意圖;
      [0046]圖4是本發(fā)明一個實施例中線條細化的結(jié)果示意圖;
      [0047]圖5是本發(fā)明一個實施例中鏈碼跟蹤的結(jié)果示意圖;
      [0048]圖6是本發(fā)明一個實施例中二碼檢測的結(jié)果示意圖;
      [0049]圖7是本發(fā)明一個實施例中斜率逼近判斷的流程圖;
      [0050]圖8是本發(fā)明一個實施例中斜率逼近法原理示意圖;
      [0051]圖9是本發(fā)明一個實施例中斜率逼近判斷的處理結(jié)果圖,也是最終的直線檢測效果圖。
      【具體實施方式】
      [0052]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
      [0053]本發(fā)明實施例提供一種斜率逼近式直線檢測方法,參見圖1,具體步驟包括:
      [0054]步驟101:檢測出待處理圖像中所有的邊緣線條。
      [0055]首先,要載入待檢測圖像的灰度圖像。為方便找出圖像中對比強烈的邊緣區(qū)域,需要由圖像的灰度值作為對比參數(shù),所以如果圖像為彩色圖像,則須將其轉(zhuǎn)化為灰度圖像。本實施例具體以一張遙感圖像的直線檢測過程作為相應(yīng)步驟的示意圖,原圖像的灰度圖像參見圖2。
      [0056]然后,對所述灰度圖像進行邊緣檢測,得到由二值圖像表示的邊緣線條。利用現(xiàn)有算法對已載入的灰度圖像進行邊緣檢測,對應(yīng)每個像素點用一個數(shù)值來表示該點是否處在邊緣線上。對應(yīng)邊緣線條處像素點的數(shù)值為255,其余部分為O (這兩個值可以是任意兩個不同的數(shù)字,按照習(xí)慣這里取O和255),最終可以得到一幅表示圖像中邊緣線條的二值圖像。所述邊緣檢測可以采用Canny算子或Shen-Castan邊緣檢測器。采用Canny算子的邊緣檢測結(jié)果示意圖參見圖3。
      [0057]步驟102:將所有邊緣線條轉(zhuǎn)換為若干由點鏈?zhǔn)c坐標(biāo)和鏈碼序列表示的點鏈。
      [0058]首先需要在轉(zhuǎn)換前通過線條細化使所有邊緣線條細化為單點連線。利用現(xiàn)有算法對得到邊緣二值圖像進行線條細化,保證圖像上的線都是單點連線,并得出一幅單點線條的二值圖像。線條細化采用Zang-Suen/Stentiford/Holt組合算法。線條細化的結(jié)果示意圖參見圖4。
      [0059]然后,對經(jīng)過線條細化的二值圖像進行鏈碼跟蹤,將圖像中所有線條以點鏈?zhǔn)c坐標(biāo)和鏈碼序列的點鏈形式表示。對單點邊緣二值圖像進行鏈碼跟蹤,將圖像上的單點線條都轉(zhuǎn)化為點集合表示的線,我們稱之為點鏈。這種點鏈由一個點坐標(biāo)和鏈碼序列組成,點坐標(biāo)表示該條線的點鏈?zhǔn)c坐標(biāo),鏈碼序列中的每一個鏈碼表示自第二點起,各點相對于前一點的位置關(guān)系。鏈碼跟蹤方法如下:
      [0060](I)逐行逐點掃描圖像中的點,將找到的第一個線條點設(shè)為點鏈?zhǔn)c;
      [0061](2)對找到的點鏈?zhǔn)c,不斷檢測出其八個相鄰的點中新的線條點,并將該點添加入該點鏈?zhǔn)c的點鏈中,并對該點繼續(xù)進行同樣檢測直到無新的相鄰線條點為止;
      [0062](3)如果檢測某點的相鄰線條點時有不小于三個相鄰的線條點,則判定此點為交點并在此處停止;
      [0063](4)停止后若點鏈中有點則存儲該點鏈,并在二值圖像上去除該點鏈中非交點的點(將該點鏈中的每個點的值由255變?yōu)镺);
      [0064](5)在去除后的二值圖像中繼續(xù)從點鏈?zhǔn)c處繼續(xù)逐行逐點掃描,找到下一個點鏈?zhǔn)c后返回步驟(2),重復(fù)這之間的步驟直到最后一行的最后一個點也完成上述檢測。
      [0065]對于(3)的判斷是為了在檢測到交點時對點鏈進行打斷,以保證每一條點鏈的鏈碼序列不出現(xiàn)分叉的情況,也就是說點鏈與點鏈間沒有相互交叉的情況發(fā)生。鏈碼跟蹤結(jié)果示意圖參見圖5,其中以不同樣式的線條區(qū)分開了不同的點鏈。
      [0066]步驟103:將每個點鏈分為若干個二碼點鏈,使得每個二碼點鏈中的鏈碼取值至多有兩個,這兩個取值代表的方向相鄰。
      [0067]所述二碼指的是所有鏈碼的取值不超過兩個;所述取值兩個代表方向相鄰指的是所有鏈碼代表的方向都要是兩個相鄰方向中的一個,而不允許出現(xiàn)代表其他方向的鏈碼。對每一個點鏈,自第一個鏈碼開始進行逐點檢測,當(dāng)一個點處出現(xiàn)第三種取值的鏈碼,或者該鏈碼的鏈碼值不在首鏈碼的鄰域內(nèi),則在該點處對原點鏈進行打斷處理。即將該點前(不包括該點)的子點鏈創(chuàng)建為新的二碼點鏈,并對該點后的子點鏈繼續(xù)進行同樣檢測。二碼檢測的結(jié)果示意圖參見圖6,同樣以不同樣式的線條代表不同的二碼點鏈。
      [0068]由此可以得到若干條二碼點鏈,此得到的二碼點鏈?zhǔn)腔ゲ唤徊娴膯吸c連線,而且從每個點到下一個點的矢量的方向至多有兩個。但是仍有可能存在有些點鏈?zhǔn)钦劬€而非直線的情況,所以要進行進一步的直線判定。
      [0069]需要說明的是,上述步驟均只是對細化后的單點連線進行了打斷處理,使其成為若干條二碼點鏈。其中只有部分點被排除,其余部分均沒有做篩選。
      [0070]步驟104:在每個二碼點鏈中尋找直線點鏈,每個所述直線點鏈的首點與其余每個點的斜率范圍都具有同一個非空子集,且點數(shù)達到預(yù)定的點數(shù)閾值,參見圖7,具體包括以下步驟:
      [0071]步驟S1:設(shè)定點鏈斜率范圍;
      [0072]步驟S2:從所述二碼點鏈的第二個點開始依次查詢每個點的鏈碼,將第一個與前面的點的鏈碼都不相同的點設(shè)置為當(dāng)前點;
      [0073]步驟S3:計算該二碼點鏈?zhǔn)c與當(dāng)前點的斜率范圍;
      [0074]步驟S4:更新所述點鏈斜率范圍為當(dāng)前點的斜率范圍與更新前點鏈斜率范圍的交集;
      [0075]步驟S5:當(dāng)所述點鏈斜率范圍不為空集,且當(dāng)前點不為二碼點鏈的尾點時設(shè)置下一個點為當(dāng)前點并返回步驟S3,否則進入步驟S6 ;
      [0076]步驟S6:判斷從該二碼點鏈?zhǔn)c至當(dāng)前點為止的子點鏈點數(shù)是否不小于所述點數(shù)閾值,若是則判斷該子點鏈為直線點鏈。
      [0077]其中,所述首點與其余每個點的斜率范圍通過如下方式取得:對于其余每個點,先找到一個坐標(biāo)方向,所述坐標(biāo)方向上該點與首點的坐標(biāo)之差大于其它方向上的坐標(biāo)之差;找到在該坐標(biāo)方向上距該點1/2像素的兩個點;分別計算這兩個點中的每個點與首點所在直線的斜率;所述斜率范圍即為包含這兩個斜率值的最小范圍。
      [0078]在此基礎(chǔ)上還包括對于二碼點鏈?zhǔn)S帱c的斜率逼近判斷:若點鏈斜率范圍為空集,則繼續(xù)判斷該二碼點鏈中剩余未判斷的點的數(shù)量是否不小于所述點數(shù)閾值;若是則由剩余未判斷的點構(gòu)成新的二碼點鏈,對于該二碼點鏈重新進行所述斜率逼近判斷。
      [0079]而實際操作中,該步驟具體包括:
      [0080](1)設(shè)定點數(shù)閾值為L,設(shè)定點鏈斜率范圍為K=[0, 1],該點鏈?zhǔn)c坐標(biāo)(X0, y0),自首鏈碼點開始,對二碼點鏈逐點檢測;
      [0081](2)當(dāng)點鏈中出現(xiàn)第二種鏈碼時,開始計算經(jīng)過該點的斜率范圍K ‘ ;
      [0082](3)該點坐標(biāo)(X,y), K ‘ = [kmin, kmax]
      【權(quán)利要求】
      1.一種斜率逼近式直線檢測方法,其特征在于,該方法包括: 檢測出待處理圖像中所有的邊緣線條; 將所有邊緣線條轉(zhuǎn)換為若干由點鏈?zhǔn)c坐標(biāo)和鏈碼序列表示的點鏈; 將每個點鏈分為若干個二碼點鏈,使得每個二碼點鏈中的鏈碼取值至多有兩個,這兩個取值代表的方向相鄰; 在每個二碼點鏈中尋找直線點鏈,每個所述直線點鏈的首點與其余每個點的斜率范圍都具有同一個非空子集,且點數(shù)達到預(yù)定的點數(shù)閾值。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述檢測出待處理圖像中所有的邊緣線條包括: 載入待檢測圖像的灰度圖像; 對所述灰度圖像進行邊緣檢測,得到由二值圖像表示的邊緣線條。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述進行邊緣檢測可以采用Canny算子。
      4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述進行邊緣檢測可以采用Shen-Castan邊緣檢測器。
      5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將所有邊緣線條轉(zhuǎn)換為若干由點鏈?zhǔn)c坐標(biāo)和鏈碼序列表示的點鏈包括在轉(zhuǎn)換前通過線條細化使所有邊緣線條細化為單點連線。
      6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述線條細化采用Zang-Suen/Stentiford/Holt 組合算法。
      7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在每個二碼點鏈中尋找直線點鏈包括: 步驟S1:設(shè)定點鏈斜率范圍; 步驟S2:從所述二碼點鏈的第二個點開始依次查詢每個點的鏈碼,將第一個與前面的點的鏈碼都不相同的點設(shè)置為當(dāng)前點; 步驟S3:計算該二碼點鏈?zhǔn)c與當(dāng)前點的斜率范圍; 步驟S4:更新所述點鏈斜率范圍為當(dāng)前點的斜率范圍與更新前點鏈斜率范圍的交集;步驟S5:當(dāng)所述點鏈斜率范圍不為空集,且當(dāng)前點不為二碼點鏈的尾點時設(shè)置下一個點為當(dāng)前點并返回步驟S3,否則進入步驟S6 ; 步驟S6:判斷從該二碼點鏈?zhǔn)c至當(dāng)前點為止的子點鏈點數(shù)是否不小于所述點數(shù)閾值,若是則判斷該子點鏈為直線點鏈。
      8.根據(jù)權(quán)利要求1或7所述的方法,其特征在于,所述首點與其余每個點的斜率范圍通過如下方式取得: 對于其余每個點 ,先找到一個坐標(biāo)方向,所述坐標(biāo)方向上該點與首點的坐標(biāo)之差大于其它方向上的坐標(biāo)之差; 找到在該坐標(biāo)方向上距該點1/2像素的兩個點; 分別計算這兩個點中的每個點與首點所在直線的斜率; 所述斜率范圍即為包含這兩個斜率值的最小范圍。
      9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟S6之后進一步包括: 若點鏈斜率范圍為空集,則繼續(xù)判斷該二碼點鏈中剩余未判斷的點的數(shù)量是否不小于所述點數(shù)閾值; 若是則由剩余未判斷的點構(gòu)成新的二碼點鏈,對于該二碼點鏈返回步驟Si。
      【文檔編號】G06T7/00GK103679724SQ201310683637
      【公開日】2014年3月26日 申請日期:2013年12月13日 優(yōu)先權(quán)日:2013年12月13日
      【發(fā)明者】范沖, 李冠達, 馬俊 申請人:中南大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1