opencv-python-阈值处理笔记

关键单词:

threshold:阈;门槛;起点;开端

美 [ˈθreʃˌhoʊld]  英 [ˈθreʃˌhəʊld]

truncate:截断,删节(尤指掐头或去尾)类似cut

美 [ˈtrʌŋˌkeɪt]  英 [trʌŋˈkeɪt]

adaptive:适应的;有适应能力的

美 [əˈdæptɪv]  英 [ə'dæptɪv]

正反二值化:这种处理的特点是,以127为界线,非黑即白,其中白的显示为255

import numpy as np
import cv2

image1 = cv2.imread("1.jpg", 1)
gray = cv2.cvtColor(image1, cv2.COLOR_RGB2GRAY)
t1, des1_1 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
t2, des1_2 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)

cv2.imshow("11__________", image1)
cv2.imshow("binary______", des1_1)
cv2.imshow("binary_inv__", des1_2)
cv2.waitKey()
cv2.destroyAllWindows()

正反零处理:这种处理的特点是只处理高于(或低于)127的部分,另一部分的保持不变。下图的图三明显可见这种特点。

image1 = cv2.imread("0.jpg", 1)
gray = cv2.cvtColor(image1, cv2.COLOR_RGB2GRAY)
t1, des1_1 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO)
t2, des1_2 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO_INV)

cv2.imshow("11__________", image1)
cv2.imshow("tozero______", des1_1)
cv2.imshow("tozero_inv__", des1_2)
cv2.waitKey()
cv2.destroyAllWindows()

截断处理:这种处理的特点是,将所有值大于127的点,变成127,因此亮部都变暗了,相当于图像不会存在比127大的点(既是截断了)

image1 = cv2.imread("0.jpg", 1)
gray = cv2.cvtColor(image1, cv2.COLOR_RGB2GRAY)
t3, des1_3 = cv2.threshold(gray, 127, 255, cv2.THRESH_TRUNC)

cv2.imshow("gray________", gray)
cv2.imshow("truncate____", des1_3)
cv2.waitKey()
cv2.destroyAllWindows()

OTSU方法:以上的二值化处理、零处理、截断处理,都是设置了127为分界线,使用OTSU方法,可以动态的计算分界线。当然它也有优缺点,比如性能好,又比如对噪点多、背景乱的图像不怎么友好

扩展阅读:http://t.csdnimg.cn/BllZB

image1 = cv2.imread("0.jpg", 1)
gray = cv2.cvtColor(image1, cv2.COLOR_RGB2GRAY)
t1, des1_1 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 要把127改为0
t2, des1_2 = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

cv2.imshow("11___________", gray)
cv2.imshow("binary_______", des1_1)
cv2.imshow("binary_otsu__", des1_2)
cv2.waitKey()
cv2.destroyAllWindows()

自适应处理:这种处理的特点是,将图像分成小块(5,5,19,99),对每块进行求均值(平均值<mean>、高斯均值<gaussian>),以均值 - 加权值(2,2,2,2)为分界线,进行正反二值化处理

扩展阅读:http://t.csdnimg.cn/LEYx7

image1 = cv2.imread("0.jpg", 1)
gray = cv2.cvtColor(image1, cv2.COLOR_RGB2GRAY)
des1_1 = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 5, 2)
des1_2 = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 2)
des1_3 = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 19, 2)
des1_4 = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 99, 2)

cv2.imshow("gray____________", gray)
cv2.imshow("gaussian________", des1_1)
cv2.imshow("mean____________", des1_2)
cv2.imshow("mean_19_________", des1_3)
cv2.imshow("mean_99_________", des1_4)
cv2.waitKey()
cv2.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值