• opencv2.4.13+python2.7学习笔记--OpenCV中的图像处理--图像轮廓特征和几何矩


    阅读对象:对概率论中的期望有一点了解。

    1.图像几何矩

    1.1简述

    图像的几何矩包括空间矩、中心矩和中心归一化矩。几何矩具有平移、旋转和尺度不变性,一般是用来做大粒度的区分,用来过滤显然不相关的图像。

    1.2用数学语言阐述图像的几何矩

    针对于一幅图像,我们把像素的坐标看成是一个二维随机变量(X,Y),那么一幅灰度图像可以用二维灰度密度函数来表示,每个像素点的值可以看成是该处的密度,对某点求期望就是该图像在该点处的矩(原点矩),一阶矩和零阶矩可以计算某个形状的重心,二阶矩可以计算形状的方向,因此可以用矩来描述灰度图像的特征。3中矩的计算结果见图2。

    图1 数学表示

    1.3opencv中求矩的函数

     
    class Moments { public: ......
      // 空间矩
    double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03;
    // 中心矩
    double mu20, mu11, mu02, mu30, mu21, mu12, mu03;
    // 中心归一化矩 double nu20, nu11, nu02, nu30, nu21, nu12, nu03;
     }

    2.图像轮廓特征和几何矩案例

    '''
    轮廓特征
    • 查找轮廓的不同特征,例如面积,周长,重心,边界框等。
    '''
    import cv2
    dir='C:/Users/Thinkpad/Desktop/picture/'
    img = cv2.imread(dir + 'q.jpg',0)
    ret,thresh = cv2.threshold(img,127,255,0)
    contours,hierarchy = cv2.findContours(thresh, 1, 2)
    cnt = contours[0]#取第一个轮廓
    M = cv2.moments(cnt)#计算矩
    cx = int(M['m10']/M['m00'])#计算重心
    cy = int(M['m01']/M['m00'])#计算重心
    #轮廓的面积可以使用函数 cv2.contourArea() 计算得到,也可以使用矩(0 阶矩) ,M['m00']
    area = cv2.contourArea(cnt)
    #轮廓周长也被称为弧长。可以使用函数 cv2.arcLength() 计算得到。这个函数的第二参数可以用来指定对象的形状是闭合的(True) ,还是打开的(一条曲线)
    perimeter = cv2.arcLength(cnt,True)

    图2 Opencv+python中矩计算结果的展现形式

    参考资料:

    http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_contours/py_contours_begin/py_contours_begin.html#contours-getting-started

    http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_contours/py_contour_features/py_contour_features.html

    http://www.cnblogs.com/skyseraph/archive/2011/07/19/2110183.html

    http://blog.csdn.net/gdfsg/article/details/51015066

     

    end!!

     

     

     

     

     

     

     

     

  • 相关阅读:
    sql中的并、交、差
    白水的sql需求:每个病人的对应最小诊断类别|partition|
    |转|oracle行转列点评oracle11g sql新功能pivot/unpivot
    oracle wm_concat(column)函数的使用不同公司支付同一客商(行转列)|转|
    记录那些删除的伴我成长的触发器
    PL/SQL Developer使用技巧|F=Forwarding|
    手工创建数据库 ocp课程 wait for
    Oracle数据库监听配置|转|
    最新解决的sql:病人相邻两次看病小于3天
    tns的一些常见错误分析实例 |转|
  • 原文地址:https://www.cnblogs.com/llfisher/p/6557611.html
Copyright © 2020-2023  润新知