精华内容
下载资源
问答
  • Hu不变矩

    2017-07-04 13:29:23
    opencv中的主要包括以下几种:空间,中心和中心归一化。 class Moments { public: ...... // 空间 double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03; // 中心 double mu20, mu11, mu02, mu...
    opencv中的矩主要包括以下几种:空间矩,中心矩和中心归一化矩。
    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;
     }

    空间矩公式为:
    这里写图片描述
    可以知道,对于01二值化的图像,m00即为轮廓的面积。
    一阶矩表示它的中心位置。
    中心矩的公式为:
    这里写图片描述
    其中
    这里写图片描述
    归一化的中心矩公式为:
    这里写图片描述

    实例代码

    #include <opencv.hpp>
    #include <highgui.hpp>
    #include <iostream>
    
    void main()
    {
        cv::Mat src = cv::imread("1.jpg", 0);
        if (src.empty())
        {
            return;
        }
    
        cv::Moments moment = cv::moments(src);
        double hu[7] = { 0 };
    
        // 计算Hu不变量
        cv::HuMoments(moment, hu);
    
        std::cout << "Hu不变矩为:\n";
        for (int i = 0 ; i < 7 ; ++i)
        {
            std::cout << hu[i] << ",";
        }
    }
    展开全文
  • invariant moments of image phi = invmoments(F) F为读取的图像矩阵,phi中保存了7个hu不变矩 % Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins % Digital Image Processing Using MATLAB, ...
  • 这边先做几个概念上的解释再详细叙述图像矩矩是概率与统计中的一个概念,是随机变量的一种数字特征。函数在图像分析中有着广泛的应用,如模式识别、目标分类、图像编码与重构等。从一幅数字图形中计算出来的...

    这边先做几个概念上的解释再详细叙述图像矩。

    矩是概率与统计中的一个概念,是随机变量的一种数字特征。

    3cb0b97da76e矩函数在图像分析中有着广泛的应用,如模式识别、目标分类、图像编码与重构等。从一幅数字图形中计算出来的矩集,通常描述了该图像形状的全局特征,并提供了大量的关于该图像不同类型的几何特性信息,比如大小、位置、方向及形状等。图像矩的这种特性描述能力被广泛的应用在各种图像处理、计算机视觉和机器人技术领域的目标识别与方位估计中。

    在图像矩中有零阶矩、一阶矩、二阶矩、三阶矩...其中零阶矩与物体的质量有关,一阶矩与形状有关,零阶矩与一阶矩可以求出重心,二阶矩显示曲线围绕直线平均值的扩展程度,三阶矩则是关于平均值的对称性的测量。

    针对于一幅图像,我们把像素的坐标看成是一个二维随机变量(X,Y),那么一幅灰度图像可以用二维灰度密度函数来表示,因此可以用矩来描述灰度图像的特征。

    3cb0b97da76e

    3cb0b97da76e

    Hu矩

    3cb0b97da76e【其中归一化中心矩作用在于消除图像比例变化带来的影响。】

    Hu利用二阶和三阶归一化中心矩构造了7个不变矩,不变矩是一处高度浓缩的图像特征,在连续图像下具有平移、灰度、尺度、旋转不变性。其具体定义如下:

    3cb0b97da76e这7个不变矩构成一组特征量,实际上,在对图片中物体的识别过程中,只有M1和M2不变性保持的比较好,其他的几个不变矩带来的误差比较大,有学者认为只有基于二阶矩的不变矩对二维物体的描述才是真正的具有旋转、缩放和平移不变性(M1和M2刚好都是由二阶矩组成的)。

    由Hu矩组成的特征量对图片进行识别,优点就是速度很快,缺点是识别率比较低。Hu不变矩一般用来识别图像中大的物体,对于物体的形状描述得比较好,图像的纹理特征不能太复杂,像识别水果的形状,或者对于车牌中的简单字符的识别效果会相对好一些。

    补充:不变矩的物理含义

    如果把图像看成是一块质量密度不均匀的薄板,其图像的灰度分布函数f(x,y)就是薄板的密度分布函数,则其各阶矩有着不同的含义,如零阶矩表示它的总质量;一阶矩表示它的质心;二阶矩又叫惯性矩,表示图像的大小和方向。事实上,如果仅考虑阶次为2的矩集,则原始图像等同于一个具有确定的大小、方向和离心率,以图像质心为中心且具有恒定辐射率的椭圆。当密度分布函数发生改变时,图像的实质没有改变,仍然可以看做一个薄板,只是密度分布有所改变。虽然此时各阶矩的值可能发生变化,但由各阶矩计算出的不变矩仍具有平移、旋转和尺度不变性。通过这个思想,可对图像进行简化处理,保留最能反映目标特性的信息,再用简化后的图像计算不变矩特征,可减少计算量。

    利用OpenCV计算Hu矩参考: 图像的矩特征

    其余搬运: 图像的几何矩

    ——————————————————————

    ending!

    展开全文
  • 基于matlab的Hu不变矩的图像检索技术,以图像Hu不变矩特征为标准来进行图像检索,首先,对待检索图像利用边缘检测算子进行边缘检测:其次,利用Hu的7个不变矩作为形状特征想用,进行图像的相似度匹配,最后在图像库中...
  • 本实例是对四种不同的叶子图片自动分类。先将图片进行二值化,然后通过计算Hu不变矩进行,再根据Hu不变矩对叶片进行分类。代码实现简单,结果可靠。
  • 利用Hu不变矩进行特征提取.pdf
  • 代码可以运行,提取Hu 7阶不变矩,可以利用此7阶不变矩进行目标识别 代码可以运行,提取Hu 7阶不变矩,可以利用此7阶不变矩进行目标识别
  • 基于Hu不变矩的加权矩方法及应用
  • 关于hu不变矩的程序-103244844HUandradon.rar 见有的朋友用到这个东西,故上传之 计算hu不变矩的OPENCV程序,可以同时比较多幅图片的不变矩。c 不变矩 matlab程序,有图例,可以运行,可供学不变矩的同学参考
  • 关于hu不变矩的程序-31767664BubianjuWork.rar 见有的朋友用到这个东西,故上传之 计算hu不变矩的OPENCV程序,可以同时比较多幅图片的不变矩。c 不变矩 matlab程序,有图例,可以运行,可供学不变矩的同学...
  • 计算HU不变矩的OPENCV程序,可以同时比较多幅图片的不变矩
  • matlab基于Hu不变矩的图像检索技术,首先要做的就是对这 100张图片建索引, 对这些图片分别提取纹理特征和颜色矩特征,并存mat文件。之后就可以进行检索了。纹理特征和颜色矩特征都是一维向量,检索的时候分别计算待检索...
  • hu 不变矩及其快速算法代码

    热门讨论 2012-05-16 11:29:51
    hu 不变矩及其快速算法代码 有注释 易看懂
  • 关于hu不变矩的程序-45665976opencv_hu_moments(1).rar 见有的朋友用到这个东西,故上传之 计算hu不变矩的OPENCV程序,可以同时比较多幅图片的不变矩。c 不变矩 matlab程序,有图例,可以运行,可供学不变矩的...
  • 基于深度学习与Hu不变矩的绝缘子故障检测.pdf
  • 基于颜色聚类和Hu不变矩的道路交通标志检测.pdf
  • 【图像检索】基于 Hu不变矩图像检索matlab源码.md
  • 提出了一种基于Hu不变矩的匹配演化算法.该算法利用一种新的演化搜索策略取代传统的遍历搜索策略,将Hu不变矩特征融入演化适应函数.首先通过演化策略,产生多个搜索子图;然后计算待识别搜索子图与模板图像的不变矩...
  • 获取图像的Hu不变矩

    千次阅读 2019-04-22 18:23:05
    使用C++、opencv获取图像的Hu不变矩 矩函数在图像分析中有着广泛的应用,如模式识别、目标分类、目标识别与方位估计、图像编码与重构等。一个从一幅数字图形中计算出来的矩集,通常描述了该图像形状的全局特征,并...

    使用C++、opencv获取图像的Hu不变矩

            矩函数在图像分析中有着广泛的应用,如模式识别、目标分类、目标识别与方位估计、图像编码与重构等。一个从一幅数字图形中计算出来的矩集,通常描述了该图像形状的全局特征,并提供了大量的关于该图像不同类型的几何特性信息,比如大小、位置、方向及形状等。图像矩的这种特性描述能力被广泛地应用在各种图像处理、计算机视觉和机器人技术领域的目标识别与方位估计中。一阶矩与形状有关,二阶矩显示曲线围绕直线平均值的扩展程度,三阶矩则是关于平均值的对称性的测量。由二阶矩和三阶矩可以导出一组共7个不变矩。而不变矩是图像的统计特性,满足平移、伸缩、旋转均不变的不变性,在图像识别领域得到了广泛的应用。

    总结:Hu不变矩是图像的一组特征参数,主要用来描述形状,并具有平移、伸缩、旋转均不变的不变性,可用于图像分类、识别。

    关于Hu不变矩的更详细原理、计算方法可以参考:https://www.cnblogs.com/ronny/p/3985810.htmlhttps://www.cnblogs.com/mikewolf2002/p/3427564.html


    opencv中关于图像的矩的相关API:

    Moments moments(InputArray array, bool binary Image=false)

    moments0函数用于计算多边形和光栅形状的最高达三阶的所有矩。矩用来计算形状的重心、面积,主轴和其他形状特征,如7Hu不变量等。
    第一个参数,InputArray类型的aray,输入参数,可以是光栅图像(单通道,8位或浮点的二维数组)或二维数组(1N或N1)
    第二个参数,bool类型的 binaryImage,有默认值 false。若此参数取true则所有非零像素为1。此参数仅对于图像使用。
    需要注意的是,此参数的返回值返回运行后的结果。

    -----------------------------------------------------------------------

    void HuMoments(const Moments& moments, double hu[7])

    第一个参数,const Moments引用类型的moments是图像的矩,由上面的moments0函数求得。

    第二个参数,输出的是double类型的数组hu[7],即图像的7个不变矩。


    代码实现:

    #include "stdafx.h"
    #include <opencv2/opencv.hpp>  
    #include <iostream>  
    #include <math.h> 
    #include <opencv2/imgproc/imgproc.hpp>
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    
    using namespace cv;
    using namespace std;
    
    int main()
    {
    	system("color 02");
    
    	//读取、显示图像
    	Mat src_image = imread("D:\\4.jpg");
    	if (!src_image.data)
    	{
    		cout << "src image load failed!" << endl;
    		return -1;
    	}
    	namedWindow("原图", WINDOW_NORMAL);
    	imshow("原图", src_image);
    
    	/*此处高斯去燥有助于后面二值化处理的效果*/
    	Mat blur_image;
    	GaussianBlur(src_image, blur_image, Size(3, 3), 0, 0);
    	imshow("GaussianBlur", blur_image);
    
    	/*灰度变换与二值化*/
    	Mat gray_image, binary_image;
    	cvtColor(blur_image, gray_image, COLOR_BGR2GRAY);
    	threshold(gray_image, binary_image, 20, 255, THRESH_BINARY);
    	imshow("binary", binary_image);
    
    	/*形态学闭操作*/
    	Mat morph_image;
    	Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
    	morphologyEx(binary_image, morph_image, MORPH_CLOSE, kernel, Point(-1, -1), 2);
    	imshow("morphology", morph_image);
    
    	/*查找外轮廓并计算周长、面积、圆形度*/
    	vector< vector<Point> > contours;
    	vector<Vec4i> hireachy;
    	findContours(binary_image, contours, hireachy, CV_RETR_EXTERNAL, CHAIN_APPROX_NONE, Point());
    	Mat result_image = Mat::zeros(src_image.size(), CV_8UC3);
    	int l;
    	double len, area;
    	for (size_t t = 0; t < contours.size(); t++)
    	{
    		/*过滤掉小的干扰轮廓*/
    		Rect rect = boundingRect(contours[t]);
    		if (rect.width < src_image.cols / 2)
    			continue;
    		//if (rect.width >(src_image.cols - 20))
    		l = t;
    		drawContours(result_image, contours, static_cast<int>(t), Scalar(255, 255, 255), 1, 8, hireachy);
    	}
    	namedWindow("lunkuo", WINDOW_NORMAL);
    	imshow("lunkuo", result_image);
    	
    	Moments mom;
    	mom = moments(contours[l],false);
    	double hu[7];
    	HuMoments(mom,hu);
    
    	for (int j = 0; j < 7; j++)
    	{
    		cout << hu[j] << "\t";
    	}
    
    	//写入文档
    	/*FILE *fp = fopen("D:\\1.xlsx", "a");
    	for (int k = 0; k < 7; k++)
    	{
    		fprintf(fp, "%.11lf\t", hu[k]);
    	}
    	fprintf(fp, "\n");
    	fclose(fp);*/
    
    	waitKey();
    	return 0;
    }

    注:本代码适用于目标物体已大致分割出来或很容易分割出来,并且一幅图像中只有一个目标物体的情况,否则需要先进行图像分割操作。

    源图像及代码中相关操作的图像:

    计算得到的7个不变矩:

    部分参考: 毛星云 《OpenCV3编程入门》 

    展开全文
  • 在道路交通标志识别系统设计中,交通标志的检测...针对交通标志检测过程中,提出Hu不变矩特征在交通标志检测中的应用,通过Matlab和C++仿真得出结果,根据交通标志Hu不变矩的特点,能够较好地检测出交通标志的特征。
  • 图像处理,计算形状参数,hu不变矩,并且有特定区域检测
  • 对电力工程图纸进行矢量化的前提是正确识别出电力图纸中的每一个图元,因此,对电力图元的特征提取变得 尤为重要。对原有的 HU不变距进行了修正...实验结果表明,改进的 HU不变矩具有良好的旋转、平移和缩放( RTS)不变性。
  • Hu不变矩是图像的一组特征参数,主要用来描述形状,并具有平移、伸缩、旋转均不变的不变性,可用于图像分类、识别。 moments0函数用于计算多边形和光栅形状的最高达三阶的所有矩。 对于三阶或三阶以上矩,使用图像在...

    Hu不变矩是图像的一组特征参数,主要用来描述形状,并具有平移、伸缩、旋转均不变的不变性,可用于图像分类、识别。

    moments0函数用于计算多边形和光栅形状的最高达三阶的所有矩。

    对于三阶或三阶以上矩,使用图像在轴或轴上的投影比使用图像本身的描述更方便。
    三阶矩:投影扭曲,描述了图像投影的扭曲程度。扭曲是一个经典统计量,用来衡量关于均值对称分布的偏差程度。
    四阶矩:投影峰度,峰度是一个用来测量分布峰度的经典统计量。可以计算峰度系数。当峰度系数为0时,表示高斯分布;当峰度系数小于0时,表示平坦的少峰分布;当峰度系数大于0时,表示狭窄的多峰分布。

    hu不变矩的性质

    图像形状平移不变性
    图像形状尺度不变性
    图像形状旋转不变性

    hu不变矩的应用与意义

    图像形状匹配
    图像形状区分
    图像形状相似度计算

    这里主要借助了opencv其自带函数cv2.moments()和cv2.humoments()
    前者输入的是灰度值图像,后者输入的是由几何矩、中心矩、归一化的中心矩组成的一个字典

    import cv2
    import numpy as np
    import os
    from PIL import Image
    from skimage import data_dir, 
    展开全文
  • 基于Hu不变矩向量的手势检测,隋云衡,郭元术,手势检测是手势交互的基础和前提,其本质是从背景中分割出手部区域。本文着重研究了复杂背景下的手部区域分割方法,提出了基于Hu�
  • Hu不变矩进行了优化,适用于图像处理与模式识别
  • 在交通标志识别系统设计过程中,对于交通...针对交通标志图像的不变矩特征,利用Hu不变矩检测交通标志,并采用最小距离分类器对其特征向量进行分类,最后通过Matlab和C++仿真验证,结果表明能够较好地检测出交通标志的特征。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,131
精华内容 452
关键字:

hu不变矩