阈值分割

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————返回阈值=thresh;dst————图片处理的结果;
# 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————返回阈值=thresh;dst————图片处理的结果;
# 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()
上一篇:python+openCV图像处理(四)色彩空间转换


下一篇:OpenCV图像处理学习笔记-Day02