



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PythonOpencv圖?識別表格:線條信息計算(投影算法)PythonOpencv圖?識別表格:線條信息計算(投影算法)通過OpenCV算法識別出圖?中的框線后,?臨?個問題:線條變換為絕對?平和垂直線條并?絕對的?平或垂直,需要變換為絕對的?平線或垂直線。簡單的算法是可以選擇線條的起點或終點作為坐標,但最好是可以選擇線條的中?的坐標。這?設計了?種軸?投影法,通過線條在垂直軸上的投影得到中?點的坐標。以橫線條為例,將線條的cv矩陣傳?,計算在數據i軸上的投影,得到中?的i位置,即為絕對?平線的y軸坐標。這??定要注意數據矩陣中的i、j分別對應著cv坐標軸的y和x。通過投影算法,可以得到線條垂直坐標軸的軸?,同理,將線條在j軸上進?投影就可以得到線條的絕對?平或垂直的長度。仔細分析后我們會發現,在i軸上進?投影算法能得到絕對橫線的寬度,在j軸上投影可以得到絕對橫線的長度。那我們是否需要寫?個i軸投影算法和?個j軸投影算法呢?其實投影原理都?樣,只是投影的軸不同。如果將橫線轉置,向i軸投影,是不是就得到了絕對橫線的長度呢?這樣我們就可以?同?套投影算法了。如果是豎線怎么辦呢?豎線剛好相反,向j軸投影得到寬度,向i軸投影得到長度。如何?同?套線段信息計算代碼呢?沒錯,將豎線轉置后就變成橫線了,算法?致了!完成了以上思路的梳理,我們就可以寫出對應的投影算法了。線條的斷裂另?個問題是線條的斷裂,由于?擾因素導致?根線條中間出現了斷裂,為了應對這種問題,我們在投影計算時?持了break,即允許在投影截?上出現?個像素的斷裂。線條被分割為多條線段不是所有的表格框線都是?直連續的,看下?這個例?,紅框中的表格框線被兩個合并單元格分割成了三段。在線條信息計算時,需要精確的計算出每條線段起?坐標信息。為什么呢?這是因為稍后我們進?單元格重建算法的時候,需要知道表格中每?個橫縱交叉點的完整情況,來決定每個單元格到底有???列。這個問題在表格結構分析算法會詳細談到的。完整算法根據以上的分析,我們寫出了下?完整的算法,實現了線條的投影計算、寬度計算、長度計算、線條中的線段信息的計算,?持了?擾造成的斷裂等情況。'''計算線條的完整信息,包括線條的軸?位置、線條起?pos、內部線段的信息原理:通過坐標軸投影算法,獲取垂直于該坐標軸的線段在該軸上的中?位置前提:輸?的lines_matrix必須是i,j?維數組,且i為要投影的坐標軸(相當于cv圖像的y軸,若要投影x軸請先轉置后傳?)輸?:lines_matrix-線段的?值變反矩陣;max_break-最??持線段中間出現的斷裂(像素數量)輸出:線段信息listline_info={'axis':0,#線條軸?'wide':0,#線條粗細'len':0,#線條總長度(線段長度之和)'segment':[],#線條內部的線段信息[[線段長度,線段start,線段end],...]?持?根線條被分割為多條線段(中間跨域?個或多個合并單元格)'segment':[],#線條內部的線段信息[[線段長度,線段start,線段end],...]?持?根線條被分割為多條線段(中間跨域?個或多個合并單元格)}輸??例:lines_matrixi0------------------------->ji1------------------------->ji2------------------------->ji3------------------------->j'''defcalc_line_info(lines_matrix,max_break,debug=False):#計算i軸每個位置的投影是否有像素值project_i=[any(x)forxinlines_matrix]#對每個i對應的list進?any操作,求出i軸上該位置是否出現像素點#取出有像素值的i軸pospos_i=[ifori,xinenumerate(project_i)ifx==True]#異常檢測:若只檢測到?條線或沒有線則返回空iflen(pos_i)<=1:return[]#將連續的pos分組(?持連續pos出現10個像素的斷裂)pos_group_i=[]temp_group=[pos_i[0]]#第?個pos默認滿?要求,放?臨時結果中#可調參數線段斷層截?像素點foriinrange(1,len(pos_i)):#從第?個pos開始計算ifpos_i[i]-pos_i[i-1]<=5:#連續像素計為?組,?持截?斷層temp_group.append(pos_i[i])else:pos_group_i.append(temp_group)#上?組結束,放?結果中temp_group=[pos_i[i]]#新?組第?個pos默認滿?要求,放?臨時結果中#最后?組pos放?結果中pos_group_i.append(temp_group)'''線條信息數據結構'''line_info={'axis':0,#線條軸?'wide':0,#線條粗細'len':0,#線條總長度(線段長度之和)'segment':[],#線條內部的線段信息[[線段長度,線段start,線段end],...]?持?根線條被分割為多條線段(中間跨域?個或多個合并單元格)}lines_info=[]for(i,poses)inenumerate(pos_group_i):info=line_info.copy()info['axis']=int(np.median(poses))info['wide']=poses[-1]-poses[0]+1'''計算圖像中線段的長度(即在j軸像素點的個數)注意有可能?條線段被分割成了多個分段(中間出現了合并單元格),因此該算法需要返回線段長度同時要?持?擾造成的線段中間出現的斷裂list[]'''#獲取該條線所在的矩陣并轉置area=np.transpose(lines_matrix[poses[0]:poses[-1]+1])#取得每個投影點的像素情況mask=[str(any(x)+0)forxinarea]#any(x)+0可以將TrueFalse轉為10#將mask中連續的1分割出來,每段連續的1即為?條線段s=''.join(mask).split('0')segs=[[i,len(v)]for(i,v)inenumerate(s)iflen(v)>0](#調整每條線段在原始list中正確的中的i只是s數組中的位置,并?mask中的位置)possegsforiinrange(1,len(segs)):#每條線段的pos=segs中的i+之前線段的總長度segs[i][0]=segs[i][0]+sum([x[1]-1for(j,x)inenumerate(segs)ifj<i])segments=[segs[0]]#初始化為第?條線段#10若有多條線段,進?智能線段分析:因?擾造成的像素內的斷裂?動連在?起MAX_LEN_BREAK=max_break#最??持線段斷裂長度iflen(segs)>1:#從第?條線段開始判斷與上?條線段之間是斷裂還是間隔foriinrange(1,len(segs)):delta=segs[i][0]-segs[i-1][0]-segs[i-1][1]ifdelta<MAX_LEN_BREAK:#?于斷裂長度,應連接線段segments[-1]=[segments[-1][0],segs[i][0]-segments[-1][0]+segs[i][1]]else:#為間隔,是不同的線段segments.append(segs[i])#[線段數據重組為:線段長度,線段start,線段end]segments=[[x[1],x[0],x[0]+x[1]]forxinsegments]info['segment']=segmentsinfo['len']=s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蛋品加工過程中的食品安全管理體系考核試卷
- 嵌入式云平臺的應用試題及答案
- 織造設備的數據分析與優化考核試卷
- 專業嵌入式考試準備試題及答案
- 行政管理實操能力考核試題及答案
- 數據庫監管合規性考查試題及答案
- 應用程序監控與測試的關系試題及答案
- 如何提高公路工程考試通過率試題及答案
- 計算機四級軟件測試工程師考點與試題及答案
- 信息系統監理師全面備考方案試題及答案
- MOOC 電路分析AⅠ-西南交通大學 中國大學慕課答案
- 托育運營方案
- 物理因子治療技術護理課件
- 清潔能源推廣活動方案
- 四川省成都市金牛區2024屆生物七年級第二學期期末學業質量監測試題含解析
- 2024年中國鐵路濟南局集團有限公司招聘筆試參考題庫附帶答案詳解
- 《藥品采購培訓》課件
- 小學數學-《稅率》教學設計學情分析教材分析課后反思
- 公路日常養護巡查制度范本
- 《教育的本質》課件
- 材料科學與自然辯證法
評論
0/150
提交評論