圖像分割技術【逐步實現】

已發表: 2021-02-19

當你看自拍時,你首先看到的是什麼? 你的臉,對吧? 您可以發現自己的臉,因為您的大腦能夠識別您的臉並將其與圖像的其餘部分(背景)區分開來。

現在,如果你想讓你的電腦在自拍中識別你的臉,它可以做到嗎?

是的,只要它可以執行圖像分割。

在今天的文章中,我們將討論圖像分割及其所有主要方面,包括您可以使用的各種圖像分割技術。 但是,這是一篇很長的文章,因此我們建議您為這篇文章添加書籤,以便您稍後再回來閱讀。

在我們開始討論圖像處理中的各種分割技術之前,我們首先應該弄清楚,“什麼是圖像分割?”

目錄

什麼是圖像分割?

圖像分割是數字圖像處理的一個分支,它側重於根據圖像的特徵和屬性將圖像分割成不同的部分。 圖像分割的主要目標是簡化圖像以便於分析。 在圖像分割中,您將圖像劃分為具有相似屬性的各個部分。 分割圖像的部分稱為圖像對象。

這是圖像分析的第一步。 如果不執行圖像分割,您幾乎不可能執行計算機視覺實現。

通過使用圖像分割技術,您可以對圖像中的特定像素進行劃分和分組,為其分配標籤並根據這些標籤對像素進行分類。 您可以畫線、指定邊框,並將圖像中的特定對象(重要組件)與其餘對象(不重要組件)分開。

在機器學習中,您可以使用從圖像分割中生成的標籤進行有監督和無監督訓練。 這將允許您解決許多業務問題。

一個例子會更好地理解圖像分割是如何工作的。

看下圖。

資源

在這裡,您可以看到放置在路中間的椅子。 通過使用圖像分割,您可以將椅子與圖像分開。 此外,您可以使用多種圖像分割技術來獲得不同的結果。 例如,如果您想使用具有多把椅子的圖像,則必須使用語義分割。

另一方面,如果您想識別圖像中存在的每把椅子,如下所示,您必須使用實例分割:

資源

為什麼需要圖像分割?

圖像分割是計算機視覺的一個重要方面,在眾多行業中有許多應用。 大量使用圖像分割的一些值得注意的領域是:

1.人臉識別

iPhone 中的面部識別技術和高級安全系統使用圖像分割來識別您的面部。 它必須能夠識別您面部的獨特特徵,以便任何不受歡迎的人無法訪問您的手機或系統。

2. 車牌識別

許多紅綠燈和攝像頭使用車牌識別來收取罰款並幫助進行搜索。 車牌識別技術允許交通系統識別汽車並獲取其所有權相關信息。 它使用圖像分割將車牌及其信息與其視覺中存在的其他對象分開。 這項技術大大簡化了政府的罰款流程。

3. 基於圖像的搜索

谷歌和其他提供基於圖像的搜索工具的搜索引擎使用圖像分割技術來識別圖像中存在的對象,並將他們的發現與他們找到的相關圖像進行比較,從而為您提供搜索結果。

4. 醫學影像

在醫療領域,我們使用圖像分割來定位和識別癌細胞、測量組織體積、運行虛擬手術模擬以及執行手術內導航。 圖像分割在醫學領域有很多應用。 它有助於識別受影響的區域併計劃相同的治療方法。

除了這些應用之外,圖像分割還用於製造、農業、安全和許多其他領域。 隨著我們的計算機視覺技術變得更加先進,圖像分割技術的使用也將相應增加。

例如,一些製造商已經開始使用圖像分割技術來查找有缺陷的產品。 在這裡,該算法將僅從對象的圖像中捕獲必要的組件,並將它們分類為有缺陷的或最佳的。 該系統降低了人為錯誤的風險,並使組織的測試過程更加高效。

圖像分類的常見實現有 Python、C、C++ 和 Matlab。

有哪些不同類型的圖像分割?

圖像分割是一個非常廣泛的主題,並且有不同的方法來處理這個過程。 我們可以根據以下參數對圖像分割進行分類:

1. 基於方法的分類

從最基本的意義上說,圖像分割就是對象識別。 如果不首先識別對象,算法就無法對不同的組件進行分類。 從簡單到復雜的實現,所有的圖像分割都基於對象識別。

因此,我們可以根據算法識別對象的方式對圖像分割方法進行分類,這意味著收集相似的像素並將它們與不同的像素分開。 有兩種方法可以執行此任務:

基於區域的方法(檢測相似性)

在這種方法中,您可以根據選定的閾值、區域合併、區域擴展和區域增長來檢測圖像中的相似像素。 聚類和類似的機器學習算法使用這種方法來檢測未知的特徵和屬性。 分類算法遵循這種方法來檢測特徵並根據它們分離圖像片段。

基於邊界的方法(檢測不連續性)

基於邊界的方法與基於區域的對象識別方法相反。 與基於區域的檢測不同,在基於區域的檢測中,您會發現具有相似特徵的像素,而在基於邊界的方法中,您會發現彼此不同的像素。 點檢測、邊緣檢測、線檢測和類似的算法都遵循這種方法,它們檢測不同像素的邊緣,並相應地將它們與圖像的其餘部分分開。

2. 基於技術的分類

這兩種方法都有其獨特的圖像分割技術。 我們根據我們想要處理和分析的圖像類型以及我們想要從中獲得的結果類型來使用這些技術。

基於這些參數,我們可以將圖像分割算法分為以下幾類:

結構技術

這些算法要求您擁有正在使用的圖像的結構數據。 這包括像素、分佈、直方圖、像素密度、顏色分佈和其他相關信息。 然後,您必須擁有必須與圖像分離的區域的結構數據。

您將需要該信息,以便您的算法可以識別該區域。 我們用於這些實現的算法遵循基於區域的方法。

隨機技術

這些算法需要有關圖像離散像素值的信息,而不是圖像所需部分的結構。 因此,它們不需要大量信息來執行圖像分割,並且在您必須處理多個圖像時很有用。 機器學習算法,如 K-means 聚類和 ANN 算法屬於這一類。

混合技術

正如您可以從名稱中猜到的那樣,這些算法同時使用隨機方法和結構方法。 這意味著他們使用所需區域的結構信息和整個圖像的離散像素信息來執行圖像分割。

有哪些不同類型的圖像分割技術?

現在我們知道了圖像分割的不同方法和技術種類,我們可以開始討論細節了。 以下是圖像分割技術的主要類型:

  1. 閾值分割
  2. 基於邊緣的分割
  3. 基於區域的分割
  4. 流域分割
  5. 基於聚類的分割算法
  6. 用於分割的神經網絡

讓我們詳細討論這些技術中的每一種,以了解它們的屬性、優點和局限性:

1. 閾值分割

圖像處理中最簡單的分割方法是閾值法。 它通過將像素的強度與指定值(閾值)進行比較來劃分圖像中的像素。 當所需對象的強度高於背景(不必要的部分)時,它很有用。

您可以將閾值 (T) 視為一個常數,但它僅在圖像噪聲非常少(不必要的信息和數據)時才有效。 您可以根據需要保持閾值不變或動態。

閾值化方法通過將灰度圖像分為兩部分(必需和非必需部分)將灰度圖像轉換為二值圖像。

根據閾值的不同,我們可以將閾值分割分為以下幾類:

簡單閾值

在此方法中,您將圖像的像素替換為白色或黑色。 現在,如果特定位置的像素強度小於閾值,則將其替換為黑色。 另一方面,如果它高於閾值,則將其替換為白色。 這是簡單的閾值處理,特別適合圖像分割的初學者。

大津的二值化

在簡單的閾值化中,您選擇了一個恆定閾值並使用它來執行圖像分割。 但是,您如何確定您選擇的值是正確的? 雖然直接的方法是測試不同的值並選擇一個,但這並不是最有效的方法。

使用具有兩個峰值的直方圖拍攝圖像,一個用於前景,一個用於背景。 通過使用 Otsu 二值化,您可以將這些峰值中間的近似值作為您的閾值。

在 Otsu 二值化中,如果圖像是雙峰的,則從圖像的直方圖計算閾值。

此過程對於掃描文檔、識別圖案和從文件中刪除不必要的顏色非常流行。 但是,它有很多限制。 您不能將它用於非雙峰圖像(直方圖具有多個峰值的圖像)。

自適應閾值

擁有一個恆定的閾值可能不是對每張圖像都採用的合適方法。 不同的圖像具有不同的背景和條件,這會影響它們的屬性。

因此,您可以保持閾值可變,而不是使用一個恆定閾值對整個圖像進行分割。 在此技術中,您將為圖像的不同部分保留不同的閾值。

此方法適用於具有不同照明條件的圖像。 您需要使用一種算法將圖像分割成更小的部分併計算每個部分的閾值。

2. 基於邊緣的分割

基於邊緣的分割是圖像處理中最流行的分割實現之一。 它專注於識別圖像中不同對象的邊緣。 這是一個關鍵步驟,因為它可以幫助您找到圖像中存在的各種對象的特徵,因為邊緣包含很多您可以使用的信息。

邊緣檢測廣受歡迎,因為它可以幫助您從圖像中刪除不需要和不必要的信息。 它大大減小了圖像的大小,使其更易於分析。

基於邊緣的分割中使用的算法根據紋理、對比度、灰度、顏色、飽和度和其他屬性的差異來識別圖像中的邊緣。 您可以通過將所有邊緣連接到更準確地匹配圖像邊界的邊緣鏈來提高結果的質量。

有許多基於邊緣的分割方法可用。 我們可以將它們分為兩類:

基於搜索的邊緣檢測

基於搜索的邊緣檢測方法專注於計算邊緣強度的度量,並通過計算邊緣的局部方向估計來尋找梯度幅度的局部方向最大值。

基於過零的邊緣檢測

基於過零的邊緣檢測方法在從圖像檢索的導數表達式中尋找過零以找到邊緣。

通常,您必須對圖像進行預處理以消除不需要的噪聲並更容易檢測邊緣。 Canny、Prewitt、Deriche 和 Roberts cross 是一些最流行的邊緣檢測算子。 它們使檢測不連續性和找到邊緣變得更加容易。

在基於邊緣的檢測中,您的目標是獲得部分分割最小值,您可以將所有局部邊緣分組為二值圖像。 在您新創建的二進製圖像中,邊緣鏈必須與相關圖像的現有組件匹配。

3. 基於區域的分割

基於區域的分割算法將圖像劃分為具有相似特徵的部分。 這些區域只是一組像素,算法通過首先定位一個種子點來找到這些組,該種子點可能是輸入圖像的一小部分或大部分。

找到種子點後,基於區域的分割算法會向它們添加更多像素或縮小它們,以便將它們與其他種子點合併。

基於這兩種方法,我們可以將基於區域的分割分為以下幾類:

區域增長

在此方法中,您從一小組像素開始,然後根據特定的相似性條件開始迭代合併更多像素。 區域增長算法將選擇圖像中的任意種子像素,將其與相鄰像素進行比較,並通過找到與種子點的匹配來開始增加區域。

當特定區域無法進一步增長時,算法將選擇另一個可能不屬於任何現有區域的種子像素。 一個區域可能有太多屬性,導致它佔據了大部分圖像。 為了避免這樣的錯誤,區域增長算法同時增長多個區域。

您應該對具有大量噪聲的圖像使用區域增長算法,因為噪聲會導致難以找到邊緣或使用閾值算法。

區域拆分和合併

顧名思義,區域分割和合併聚焦方法將一起執行兩個動作——分割和合併圖像的各個部分。

它首先將圖像分成具有相似屬性的區域,然後將彼此相似的相鄰部分合併。 在區域分割中,該算法考慮整個圖像,而在區域增長中,該算法將關注特定點。

區域拆分和合併方法遵循分而治之的方法。 它將圖像分成不同的部分,然後根據其預定條件進行匹配。 執行此任務的算法的另一個名稱是拆分合併算法。

4. 流域分割

在圖像處理中,分水嶺是對灰度圖像的變換。 它是指地質流域或排水分水嶺。 分水嶺算法將處理圖像,就好像它是地形圖一樣。 它將像素的亮度視為其高度,並找到沿著這些脊頂部延伸的線條。

分水嶺有許多技術定義並有多種應用。 除了識別像素的山脊外,它還專注於定義盆地(與山脊相反)並用標記淹沒盆地,直到它們與穿過山脊的分水嶺線相遇。

由於盆地有很多標記,而山脊沒有,因此根據每個像素的“高度”將圖像劃分為多個區域。

分水嶺方法將每幅圖像轉換為地形圖分水嶺分割方法將通過其像素的灰度值反映地形。

現在,一個有山谷和山脊的景觀肯定會有三維方面的。 分水嶺將考慮圖像的三維表示並相應地創建區域,這些區域稱為“集水盆地”。

它在醫學領域有很多應用,如MRI、醫學成像等。分水嶺分割是醫學圖像分割的一個突出部分,所以如果你想進入這個領域,你應該重點學習這種方法,特別是在圖像處理中的分割。

5. 基於聚類的分割算法

如果您研究過分類算法,那麼您一定遇到過聚類算法。 它們是無監督算法,可幫助您在圖像中找到正常視覺可能看不到的隱藏數據。 這些隱藏數據包括簇、結構、陰影等信息。

顧名思義,聚類算法將圖像劃分為具有相似特徵的像素簇(不相交的組)。 它將數據元素分成集群,其中集群中的元素與其他集群中存在的元素相比更相似。

一些流行的聚類算法包括模糊 c 均值 (FCM)、k 均值和改進的 k 均值算法。 在圖像分割中,您主要使用 k-means 聚類算法,因為它非常簡單且高效。 另一方面,FCM 算法根據像素的不同程度將像素劃分為不同的類別。

圖像處理中最重要的分割聚類算法有:

K-means 聚類

K-means 是一種簡單的無監督機器學習算法。 它通過特定數量的集群對圖像進行分類。 它通過將圖像空間劃分為代表 k 個組質心的 k 個像素來開始該過程。

然後他們根據它們與質心之間的距離將每個對象分配給組。 當算法將所有像素分配給所有簇時,它可以移動和重新分配質心。

模糊 C 均值

使用模糊c-means聚類方法,圖像中的像素可以聚集在多個簇中。 這意味著一個像素可以屬於多個簇。 但是,每個像素與每個集群都有不同程度的相似性。 模糊 c 均值算法有一個優化功能,它會影響結果的準確性。

聚類算法可以滿足您的大部分圖像分割需求。 如果您想了解有關它們的更多信息,請查看本指南,了解什麼是聚類和不同類型的聚類算法

6. 用於分割的神經網絡

也許你不想自己做所有的事情。 也許您想讓 AI 完成大部分任務,當然可以使用神經網絡進行圖像分割。

您將使用 AI 來分析圖像並識別其不同的組成部分,例如面部、對象、文本等。卷積神經網絡在圖像分割方面非常流行,因為它們可以快速有效地識別和處理圖像數據。

Facebook AI Research (FAIR) 的專家創建了一個名為 Mask R-CNN 的深度學習架構,它可以為圖像中存在的每個對象製作像素級掩碼。 它是 Faster R-CNN 對象檢測架構的增強版本。 Faster R-CNN 對圖像中的每個對象使用兩條數據,即邊界框坐標和對象的類別。 使用 Mask R-CNN,您可以在此過程中獲得額外的部分。 Mask R-CNN 在執行分割後輸出對象掩碼。

在此過程中,您首先將輸入圖像傳遞給生成圖像特徵圖的 ConvNet。 然後系統在特徵圖上應用區域提議網絡(RPN)並生成具有對象性分數的對象提議。

之後,將 Roi 池化層應用於提案以將它們縮小到一個大小。 在最後階段,系統將建議傳遞給連接層進行分類,並為每個對像生成帶有邊界框的輸出。

了解有關圖像處理中的分割的更多信息

圖像處理中的分割無疑是一個廣泛的主題,有很多小節。 從各種圖像分割技術到算法,這門學科有很多東西需要學習。 有這麼多的地面要覆蓋,你很容易迷路和困惑。

這就是為什麼我們建議參加機器學習和人工智能課程來克服這些問題。 該主題的課程將教您圖像分割和相關領域的基礎知識和高級概念。 您將了解與圖像處理、圖像分割和計算機視覺相關的不同機器學習概念。

AI 和 ML 課程將使您更輕鬆地學習所有相關概念,因為您將獲得結構化的課程供您學習。 在 upGrad,我們提供多門機器學習課程。

以下是我們在機器學習和人工智能方面提供的主要課程:

  • 機器學習與人工智能理學碩士
  • 機器學習和人工智能執行研究生課程
  • 機器學習與人工智能理學碩士
  • 機器學習和深度學習 PG 認證
  • 機器學習和 NLP 的 PG 認證

所有這些課程都可以讓您向行業專家學習,他們會在現場會議中解決您的疑慮並回答您的問題。 您將在線學習,這意味著您在學習這些課程時不必去任何地方或打擾您的工作。

這些課程讓您可以訪問 upGrad 的學生成功角,它提供了許多額外的優勢,包括個性化的簡歷反饋、面試準備和職業諮詢。 在課程結束時,您將成為一名具備所有必要的軟硬技能的 AI/ML 專業人士。

結論

圖像分割無疑是一個複雜而高級的話題。 我們在本文中討論的所有各種圖像分割技術都有其特定的優點和局限性。 通過熟悉它們,您將了解應該在哪裡使用一個以及在哪裡應該避免使用另一個。

借助所有學到的技能,您還可以在其他競爭平台上活躍起來,以測試您的技能並獲得更多動手能力。

圖像分割有哪些重要應用?

圖像分割是計算機視覺的重要組成部分,它被用於許多不同的業務。 您的手機和高級安全系統中的面部識別技術使用圖像分割來識別您的面部。 交通系統可以識別汽車並使用車牌識別技術獲取有關其所有者的信息。 Google 和其他基於圖像的搜索引擎使用圖像分割算法來識別您圖片中的項目,並將其結論與他們發現的相關照片進行比較,從而為您提供搜索結果。 我們在醫學領域採用圖像分割來發現和識別癌細胞、量化組織體積、進行虛擬手術模擬以及在手術過程中導航。

圖像分割的類型有哪些?

閾值法是最基本的圖像處理分割方法。 它通過將每個像素的強度與預定值(閾值)進行比較來分離圖片中的像素。 簡單地說,閾值化是將圖像中的像素替換為黑色或白色的過程。 您可以保持指定的閾值靈活,而不是使用單個固定值對整個圖像進行分割。 自適應閾值是此方法的名稱。 最常見的圖像處理分割類型之一是基於邊緣的分割。 它側重於識別圖片中各種事物的邊緣。

什麼是基於聚類的分割算法?

如果您研究過分類算法,您可能已經遇到過聚類算法。 它們是無監督算法,可幫助您在肉眼不可見的圖像中定位隱藏數據。 集群、結構、陰影和其他信息都在隱藏的數據中。 顧名思義,聚類算法將圖像分成具有可比屬性的像素簇(不相交的組)。 它將數據項分成集群,一個集群中的組件與其他集群中的元素更相似。