Python图像处理(9):Hu矩

快乐虾

http://blog.csdn.net/lights_joy/

欢迎转载,但请保留作者信息

几何矩是由Hu在1962年提出的,具有平移、旋转和尺度不变性。opencv中关于矩的计算是由C++中的Moments这个类来完成的:

//! raster image moments
class CV_EXPORTS_W_MAP Moments
{
public:
    //! the default constructor
    Moments();
    //! the full constructor
    Moments(double m00, double m10, double m01, double m20, double m11,
            double m02, double m30, double m21, double m12, double m03 );
    //! the conversion from CvMoments
    Moments( const CvMoments& moments );
    //! the conversion to CvMoments
    operator CvMoments() const;

    //! spatial moments
    CV_PROP_RW double  m00, m10, m01, m20, m11, m02, m30, m21, m12, m03;
    //! central moments
    CV_PROP_RW double  mu20, mu11, mu02, mu30, mu21, mu12, mu03;
    //! central normalized moments
    CV_PROP_RW double  nu20, nu11, nu02, nu30, nu21, nu12, nu03;
};

可以明显地看到它主要包括空间矩,中心矩和中心归一化矩。

一直不太相信几何矩对于植物叶片识别能够起到多大作用,尤其对于遮挡的叶片。不过刚好学习到这里,就试试在Python下计算Hu矩。

采用的图片是这前分割出来的彩色图像:

我们已经得到了它们的二值图像:

我们就以这两张二值图像做为求矩的输入图像。

# -*- coding: utf-8 -*-
import cv2
import numpy as np
#import matplotlib.pyplot as plt

dir = ‘F:\\projects\\src\\opencv\\images\\cotton\\‘;

# Hu不变矩

# 读取棉花图像
cotton = cv2.imread(dir + ‘39.mask.jpg‘)
cotton = cotton[:,:,0]  # 这是二值图像,仅取第一个通道
cv2.imshow(‘cotton‘, cotton)

# 读取杂草图像
weed = cv2.imread(dir + ‘47.mask.jpg‘)
weed = weed[:,:,0]  # 这是二值图像,仅取第一个通道
cv2.imshow(‘weed‘, weed)

# 计算棉花的矩和Hu矩
moments = cv2.moments(cotton)
hu_moments = cv2.HuMoments(moments)
print(‘cotton moments:‘)
print(hu_moments)

# 计算杂草的矩和Hu矩
moments = cv2.moments(weed)
hu_moments = cv2.HuMoments(moments)
print(‘weed moments:‘)
print(hu_moments)

cv2.waitKey()

得到计算结果:

仅两张图片其实说明不了什么问题,只不过通过上面的代码展示一下用Python计算Hu矩的方式,仅此而已。

??

时间: 2024-08-29 18:45:22

Python图像处理(9):Hu矩的相关文章

Hu矩SVM训练及检测-----OpenCV

关键词:Hu矩,SVM,OpenCV 在图像中进行目标物识别,涉及到特定区域内是否存在目标物,SVM可在样本量较少情况下对正负样本(图片中前景背景)做出良好区分,图片基本特征包括诸如HOG.LBP.HAAR等,在具体进行物体检测时考虑结合待检测物特点利用或设计新特征进行训练并分类.本文以几何不变矩为例说明OpenCV中SVM分类器的一般使用过程,下面依次简述Hu矩函数.SVM参数设置及实例演示. 1.Hu求解 double M[7];//Hu矩输出 Moments mo; //矩变量 src=i

hu矩

简单说:由普通矩mpq得到图像的中心x0,y0,进而定义中心矩upq,对中心矩进行归一化得到归一化中心矩ypq.用归一化中心矩的二阶矩和三阶矩构造7个不变矩. 一 原理 几何矩是由Hu(Visual pattern recognition by moment invariants)在1962年提出的,具有平移.旋转和尺度不变性. 定义如下: ① (p+q)阶不变矩定义: ② 对于数字图像,离散化,定义为: ③ 归一化中心矩定义: ④Hu矩定义

Python图像处理库PIL中图像格式转换(一)

在数字图像处理中,针对不同的图像格式有其特定的处理算法.所以,在做图像处理之前,我们需要考虑清楚自己要基于哪种格式的图像进行算法设计及其实现.本文基于这个需求,使用python中的图像处理库PIL来实现不同图像格式的转换. 对于彩色图像,不管其图像格式是PNG,还是BMP,或者JPG,在PIL中,使用Image模块的open()函数打开后,返回的图像对象的模式都是"RGB".而对于灰度图像,不管其图像格式是PNG,还是BMP,或者JPG,打开后,其模式为"L". 通

Python图像处理库(1)

转自:http://www.ituring.com.cn/tupubarticle/2024 第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Python 工具包,并介绍用于读取图像.图像转换和缩放.计算导数.画图和保存结果等的基本工具.这些工具的使用将贯穿本书的剩余章节. 1.1 PIL:Python图像处理类库 PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图

Python图像处理类库

本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Python 工具包,并介绍用于读取图像.图像转换和缩放.计算导数.画图和保存结果等的基本工具.这些工具的使用将贯穿本书的剩余章节. 1.1 PIL:Python图像处理类库 PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放.裁剪.旋转.颜色转换等.PIL 是免费的,可以从 http://www.pythonware.com/pr

opencv计算两个轮廓之间hu矩相似程度,MatchShapes

https://blog.csdn.net/jiake_yang/article/details/52589063 [OpenCV3.3]通过透视变换矫正变形图像 https://blog.csdn.net/rrrfff/article/details/77340641 OPENCV提供了输入图像直接进行hu矩匹配的函数,返回的是两个图像或轮廓之间hu矩的相似度: double cvMatchShapes(const void*object1,const void*object2,int met

Python图像处理(1):替换OpenCV

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 先前构造图像处理开发环境的时候,用一个别人编译好的安装包将OpenCV安装到了c:\python27\lib\site-packages目录下,但这个OpenCV没有符号表,无法进行C/C++的代码调试.我们用VS编译的OpenCV替换它. 首先修改OpenCV的Python接口工程,将其输出到python的库目录下,

Python图像处理库PIL的ImageOps模块介绍

(Newin 1.1.3)ImageOps模块包含了一些"ready-made"的图像处理操作.这个模块somewhatexperimental,大多数操作只工作在L和RGB图像上. 一.ImageOps模块的函数 1.  Autocontrast 定义:ImageOps.autocontrast(image, cutoff=0)? image 含义:最大图像对比度.这个函数计算一个输入图像的直方图,从这个直方图中去除最亮和最暗的百分之cutoff,然后重新映射图像,以便保留的最暗像素

Python图像处理库(PIL)

Python Imaging Library为您的python程序添加图像处理能力.这个库提供广泛的文件格式支持.高效的内部表示和相当强大的图像处理能力. 核心图像库是为快速访问几种基本像素格式图像设计的.它能为一般的图像处理工具提供一个可靠的基础. 这个Pythonic library可以 装载和保存多种格式文件 Loading and Saving images (diverse formats)  Python Imaging Library的最新版本可以识别并读取多数图像格式.写图像操作