[OpenCV基礎][Python]二值化影像

更新於 發佈於 閱讀時間約 4 分鐘

二值化影像在數位影像表示中,僅包含0與1的值。

在什麼情境下會用到二值化影像呢?,在影像處理中,我們想要求一些特定的數值,例如圓的直徑,或物體的尺寸,等等。

二值化影像圖

黑為0,白為1

二值化影像(黑代表0,白代表1)

二值化影像(黑代表0,白代表1)


常用的應用如下:

  1. 物體檢測和分割: 在許多計算機視覺應用中,我們可能需要檢測並分割圖像中的物體。二值化可以幫助我們將物體背景區分開來,從而進行後續的分析和識別。
  2. 邊緣檢測: 二值化可以用於強調圖像中的邊緣。這對於檢測物體的外形或進行邊緣檢測算法的應用很有用。
  3. 圖像分析和測量: 在進行圖像分析時,我們可能需要測量特定區域大小形狀等特徵。二值化可以使這些特徵更加突顯,便於進行測量分析
  4. 文檔辨識: 在文檔辨識和文字提取中,常常使用二值化影像來清晰地區分文字背景,使得後續的文字識別更加準確。

二值化語法

cv2.threshold是OpenCV 中用於影像二值化的函式

retval, threshold_image = cv2.threshold(src, thresh, maxval, type[, dst])
  • src: 輸入的灰度影像,即要進行二值化處理的原始影像。
  • thresh: 二值化的閾值,超過這個閾值的像素值將被分為高於閾值或低於閾值的兩個類別,具體取值根據不同的應用需求。
  • maxval: 超過閾值的像素值將被賦予的新值,通常是最大值,例如 255(白色)。
  • type: 二值化操作的類型,有不同的選項,例如:
    • cv2.THRESH_BINARY: 大於閾值的像素賦予 maxval小於閾值的像素賦予 0
    • cv2.THRESH_BINARY_INV: 與 cv2.THRESH_BINARY 相反大於閾值的像素賦予 0小於閾值的像素賦予 maxval
    • cv2.THRESH_TRUNC: 大於閾值的像素賦予閾值小於閾值的像素保持不變
    • cv2.THRESH_TOZERO: 大於閾值的像素保持不變小於閾值的像素賦予 0
    • cv2.THRESH_TOZERO_INV: 與 cv2.THRESH_TOZERO 相反,大於閾值的像素賦予 0小於閾值的像素保持不變
  • dst(選用): 輸出的二值化影像。如果未提供,則函數會修改 src 本身。

cv2.threshold 的返回值 retval 是實際使用的閾值,根據不同的二值化方法,retval 可能與指定的閾值 thresh 有所不同。threshold_image則是二值化後的影像


程式範例

在這個例子中,我們使用 cv2.THRESH_BINARY 進行二值化,閾值 thresh_value 為 128,大於 128 的像素賦予 255(白色),小於等於 128 的像素賦予 0(黑色)。

import cv2

# 讀取灰度影像
image = cv2.imread('path/to/your/image.jpg', cv2.IMREAD_GRAYSCALE)

# 二值化
thresh_value = 128
_, binary_image = cv2.threshold(image, thresh_value, 255, cv2.THRESH_BINARY)

# 顯示原始影像和二值化後的影像
cv2.imshow('Original Image', image)
cv2.imshow('Binary Image', binary_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
灰階二值化後

灰階二值化後


自動選擇閾值

Otsu's 方法是一種自動計算二值化閾值的算法,它基於影像的灰度分佈,試圖找到一個最佳的閾值,以最大程度地區分前景和背景。

cv2.THRESH_OTSU 被用於 cv2.threshold 函數的 type 參數中。這樣,閾值 thresh 的值將根據 Otsu's 方法自動計算

# 使用 Otsu's 方法進行自動二值化
_, binary_image = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

在使用 cv2.THRESH_OTSU 時,你無需手動指定閾值 thresh,而是將 thresh 參數設為 0。cv2.threshold 函數會根據 Otsu's 方法計算最適合的閾值。

自動選擇閥值比較圖

自動選擇閥值比較圖

在某些情境中,自動選擇閥值可以得到一個不錯的二值化結果圖



avatar-img
136會員
229內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言
avatar-img
留言分享你的想法!
螃蟹_crab-avatar-img
發文者
2024/08/15
[OpenCV][Python]局部二值化(Local Thresholding)提及了這篇文章,趕快過去看看吧!
螃蟹_crab的沙龍 的其他內容
在影像處理中,我們總是想要讓特徵更加明顯一點,可以使用銳利化的方式將特徵的邊緣增強,提升影像的細節,圖像銳利後就會有提升解析度的感覺。 拉普拉斯運算子是一種常用於影像增強的方法之一,特別是用於提高影像的邊緣和細節。 在OpenCV中,你可以使用cv2.Laplacian函數來應用拉普拉斯運算子。
直方圖均衡化處理是一種通過調整圖像的直方圖來改變圖像外觀和質量的圖像處理技術。這通常涉及對圖像的亮度、對比度和顏色分佈進行調整 此方法對於背景和前景均亮或均暗的影像很有用。​並在曝光過度或曝光不足的照片中獲得更好的細節。
直方圖是對圖像中像素強度分布的圖形表示。通過分析直方圖,我們可以獲得有關圖像對比度、亮度和色彩分佈的有用信息。
在某些特別的情況下,需要去調整亮度及對比度,讓我們想要的影像特徵更加明顯 本文將介紹利用這兩個函數 cv2.convertScaleAbs 和 cv2.addWeighted 來調整亮度及對比度。
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
warpAffine 和 warpPerspective 都是 OpenCV 中用於圖像變換的函數,主要差異在於這兩種函數所使用的變換矩陣的類型和適用場景。 本文主要討論warpAffine,另外warpPerspective可以此篇文章
在影像處理中,我們總是想要讓特徵更加明顯一點,可以使用銳利化的方式將特徵的邊緣增強,提升影像的細節,圖像銳利後就會有提升解析度的感覺。 拉普拉斯運算子是一種常用於影像增強的方法之一,特別是用於提高影像的邊緣和細節。 在OpenCV中,你可以使用cv2.Laplacian函數來應用拉普拉斯運算子。
直方圖均衡化處理是一種通過調整圖像的直方圖來改變圖像外觀和質量的圖像處理技術。這通常涉及對圖像的亮度、對比度和顏色分佈進行調整 此方法對於背景和前景均亮或均暗的影像很有用。​並在曝光過度或曝光不足的照片中獲得更好的細節。
直方圖是對圖像中像素強度分布的圖形表示。通過分析直方圖,我們可以獲得有關圖像對比度、亮度和色彩分佈的有用信息。
在某些特別的情況下,需要去調整亮度及對比度,讓我們想要的影像特徵更加明顯 本文將介紹利用這兩個函數 cv2.convertScaleAbs 和 cv2.addWeighted 來調整亮度及對比度。
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
warpAffine 和 warpPerspective 都是 OpenCV 中用於圖像變換的函數,主要差異在於這兩種函數所使用的變換矩陣的類型和適用場景。 本文主要討論warpAffine,另外warpPerspective可以此篇文章
你可能也想看
Google News 追蹤
Thumbnail
該來的終究還是來了 度過焦躁不安的一整周,學徒老人家我的不安感等比級數的襲來,自3/19寫了第一篇關於<巴克萊銀行:倉促撤退>的報告,看到市場上的機構法人有如大洪水、地震來臨前夕開始竄逃撤退。 海湖莊園協議 接著,在3/31與4/2兩天接著寫了川普與他的財經團隊在海湖莊園豪
Thumbnail
空單爆天量、技術指標超賣、情緒恐慌到極致:美股嘎空行情有機會啟動嗎? 重點摘要: 技術面極度超賣,反彈條件醞釀中,但尚未明確止穩 SPY 與 QQQ 的重要指標,如MACD、KDJ、RSI等指標進入極端超賣區,但尚未出現底部鈍化或明確反轉訊號,技術面仍屬空方主導。 連續出現跳空缺口,空方動
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
所謂電腦視覺 電腦視覺算不算是一種AI?答案是對,電腦視覺就是AI的其中一項應用。我們可以把「電腦視覺」想像成「讓電腦學會用眼睛看懂世界」。就像人類用眼睛看東西並理解這些東西的樣子,電腦視覺是讓電腦學會「看」影像或影片,並從中「理解」裡面有哪些內容。然而,讓電腦跟人腦一樣得理解圖片內容,就是其最大
Thumbnail
使用 LBP(Local Binary Patterns) 進行紋理分析和瑕疵檢測 Local Binary Patterns(LBP) 是一種用來描述圖像紋理的特徵提取技術。LBP 對於檢測表面紋理的異常具有很好的效果,尤其在檢測紋理一致的材料表面(例如紡織品、紙張、金屬)時,LBP 非常有用。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
本篇文章主要講述cv2.connectedComponent應用於物件上的分割,將不同文字分割並用不同顏色標記。 範例程式結果圖 cv2.connectedComponentsWithStats 是 OpenCV 中用來執行連通元件標記的函式之一。
Thumbnail
伽瑪校正(Gamma correction)被視為影像增強的一種方法之一。 通過調整 gamma 值,可以改變圖像的亮度和對比度,從而使圖像更清晰或更具有視覺效果。 以下將利用cv2.LUT及numpy的組合實現伽瑪校正,及詳細介紹cv2.LUT 函式應用。
Thumbnail
介紹OpenCV中的cv2.matchTemplate和cv2.minMaxLoc函數的使用方法和參數,提供程式範例以及相關特徵匹配的詳細介紹,讓讀者對此有更深入的瞭解。
Thumbnail
該來的終究還是來了 度過焦躁不安的一整周,學徒老人家我的不安感等比級數的襲來,自3/19寫了第一篇關於<巴克萊銀行:倉促撤退>的報告,看到市場上的機構法人有如大洪水、地震來臨前夕開始竄逃撤退。 海湖莊園協議 接著,在3/31與4/2兩天接著寫了川普與他的財經團隊在海湖莊園豪
Thumbnail
空單爆天量、技術指標超賣、情緒恐慌到極致:美股嘎空行情有機會啟動嗎? 重點摘要: 技術面極度超賣,反彈條件醞釀中,但尚未明確止穩 SPY 與 QQQ 的重要指標,如MACD、KDJ、RSI等指標進入極端超賣區,但尚未出現底部鈍化或明確反轉訊號,技術面仍屬空方主導。 連續出現跳空缺口,空方動
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
所謂電腦視覺 電腦視覺算不算是一種AI?答案是對,電腦視覺就是AI的其中一項應用。我們可以把「電腦視覺」想像成「讓電腦學會用眼睛看懂世界」。就像人類用眼睛看東西並理解這些東西的樣子,電腦視覺是讓電腦學會「看」影像或影片,並從中「理解」裡面有哪些內容。然而,讓電腦跟人腦一樣得理解圖片內容,就是其最大
Thumbnail
使用 LBP(Local Binary Patterns) 進行紋理分析和瑕疵檢測 Local Binary Patterns(LBP) 是一種用來描述圖像紋理的特徵提取技術。LBP 對於檢測表面紋理的異常具有很好的效果,尤其在檢測紋理一致的材料表面(例如紡織品、紙張、金屬)時,LBP 非常有用。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
本篇文章主要講述cv2.connectedComponent應用於物件上的分割,將不同文字分割並用不同顏色標記。 範例程式結果圖 cv2.connectedComponentsWithStats 是 OpenCV 中用來執行連通元件標記的函式之一。
Thumbnail
伽瑪校正(Gamma correction)被視為影像增強的一種方法之一。 通過調整 gamma 值,可以改變圖像的亮度和對比度,從而使圖像更清晰或更具有視覺效果。 以下將利用cv2.LUT及numpy的組合實現伽瑪校正,及詳細介紹cv2.LUT 函式應用。
Thumbnail
介紹OpenCV中的cv2.matchTemplate和cv2.minMaxLoc函數的使用方法和參數,提供程式範例以及相關特徵匹配的詳細介紹,讓讀者對此有更深入的瞭解。