图像分割简介

简介

  计算机视觉的基本任务包括图像识别,物体检测,图像分割等。图像识别主要是对给定图像进行分类;物体检测需要将利用矩形框将图像中的物体标识出来;图像分割需要将图像中不同的像素点进行分类,与物体检测相比,图像分割更加细致,难度更大,之前我分析过FCN,它是利用机器学习的方法进行图像分割,但是图像分割还有其他不同的方法,这也是我在这篇博客里头要提到的。

基本方法

  • 区域分割

    区域分割一般是将图像中的物体与背景分割开。我们可以设定一个或多个阈值,将图片分为两个或多个部分。一般可以将阈值设定为图像像素的均值;或者使用选定起始点以后区域增长算法进行分割;再或者采用聚类的方式进行分割。

  • 边缘分割

    两个相邻区域之间会有边界,我们可以根据这个边界对图像进行分割。边缘检测一般采用矩阵算子进行卷积运算,比较常用的有sobel operator。
    检测水平边缘采用水平sobel operator.
    [ 1 2 1 0 0 0 − 1 − 2 − 1 ] \left[ \begin{matrix} 1&2&1\\ 0&0&0\\ -1&-2&-1 \end{matrix} \right] 101202101
    检测垂直边缘采用垂直sobel operator.
    [ − 1 0 1 − 2 0 2 − 1 0 1 ] \left[ \begin{matrix} -1&0&1\\ -2&0&2\\ -1&0&1 \end{matrix} \right] 121000121
    可以同时检测水平和垂直边缘的Laplace operator.
    [ 1 1 1 1 − 8 1 1 1 1 ] \left[ \begin{matrix} 1&1&1\\ 1&-8&1\\ 1&1&1 \end{matrix} \right] 111181111
    测试代码如下:

    import matplotlib.pyplot as plt
    % matplotlib inline
    from scipy import ndimage
    from skimage.color import rgb2gray
    import numpy as np
    img=plt.imread("test.jpg")
    # plt.imshow(img)
    print(img.shape)
    grayimg=rgb2gray(img)
    plt.imshow(grayimg,cmap='gray')
    sobel_horizontal=np.array([[1,2,1],[0,0,0],[-1,-2,-1]])
    sobel_vertical=np.array([[-1,0,1],[-2,0,2],[-1,0,1]])
    laplace=np.array([[1,1,1],[1,-8,1],[1,1,1]])
    sobel_h=ndimage.convolve(grayimg,sobel_horizontal,mode='reflect')
    sobel_v=ndimage.convolve(grayimg,sobel_vertical,mode='reflect')
    laplace_img=ndimage.convolve(grayimg,laplace,mode='reflect')
    plt.imshow(sobel_h,cmap='gray')
    plt.imshow(sobel_v,cmap='gray')
    plt.imshow(laplace_img,cmap='gray')
    

    以下是原图
    图像分割简介_第1张图片
    以下是horizontal sobel operator处理后的图片
    图像分割简介_第2张图片
    以下是vertical sobel operator处理过后的图片
    图像分割简介_第3张图片
    以下是laplace operator处理后的图片
    图像分割简介_第4张图片
    对于比较简单的图像,上述算子处理的效果还是很不错的。

  • 基于深度学习的分割

    基于深度学习的分割一般是采用CNN进行特征提取然后进行分割,主要有以下几种模型:

    • R-CNN
    • Fast R-CNN
    • Faster R-CNN
    • Mask R-CNN
    • FCN

    FCN我已经在之前的博客中分析过了,其他几类模型都是基于R-CNN演变而来,以后已机会再详细介绍

参考资料
  • Image segmentation
  • Region based segmentation

你可能感兴趣的:(cv,图像分割)