閾值分割


1,閾值(threshold):是我們認為設定的一個像素值。取值在(0~255)

 

 

二進制閾值化:(threshold binary)(結果值二值不一定是0-1)

  1. 首先要選擇一個特定的閾值a
  2. 新的閾值識別規則為
    • 大於等於閾值的像素點的灰度值設為最大值(例如8位灰度值的最大值255)
    • 灰度值小於閾值的像素的灰度值設為0

反二進制閾值化:(threshold binary,inverted)

  1. 與二進制閾值化值的對應方式正好相反。其他相同。

 

截斷閾值化:

  1. 首先選擇一個閾值
  2. 圖像中像素值比閾值大的重新設定為閾值
  3. 圖像中像素值比閾值小的不變

 

反閾值化為0:(threshold to zero,inverted)

  1. 先選定一個閾值
  2. 把大於等於閾值的像素點變為0
  3. 把小於閾值的的像素點保持不變

 

閾值化為0:(與反閾值化為0相反)

  1. 先選定一個閾值
  2. 把大於等於閾值的像素點保持不變
  3. 把小於閾值的的像素點化為0

 

附代碼如下:

#threshold函數
#retval,dst=cv2.threshold(src,thresh,maxval,type)
#retral————返回閾值=threshdst————圖片處理的結果;
# src——————源圖像;thresh————閾值;maxval——————閾值分割后的最大值;
# type————進行那種類型的閾值分割

#注意原始圖像的類型,必須是8位單通道圖像,彩色圖像無意義

import cv2
a=cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)


#(反)二進制閾值化
r,b=cv2.threshold(a,127,255,cv2.THRESH_BINARY_INV)
l,c=cv2.threshold(a,127,255,cv2.THRESH_BINARY)
cv2.imshow("a",a)
cv2.imshow("b",b)
cv2.imshow("c",c)
print(r)
cv2.waitKey()
cv2.destroyAllWindows()

#截斷閾值化(只是后面的type變化)
r,b=cv2.threshold(a,127,255,cv2.THRESH_TRUNC)
cv2.imshow("a",a)
cv2.imshow("b",b)
print(r)
cv2.waitKey()
cv2.destroyAllWindows()

#()閾值化為0
r,b=cv2.threshold(a,127,255,cv2.THRESH_TOZERO_INV)
l,c=cv2.threshold(a,127,255,cv2.THRESH_TOZERO)
cv2.imshow("a",a)
cv2.imshow("b",b)
cv2.imshow("c",c)
print(r)
cv2.waitKey()
cv2.destroyAllWindows()

  

#threshold函數
#retval,dst=cv2.threshold(src,thresh,maxval,type)
#retral————返回閾值=threshdst————圖片處理的結果;
# src——————源圖像;thresh————閾值;maxval——————閾值分割后的最大值;
# type————進行那種類型的閾值分割

#注意原始圖像的類型,必須是8位單通道圖像,彩色圖像無意義

import cv2
a=cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)


#(反)二進制閾值化
r,b=cv2.threshold(a,127,255,cv2.THRESH_BINARY_INV)
l,c=cv2.threshold(a,127,255,cv2.THRESH_BINARY)
cv2.imshow("a",a)
cv2.imshow("b",b)
cv2.imshow("c",c)
print(r)
cv2.waitKey()
cv2.destroyAllWindows()

#截斷閾值化(只是后面的type變化)
r,b=cv2.threshold(a,127,255,cv2.THRESH_TRUNC)
cv2.imshow("a",a)
cv2.imshow("b",b)
print(r)
cv2.waitKey()
cv2.destroyAllWindows()

#()閾值化為0
r,b=cv2.threshold(a,127,255,cv2.THRESH_TOZERO_INV)
l,c=cv2.threshold(a,127,255,cv2.THRESH_TOZERO)
cv2.imshow("a",a)
cv2.imshow("b",b)
cv2.imshow("c",c)
print(r)
cv2.waitKey()
cv2.destroyAllWindows()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM