前端自動識別CAD圖紙提取資訊方法總結

2023-05-28 21:00:29

前言

CAD圖紙自動識別和提取資訊具有許多意義,包括以下幾個方面:

  1. 提高工作效率:傳統上,對於大量的CAD圖紙,人工識別和提取資訊是一項耗時且繁瑣的任務。通過自動化這一過程,可以大大提高工作效率,節省時間和人力資源。

  2. 減少錯誤和精度提升:人工處理CAD圖紙容易出現錯誤,例如錯讀數位或忽略細節。自動識別可以減少這些人為錯誤,並提高資料提取的準確性和精度。

  3. 快速獲取資訊:對於需要從大量CAD圖紙中獲取特定資訊的專案或任務來說,自動識別可以快速提取所需的資料,而無需人工逐個查詢和處理。

  4. 資料整合和分析:自動提取的CAD圖紙資訊可以與其他系統或軟體整合,實現資料的整合和分析。這樣,可以更好地理解和利用CAD資料,為決策和規劃提供支援。

通過CAD圖紙自動識別和提取資訊有助於提高效率、快速自動的獲取資料資訊及提高獲取資訊的質量,那麼怎麼樣才能在前端自動識別和提取CAD圖紙資訊呢?

思路

以下圖中的一個停車場的CAD圖紙為例,怎麼樣自動識別CAD圖所有停車位,獲取每個停車位的位置及所有停車位個數呢?

image-20230528175510120

一般識別的方法和流程為:

  • 觀察CAD圖紙:仔細檢視CAD圖紙,查詢可能代表停車位的圖形或符號。這可能是表示一些特定圖示、標識或標記。例如此圖中停車位都是一個矩形

  • 檢查圖例和標註:CAD圖紙通常包含圖例或標註,用於解釋不同元素的含義。檢查圖例和標註,看是否提供了關於要識別的說明或標識。例如此圖中矩形的裡面都包含了停車線的一個符號。image-20230528180048709

  • 使用CAD的選擇和查詢功能:利用CAD選擇和查詢圖形的功能,使您能夠選擇圖紙上的特定物件並檢視其屬性。使用這些工具選擇可能的工位物件,並檢視其屬性以獲取更多資訊。

  • 檢查圖層和圖紙結構:CAD圖紙通常使用不同的圖層來組織不同型別的元素。檢檢視層列表,並查詢與工位相關的圖層。如果有多個圖層包含工位資訊,您可以逐個檢視這些圖層以找到工位物件。

  • 參考CAD標準和慣例:CAD繪圖通常遵循一些標準和慣例,其中包括特定的符號和圖形表示要識別的內容。

對於一些不能通過圖形識別出來的CAD圖,可以利用影象識別的方法。例如

  • 影象處理和圖形識別:使用影象處理技術,例如邊緣檢測、輪廓提取和形狀識別,來分析CAD影象中的物件。您可以使用計算機視覺庫,如OpenCV,來實現這些功能。

  • 機器學習和深度學習:利用機器學習和深度學習演演算法,您可以訓練模型來自動識別CAD影象中的物件。這種方法涉及將大量標記CAD影象用作訓練資料,然後使用這些資料來訓練分類器或折積神經網路(CNN)。訓練完成後,您可以將新的CAD影象輸入已訓練好的模型,並讓其自動預測識別物件的位置。

     

    以上面的CAD停車場CAD圖為例,我們可以通過以下步驟來識別來自動識別出CAD圖中所有的停車位:

    (1)通過觀察,我們發現所有的停車位都是」0"圖層,並且實體為型別為多段線"AcDbPolyline"

    image-20230528181819726

    (2) 我們在前端通過CAD資料查詢,查詢出」0「圖層的所有多段線。結果如下

    image-20230528182017976

    (3)通過查詢到的資料我們發現,我們把所有停車位都找出來了。但是查到的資料中還包含我們不想要的資料(停車位中間的停車線也查詢出來了)。所以我們需要對查詢的資料做下過濾出線為矩形形狀的線(五個點)

    image-20230528182353001

    (4) 這樣,我們就把所有停車位都自動找出來了。我們可以獲取停車位座標的中心點,加個車符號,看下效果。效果如下:

    image-20230528182558689

    上面範例的體驗地址和視訊教學如下

    https://vjmap.com/app/visual/

    唯傑地圖視覺化之停車場路徑規劃 https://www.bilibili.com/video/BV1oX4y1r7L3/

前端CAD圖紙自動識別實現總結

方法一:自動通過要識別物件的CAD屬性資料來識別

應用場景: 資料很有規律,直接通過觀察CAD圖中的物件的屬性如實體的圖層顏色實體型別面積屬性填充符號是否是同一個塊等就可以自動識別出要識別的物件。

以上面的停車場CAD為例,我們再仔細觀察,看下停車位的面積大小是一樣的,如下圖

image-20230528184240059

我們可以在查詢時,可以直接通過「實體型別」為多段線「實體圖層」為「0「實體面積「為12720000來直接查詢出所有的停車位資料

方法二: 通過CAD屬性資料和相關業務規則來識別

應用場景: 對於不能直接通過屬性資料來識別出的物件,如果在圖上有相關聯的可以識別的物件,可以先自動識別出好識別的物件,再利用業務規則識別出要真正需要識別的物件。

舉例來說,以下圖為例,我們想要識別出圓圈裡面的所有標註的內容

image-20230528184918601

如果我們直接識別圖有所有的文字的時候,會有很多無關的文字,過濾不出真正想要的文字標識。

而在實際業務中,這個文字在圓裡面的。所以,我們第一步,可以通過查詢出圖中所有同樣大小的圓,確定圓的座標和半徑後,再查詢圓內所有的文字就是我們所需要的文字標註了。效果如下:

image-20230528185257507

線上體驗和原始碼地址: https://vjmap.com/demo/

方法三: 通過業務邏輯來識別

應用場景:對於一些特別複雜的場景,需要通過寫相關的業務邏輯程式碼來實現。

以一鍵在Web端把CAD圖自動分割成多張圖紙並匯出子圖或圖片為例,這需要通過業務邏輯自動把圖中所有的子圖查詢出來。

image-20230528185606520

自動分割圖紙演演算法原理:

子圖的特徵為,外面有一個圖框,如果能找出所有圖中的圖框,就能根據圖框位置自動拆分出所有子圖了。

而圖框的最外面為矩形,同時這個圖框矩形外面沒有被其他矩形所包含了。

  • (1)遍歷圖中所有的矩形,獲取所有的矩形範圍

  • (2) 因為有時候矩形是由四條線所組成的,所以需要獲取圖中所有的水平線和垂直線,然後判斷能否組成矩形

  • (3)對所有獲取的矩形進行判斷,如果這個矩形沒有被其他矩形所包含了,則以為是子圖的圖框。

    這個之前的博文進行了詳細的介紹,可參考原文:

    一鍵在Web端把CAD圖自動分割成多張圖紙並匯出子圖或圖片

    線上體驗和原始碼地址:https://vjmap.com/demo/

方法四:通過影象相似性來識別

應用場景:對於無法或不方便通過圖形查詢座標及屬性方法來進行識別的物件,可以利用影象的相似性來進行識別。

影象相似性演演算法是指用於比較和判斷兩個或多個影象之間相似度的演演算法。下面列舉了一些常見的影象相似性演演算法:

  1. 感知雜湊演演算法(Perceptual Hashing):該演演算法通過計算影象的雜湊值,將影象轉化為一個固定長度的二進位制串,然後通過比較雜湊值的差異來評估影象的相似度。

  2. 結構相似性演演算法(Structural Similarity):結構相似性演演算法基於人眼感知的原理,通過比較影象的結構、紋理和亮度等特徵,給出一個相似度的評分。

  3. 均值雜湊演演算法(Average Hashing):均值雜湊演演算法通過將影象縮小為固定大小的低解析度影象,並計算影象的平均畫素值,然後將每個畫素與平均值進行比較,生成一個二進位制串作為影象的雜湊值,通過比較雜湊值的差異來評估影象的相似度。

  4. 歐氏距離演演算法(Euclidean Distance):歐氏距離演演算法通過計算兩個影象畫素之間的歐氏距離來評估它們的相似度。較小的距離表示兩個影象更相似。

  5. 餘弦相似度演演算法(Cosine Similarity):餘弦相似度演演算法通過計算兩個影象的向量之間的夾角餘弦值來評估它們的相似度。較大的餘弦值表示兩個影象更相似。

  6. 歸一化交叉相關演演算法(Normalized Cross-Correlation):歸一化交叉相關演演算法通過計算兩個影象之間的交叉相關性來評估它們的相似度。較大的相關性表示兩個影象更相似。

    具體流程為:

    (1)通過提供的WMS服務把圖形資料轉化為影象資料

    (2) 對影象資料進行相似性判斷

    (3)把判斷結果的畫素座標資料轉化為圖形座標資料進行顯示

    以下圖為例

    image-20230528190249751

    如果圖中的這個符號是同一個塊的話,我們可以採用圖形中判斷是否是同一個塊來自動識別。但如果繪製不規範,整個物件不是一個塊時,就不太方便通過屬性資料來自動識別了。這時候我們可以採用影象識別的方法,效果如下:

    image-20230528190519847

    線上體驗和原始碼地址:https://vjmap.com/demo/

方法五: 通過AI機器深度學習來識別

應用場景: 對於一些複雜的物件,大小不太一樣,旋轉、縮放也不太一致的複雜的物件,這時候可以用深度學習自己去訓練模型,用AI的方式來進行識別。

實現過程同方法四, 通過提供的WMS服務把圖形資料轉化為影象資料,再把影象在深度學習框架中進行目標檢測,獲取相應的座標資料進行預測顯示。

因為深度學習框架我們沒有進行封裝,需要客戶自行實現,這裡不再舉例。

 

總結

CAD圖紙自動識別和提取資訊是一個複雜的任務,涉及CAD檔案解析、規律總結、業務理解、影象處理、圖形識別等領域的知識。您可能需要結合多種技術和方法,根據具體情況進行調整和改進。