在前面学习了平滑的处理,接着下来将要学习图像分割。当人们观察一个图片时,会把图片里的物体进行分割出来,这样才能知道这张图片里包含有什么物体,然后根据物体的形态进行理解。因此在图像处理里,如果能把图像里的物体分割出来,再进行归类,就可以进一步地进行识别出来。图像分割(image segmentation)技术是计算机视觉领域的一个重要的研究方向,是图像语义理解的重要一环。图像分割是指将图像分成若干具有相似性质的区域的过程,从数学角度来看,图像分割是将图像划分成互不相交的区域的过程。近些年来随着深度学习技术的逐步深入,图像分割技术有了突飞猛进的发展,该技术相关的场景物体分割、人体前背景分割、人脸人体Parsing、三维重建等技术已经在无人驾驶、增强现实、安防监控等行业都得到广泛的应用。接着下来主要围绕着阈值分割技术展开,它是一种基于区域的、简单的通过灰度值信息提取形状的技术,因其实现简单、计算量小、性能稳定而成为图像分割中最基本和应用最广泛的分割技术。如果在阈值分割里,只有两种灰度值:255和0,那么这种分割也叫做二值化处理。阈值分割处理主要是根据灰度信息提取前景,所以对前景物体与背景有较强对比度的图像的分割特别有用。如果对比度比较弱,需要使用前面平滑处理方法进行增强。
对于全局阈值分割,OpenCV提供了下面的函数:
double cv::threshold (InputArray src, OutputArray dst, double thresh, double maxval, int type )
Python:
retval, dst=cv.threshold(src, thresh, maxval, type[, dst])
参数说明:
src:原图像。
dst:结果图像。
thresh:当前阈值。
maxVal:最大阈值,一般为255.
thresholdType:阈值类型,主要有下面几种:
enum ThresholdTypes {
THRESH_BINARY = 0,
THRESH_BINARY_INV = 1,
THRESH_TRUNC = 2,
THRESH_TOZERO = 3,
THRESH_TOZERO_INV = 4,
THRESH_MASK = 7,
THRESH_OTSU = 8,
THRESH_TRIANGLE = 16
};
返回值:
retval: 与参数thresh一致
dst: 结果图像
下面来根据上面的参数来进一步学习,以便理解每个参数的作用。首先来测试THRESH_BINARY类型,它的意思就是把大于thresh的值设置为maxval,小于等于它的值置为0。演示的例子如下:
#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import cv2
import numpy as np
#图像数据
src = np.array([[100, 157, 245], [20, 51, 250], [50, 2, 200]], np.uint8)
#阈值处理
retval, dst = cv2.threshold(src, 150, 255, cv2.THRESH_BINARY)
print(src)
print(retval,'\n', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果输出如下:
[[100 157 245]
[ 20 51 250]
[ 50 2 200]]
150.0
[[ 0 255 255]
[ 0 0 255]
[ 0 0 255]]
其实它的作用如下图:
运算公式如下:
下面来对一幅图片进行处理,阈值设置为100,代码如下:
#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import cv2
import numpy as np
#图片的路径
imgname = "imgbin1.png"
#读取图片
image = cv2.imread(imgname, cv2.IMREAD_GRAYSCALE)
#图片的高度和宽度
h,w = image.shape[:2]
print('imagesize={}-{}'.format(w,h))
#显示原图
cv2.imshow("Image",image)
#阈值分割
retval, out = cv2.threshold(image, 100, 255, cv2.THRESH_BINARY)
cv2.imshow("out",out)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果输出如下:
输入图片
输出图片
https://blog.csdn.net/caimouse/article/details/51749579
转载:https://blog.csdn.net/caimouse/article/details/101294483