阈值分割

让人想犯罪 __ 提交于 2020-02-26 10:32:47

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 cv2a=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()#(反)阈值化为0r,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 cv2a=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()#(反)阈值化为0r,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()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!