【youcans 的 OpenCV 例程200篇】158. 阈值处理之固定阈值法
歡迎關注 『youcans 的 OpenCV 例程 200 篇』 系列,持續更新中
歡迎關注 『youcans 的 OpenCV學習課』 系列,持續更新中
【youcans 的 OpenCV 例程200篇】158. 閾值處理之固定閾值法
3.1 閾值處理基礎
閾值就是臨界值。圖像閾值處理簡單、直觀,計算速度快,是圖像處理的基礎操作,在圖像分割中處于核心地位。
根據灰度值和灰度值的限制將圖像劃分為多個區域,或提取圖像中的目標物體,是最基本的閾值處理方法。
例如,圖像由暗色背景上的亮目標組成,目標像素和背景像素的灰度值組合構成兩種主要模式,可以通過設定適當的閾值 T,將圖像的像素劃分為兩類:灰度值大于 T 的像素集是目標,小于 T 的像素集是背景。
如果圖像的直方圖存在明顯邊界,容易找到圖像的分割閾值;但如果圖像直方圖分界不明顯,則很難找到合適的閾值,甚至可能無法找到固定的閾值有效地分割圖像。
當 T 是應用于整幅圖像的常數,稱為全局閾值處理;當 T 對于整幅圖像發生變化時,稱為可變閾值處理。有時,對應于圖像中任一點的 T 值取決于該點的鄰域的限制,稱為局部閾值處理。
當圖像中存在高斯噪聲時,通常難以通過全局閾值將圖像的邊界完全分開。如果圖像的邊界是在局部對比下出現的,不同位置的閾值也不同,使用全局閾值的效果將會很差。
OpenCV 提供了函數 cv.threshold 可以對圖像進行閾值處理。
函數說明:
cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst函數 threshold() 可以將灰度圖像轉換為二值圖像,圖像完全由像素 0 和 255 構成,呈現出只有黑白兩色的視覺效果。
灰度閾值化通過選取的灰度閾值 thresh,將每個像素的灰度值與閾值進行比較,將灰度大于閾值的像素點置為最大灰度,小于閾值的像素點置為最小灰度,得到二值圖像,可以突出圖像輪廓,把目標從背景中分割出來。
參數說明:
- scr:變換操作的輸入圖像,nparray 二維數組,必須是單通道灰度圖像!
- thresh:閾值,取值范圍 0~255
- maxval:填充色,取值范圍 0~255,一般取 255
- type:變換類型
- cv2.THRESH_BINARY:大于閾值時置 255,否則置 0
- cv2.THRESH_BINARY_INV:大于閾值時置 0,否則置 255
- cv2.THRESH_TRUNC:大于閾值時置為閾值 thresh,否則不變(保持原色)
- cv2.THRESH_TOZERO:大于閾值時不變(保持原色),否則置 0
- cv2.THRESH_TOZERO_INV:大于閾值時置 0,否則不變(保持原色)
- cv2.THRESH_OTSU:使用 OTSU 算法選擇閾值
- 返回值 retval:返回二值化的閾值
- 返回值 dst:返回閾值變換的輸出圖像
注意:
- 函數 cv2.threshold 進行固定閾值的二值化處理;函數 cv2.adaptiveThreshold 為自適應閾值的二值化處理函數,可以通過比較像素點與周圍像素點的關系動態調整閾值。
- 確切地說,只有 type 為 cv2.THRESH_BINARY 或 cv2.THRESH_BINARY_INV 時輸出為二值圖像,其它變換類型時進行閾值處理但并不是二值處理。
例程 11.15:圖像閾值處理之固定閾值法
# 11.15 圖像閾值處理之固定閾值法# 生成灰度圖像hImg, wImg = 512, 512img = np.zeros((hImg, wImg), np.uint8) # # 創建黑色圖像 RGB=0cv2.rectangle(img, (60,60), (450,320), (127,127,127), -1) # -1 表示矩形填充cv2.circle(img, (256, 256), 120, (205,205,205), -1) # -1 表示圓形填充# 添加高斯噪聲mu, sigma = 0.0, 25.0noiseGause = np.random.normal(mu, sigma, img.shape)imgNoise = img + noiseGauseimgNoise = np.uint8(cv2.normalize(imgNoise, None, 0, 255, cv2.NORM_MINMAX)) # 歸一化為 [0,255]# 閾值處理ret, imgBin1 = cv2.threshold(img, 63, 255, cv2.THRESH_BINARY) # 閾值分割, thresh=63ret, imgBin2 = cv2.threshold(img, 125, 255, cv2.THRESH_BINARY) # 閾值分割, thresh=125ret, imgBin3 = cv2.threshold(img, 175, 255, cv2.THRESH_BINARY) # 閾值分割, thresh=175plt.figure(figsize=(10, 7))plt.subplot(231), plt.axis('off'), plt.title("original"), plt.imshow(img, 'gray')plt.subplot(232), plt.axis('off'), plt.title("original with noise"), plt.imshow(imgNoise, 'gray')plt.subplot(233, yticks=[]), plt.title("Gray Hist") # 直方圖histNP, bins = np.histogram(imgNoise.flatten(), bins=255, range=[0, 255], density=True)plt.bar(bins[:-1], histNP[:])plt.subplot(234), plt.title("threshold=63"), plt.axis('off'), plt.imshow(imgBin1,'gray')plt.subplot(235), plt.title("threshold=125"), plt.axis('off'), plt.imshow(imgBin2,'gray')plt.subplot(236), plt.title("threshold=175"), plt.axis('off'), plt.imshow(imgBin3,'gray')plt.tight_layout()plt.show()(本節完)
版權聲明:
youcans@xupt 原創作品,轉載必須標注原文鏈接:(https://blog.csdn.net/youcans/article/details/124181317)
Copyright 2022 youcans, XUPT
Crated:2022-4-15
歡迎關注 『youcans 的 OpenCV 例程 200 篇』 系列,持續更新中
歡迎關注 『youcans 的 OpenCV學習課』 系列,持續更新中
【youcans 的 OpenCV 例程200篇】01. 圖像的讀取(cv2.imread)
【youcans 的 OpenCV 例程200篇】02. 圖像的保存(cv2.imwrite)
【youcans 的 OpenCV 例程200篇】03. 圖像的顯示(cv2.imshow)
【youcans 的 OpenCV 例程200篇】04. 用 matplotlib 顯示圖像(plt.imshow)
【youcans 的 OpenCV 例程200篇】05. 圖像的屬性(np.shape)
【youcans 的 OpenCV 例程200篇】06. 像素的編輯(img.itemset)
【youcans 的 OpenCV 例程200篇】07. 圖像的創建(np.zeros)
【youcans 的 OpenCV 例程200篇】08. 圖像的復制(np.copy)
【youcans 的 OpenCV 例程200篇】09. 圖像的裁剪(cv2.selectROI)
【youcans 的 OpenCV 例程200篇】10. 圖像的拼接(np.hstack)
【youcans 的 OpenCV 例程200篇】11. 圖像通道的拆分(cv2.split)
【youcans 的 OpenCV 例程200篇】12. 圖像通道的合并(cv2.merge)
【youcans 的 OpenCV 例程200篇】13. 圖像的加法運算(cv2.add)
【youcans 的 OpenCV 例程200篇】14. 圖像與標量相加(cv2.add)
【youcans 的 OpenCV 例程200篇】15. 圖像的加權加法(cv2.addWeight)
【youcans 的 OpenCV 例程200篇】16. 不同尺寸的圖像加法
【youcans 的 OpenCV 例程200篇】17. 兩張圖像的漸變切換
【youcans 的 OpenCV 例程200篇】18. 圖像的掩模加法
【youcans 的 OpenCV 例程200篇】19. 圖像的圓形遮罩
【youcans 的 OpenCV 例程200篇】20. 圖像的按位運算
【youcans 的 OpenCV 例程200篇】21. 圖像的疊加
【youcans 的 OpenCV 例程200篇】22. 圖像添加非中文文字
【youcans 的 OpenCV 例程200篇】23. 圖像添加中文文字
【youcans 的 OpenCV 例程200篇】24. 圖像的仿射變換
【youcans 的 OpenCV 例程200篇】25. 圖像的平移
【youcans 的 OpenCV 例程200篇】26. 圖像的旋轉(以原點為中心)
【youcans 的 OpenCV 例程200篇】27. 圖像的旋轉(以任意點為中心)
【youcans 的 OpenCV 例程200篇】28. 圖像的旋轉(直角旋轉)
【youcans 的 OpenCV 例程200篇】29. 圖像的翻轉(cv2.flip)
【youcans 的 OpenCV 例程200篇】30. 圖像的縮放(cv2.resize)
【youcans 的 OpenCV 例程200篇】31. 圖像金字塔(cv2.pyrDown)
【youcans 的 OpenCV 例程200篇】32. 圖像的扭變(錯切)
【youcans 的 OpenCV 例程200篇】33. 圖像的復合變換
【youcans 的 OpenCV 例程200篇】34. 圖像的投影變換
【youcans 的 OpenCV 例程200篇】35. 圖像的投影變換(邊界填充)
【youcans 的 OpenCV 例程200篇】36. 直角坐標與極坐標的轉換
【youcans 的 OpenCV 例程200篇】37. 圖像的灰度化處理和二值化處理
【youcans 的 OpenCV 例程200篇】38. 圖像的反色變換(圖像反轉)
【youcans 的 OpenCV 例程200篇】39. 圖像灰度的線性變換
【youcans 的 OpenCV 例程200篇】40. 圖像分段線性灰度變換
【youcans 的 OpenCV 例程200篇】41. 圖像的灰度變換(灰度級分層)
【youcans 的 OpenCV 例程200篇】42. 圖像的灰度變換(比特平面分層)
【youcans 的 OpenCV 例程200篇】43. 圖像的灰度變換(對數變換)
【youcans 的 OpenCV 例程200篇】44. 圖像的灰度變換(伽馬變換)
【youcans 的 OpenCV 例程200篇】45. 圖像的灰度直方圖
【youcans 的 OpenCV 例程200篇】46. 直方圖均衡化
【youcans 的 OpenCV 例程200篇】47. 圖像增強—直方圖匹配
【youcans 的 OpenCV 例程200篇】48. 圖像增強—彩色直方圖匹配
【youcans 的 OpenCV 例程200篇】49. 圖像增強—局部直方圖處理
【youcans 的 OpenCV 例程200篇】50. 圖像增強—直方圖統計量圖像增強
【youcans 的 OpenCV 例程200篇】51. 圖像增強—直方圖反向追蹤
【youcans 的 OpenCV 例程200篇】52. 圖像的相關與卷積運算
【youcans 的 OpenCV 例程200篇】53. Scipy 實現圖像二維卷積
【youcans 的 OpenCV 例程200篇】54. OpenCV 實現圖像二維卷積
【youcans 的 OpenCV 例程200篇】55. 可分離卷積核
【youcans 的 OpenCV 例程200篇】56. 低通盒式濾波器
【youcans 的 OpenCV 例程200篇】57. 低通高斯濾波器
【youcans 的 OpenCV 例程200篇】58. 非線性濾波—中值濾波
【youcans 的 OpenCV 例程200篇】59. 非線性濾波—雙邊濾波
【youcans 的 OpenCV 例程200篇】60. 非線性濾波—聯合雙邊濾波
【youcans 的 OpenCV 例程200篇】61. 導向濾波(Guided filter)
【youcans 的 OpenCV 例程200篇】62. 圖像銳化——鈍化掩蔽
【youcans 的 OpenCV 例程200篇】63. 圖像銳化——Laplacian 算子
【youcans 的 OpenCV 例程200篇】64. 圖像銳化——Sobel 算子
【youcans 的 OpenCV 例程200篇】65. 圖像銳化——Scharr 算子
【youcans 的 OpenCV 例程200篇】66. 圖像濾波之低通/高通/帶阻/帶通
【youcans 的 OpenCV 例程200篇】67. 空間域圖像增強的綜合應用
【youcans 的 OpenCV 例程200篇】68. 空間域圖像增強的綜合應用
【youcans 的 OpenCV 例程200篇】69. 連續非周期信號的傅立葉系數
【youcans 的 OpenCV 例程200篇】70. 一維連續函數的傅里葉變換
【youcans 的 OpenCV 例程200篇】71. 連續函數的取樣
【youcans 的 OpenCV 例程200篇】72. 一維離散傅里葉變換
【youcans 的 OpenCV 例程200篇】73. 二維連續傅里葉變換
【youcans 的 OpenCV 例程200篇】74. 圖像的抗混疊
【youcans 的 OpenCV 例程200篇】75. Numpy 實現圖像傅里葉變換
【youcans 的 OpenCV 例程200篇】76. OpenCV 實現圖像傅里葉變換
【youcans 的 OpenCV 例程200篇】77. OpenCV 實現快速傅里葉變換
【youcans 的 OpenCV 例程200篇】78. 頻率域圖像濾波基礎
【youcans 的 OpenCV 例程200篇】79. 頻率域圖像濾波的基本步驟
【youcans 的 OpenCV 例程200篇】80. 頻率域圖像濾波詳細步驟
【youcans 的 OpenCV 例程200篇】81. 頻率域高斯低通濾波器
【youcans 的 OpenCV 例程200篇】82. 頻率域巴特沃斯低通濾波器
【youcans 的 OpenCV 例程200篇】83. 頻率域低通濾波:印刷文本字符修復
【youcans 的 OpenCV 例程200篇】84. 由低通濾波器得到高通濾波器
【youcans 的 OpenCV 例程200篇】85. 頻率域高通濾波器的應用
【youcans 的 OpenCV 例程200篇】86. 頻率域濾波應用:指紋圖像處理
【youcans 的 OpenCV 例程200篇】87. 頻率域鈍化掩蔽
【youcans 的 OpenCV 例程200篇】88. 頻率域拉普拉斯高通濾波
【youcans 的 OpenCV 例程200篇】89. 帶阻濾波器的傳遞函數
【youcans 的 OpenCV 例程200篇】90. 頻率域陷波濾波器
【youcans 的 OpenCV 例程200篇】91. 高斯噪聲、瑞利噪聲、愛爾蘭噪聲
【youcans 的 OpenCV 例程200篇】92. 指數噪聲、均勻噪聲、椒鹽噪聲
【youcans 的 OpenCV 例程200篇】93. 噪聲模型的直方圖
【youcans 的 OpenCV 例程200篇】94. 算術平均濾波器
【youcans 的 OpenCV 例程200篇】95. 幾何均值濾波器
【youcans 的 OpenCV 例程200篇】96. 諧波平均濾波器
【youcans 的 OpenCV 例程200篇】97. 反諧波平均濾波器
【youcans 的 OpenCV 例程200篇】98. 統計排序濾波器
【youcans 的 OpenCV 例程200篇】99. 修正阿爾法均值濾波器
【youcans 的 OpenCV 例程200篇】100. 自適應局部降噪濾波器
【youcans 的 OpenCV 例程200篇】101. 自適應中值濾波器
【youcans 的 OpenCV 例程200篇】102. 陷波帶阻濾波器的傳遞函數
【youcans 的 OpenCV 例程200篇】103. 陷波帶阻濾波器消除周期噪聲干擾
【youcans 的 OpenCV 例程200篇】104. 運動模糊退化模型
【youcans 的 OpenCV 例程200篇】105. 湍流模糊退化模型
【youcans 的 OpenCV 例程200篇】106. 退化圖像的逆濾波
【youcans 的 OpenCV 例程200篇】107. 退化圖像的維納濾波
【youcans 的 OpenCV 例程200篇】108. 約束最小二乘方濾波
【youcans 的 OpenCV 例程200篇】109. 幾何均值濾波
【youcans 的 OpenCV 例程200篇】110. 投影和雷登變換
【youcans 的 OpenCV 例程200篇】111. 雷登變換反投影重建圖像
【youcans 的 OpenCV 例程200篇】112. 濾波反投影重建圖像
【youcans 的 OpenCV 例程200篇】113. 形態學操作之腐蝕
【youcans 的 OpenCV 例程200篇】114. 形態學操作之膨脹
【youcans 的 OpenCV 例程200篇】115. 形態學操作之開運算
【youcans 的 OpenCV 例程200篇】116. 形態學操作之閉運算
【youcans 的 OpenCV 例程200篇】117. 形態學操作之頂帽運算
【youcans 的 OpenCV 例程200篇】118. 形態學操作之底帽運算
【youcans 的 OpenCV 例程200篇】119. 圖像的形態學梯度
【youcans 的 OpenCV 例程200篇】120. 擊中-擊不中變換
【youcans 的 OpenCV 例程200篇】121. 擊中-擊不中用于特征識別
【youcans 的 OpenCV 例程200篇】122. 形態算法之邊界提取
【youcans 的 OpenCV 例程200篇】123. 形態算法之孔洞填充
【youcans 的 OpenCV 例程200篇】124. 孔洞填充的泛洪算法
【youcans 的 OpenCV 例程200篇】125. 形態算法之提取連通分量
【youcans 的 OpenCV 例程200篇】126. 形態算法之凸殼
【youcans 的 OpenCV 例程200篇】127. 形態算法之細化
【youcans 的 OpenCV 例程200篇】128. 形態算法之骨架 (skimage)
【youcans 的 OpenCV 例程200篇】129. 形態算法之骨架 (重建開運算)
【youcans 的 OpenCV 例程200篇】130. 形態學之提取水平和垂直線
【youcans 的 OpenCV 例程200篇】131. 形態學重建之豎線字符提取
【youcans 的 OpenCV 例程200篇】132. 形態學重建之孔洞填充算法
【youcans 的 OpenCV 例程200篇】133. 形態學重建之邊界清除
【youcans 的 OpenCV 例程200篇】134. 形態學重建之細胞計數
【youcans 的 OpenCV 例程200篇】135. 形態學重建之粒度測定
【youcans 的 OpenCV 例程200篇】136. 灰度腐蝕和灰度膨脹
【youcans 的 OpenCV 例程200篇】137. 灰度開運算和灰度閉運算原理
【youcans 的 OpenCV 例程200篇】138. 灰度開運算和灰度閉運算
【youcans 的 OpenCV 例程200篇】139. 灰度頂帽變換校正陰影
【youcans 的 OpenCV 例程200篇】140. 灰度底帽變換校正光照
【youcans 的 OpenCV 例程200篇】141. 灰度底帽變換的三維地形圖
【youcans 的 OpenCV 例程200篇】142. 基于灰度形態學的圖像平滑
【youcans 的 OpenCV 例程200篇】143. 基于灰度形態學的粒度測定
【youcans 的 OpenCV 例程200篇】144. 基于灰度形態學的紋理分割
【youcans 的 OpenCV 例程200篇】145. 形態學之邊緣和角點檢測
【youcans 的 OpenCV 例程200篇】146. 基于灰度形態學的復雜背景圖像重建
【youcans 的 OpenCV 例程200篇】147. 圖像分割之孤立點檢測
【youcans 的 OpenCV 例程200篇】148. 圖像分割之線檢測
【youcans 的 OpenCV 例程200篇】149. 圖像分割之邊緣模型
【youcans 的 OpenCV 例程200篇】150. 邊緣檢測梯度算子
【youcans 的 OpenCV 例程200篇】151. 邊緣檢測中的平滑處理
【youcans 的 OpenCV 例程200篇】152. 邊緣檢測之 LoG 算子
【youcans 的 OpenCV 例程200篇】153. 邊緣檢測之 DoG 算子
【youcans 的 OpenCV 例程200篇】154. 邊緣檢測之 Canny 算子
【youcans 的 OpenCV 例程200篇】155. 邊緣連接的局部處理方法
【youcans 的 OpenCV 例程200篇】156. 邊緣連接局部處理的簡化算法
【youcans 的 OpenCV 例程200篇】157. 霍夫變換直線檢測
【youcans 的 OpenCV 例程200篇】158. 閾值處理之固定閾值法
總結
以上是生活随笔為你收集整理的【youcans 的 OpenCV 例程200篇】158. 阈值处理之固定阈值法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 组合赋权法之matlab
- 下一篇: 数学建模学习笔记(十一)——预测模型