计算矩的目的 从一幅图像计算出来的矩集,不仅可以描述图像形状的全局特征,而且可以提供大量关于该图像不同的几何特征信息,如大小,位置.方向和形状等.这种描述能力广泛应用于各种图像处理.计算机视觉和机器人技术领域的目标识别与方位估计中.同时矩函数在图像分析中也有着广泛的应用,如模式识别.目标分类.目标识别与方位估计.图像的编码与重构等. 矩的计算:moments 函数 moments 函数可以很方便的计算出多边形区域的最高三阶空间矩,中心矩和归一化中心矩. Moments moments(Input…
关键词:Hu矩,SVM,OpenCV 在图像中进行目标物识别,涉及到特定区域内是否存在目标物,SVM可在样本量较少情况下对正负样本(图片中前景背景)做出良好区分,图片基本特征包括诸如HOG.LBP.HAAR等,在具体进行物体检测时考虑结合待检测物特点利用或设计新特征进行训练并分类.本文以几何不变矩为例说明OpenCV中SVM分类器的一般使用过程,下面依次简述Hu矩函数.SVM参数设置及实例演示. 1.Hu求解 double M[7];//Hu矩输出 Moments mo; //矩变量 src=i…
阅读对象:对概率论中的期望有一点了解. 1.图像几何矩 1.1简述 图像的几何矩包括空间矩.中心矩和中心归一化矩.几何矩具有平移.旋转和尺度不变性,一般是用来做大粒度的区分,用来过滤显然不相关的图像. 1.2用数学语言阐述图像的几何矩 针对于一幅图像,我们把像素的坐标看成是一个二维随机变量(X,Y),那么一幅灰度图像可以用二维灰度密度函数来表示,每个像素点的值可以看成是该处的密度,对某点求期望就是该图像在该点处的矩(原点矩),一阶矩和零阶矩可以计算某个形状的重心,二阶矩可以计算形状的方向,因此可…
原文地址  http://blog.csdn.NET/daijucug/article/details/7535370 [图像算法OpenCV]几何不变矩--Hu矩 一 原理 几何矩是由Hu(Visual pattern recognition by moment invariants)在1962年提出的,具有平移.旋转和尺度不变性. 定义如下: ① (p+q)阶不变矩定义: ② 对于数字图像,离散化,定义为: ③ 归一化中心矩定义: ④Hu矩定义 -----------------------…
严格来讲矩是概率与统计中的一个概念,是随机变量的一种数字特征.设 x 为随机变量,C为常数,则量E[(x−c)^k]称为X关于C点的k阶矩.比较重要的两种情况如下: 1.c=0,这时a_k=E(X^k)称为X的k阶原点矩; 2.c=E(X),这时μ_k=E[(X−EX)^k]称为X的k阶中心矩 一阶原点矩就是期望,一阶中心矩μ_1=0,二阶中心矩μ_2就是X的方差Var(X).在统计学上,高于4阶的矩极少使用,μ_3可以去衡量分布是否有偏,μ_4可以衡量分布(密度)在均值拘谨的陡峭程度.对于数学…
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…
[图像算法]图像特征: ------------------------------------------------------------------------------------------------------------------------------- 一 原理 几何矩是由Hu(Visual pattern recognition by moment invariants)在1962年提出的,具有平移.旋转和尺度不变性. 定义如下: ① (p+q)阶不变矩定义: ② 对…
close all; clear all; I1=imread('lena.bmp'); angle=; T=[cos(angle),sin(angle),;-sin(angle),cos(angle),;,,]; t1 = maketform('affine',T); I2 = imtransform(I1,t1,);%旋转 I2=imresize(I2,0.5);%缩放 figure; imshow(I1); figure; imshow(I2); H1=Humoment(I1) H2=Hu…
参考 1. 图像不变性特征: 2. matlab实现: 3. HU矩和Zernike矩: 完…
图像矩描述了图像的全局特征 一阶矩与形状有关 二阶距显示曲线围绕直线平均值的扩展程度 三阶矩是关于平均值的对称性测量 由二阶和三阶矩可以导出7个不变矩,不变矩是图像的统计特性,满足平移.伸缩.旋转的不变性…
一.函数原型 ​该函数参数angleInDegrees默认为false,即弧度,当置为true时,则输出为角度. phase函数根据函数来计算角度,计算精度大约为0.3弧度,当x,y相等时,angle为0. 数学上函数atan2为: 该函数的值域为,可以通过对负数结果加的方法,将函数的结果映射到范围内. 而c++中atan2函数是通过正切值返回弧度的,并通过判断x,y的正负决定象限,因此c++中atan2函数值域是从-Pi到Pi的. 二.小实验 Mat mat1(Size(, ), CV_32F…
sizeof,看起来还真不简单,总结起来还是一大堆的东西,不过这是笔试面试中出现比较频繁的,我也是考过才觉得很重要,有些规则如果不注意,还真是拿到一道题目摸不着头脑,所有总结一下,方面忘记的时候瞄一瞄,其中重点是struct的空间大小部分. 关于sizeof的总结 1.sizeof的使用形式:sizeof(var_name)或者sizeof var_name 2.变量名可以不用括号括住:sizeof a 3.数据类型必须用括号括起来:sizeof(int) 4.sizeof可以对表达式求值:si…
效果还是有点问题的,希望大家共同探讨一下 // FindRotation-angle.cpp : 定义控制台应用程序的入口点. // // findContours.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <vector> #include <opencv2/opencv.hpp> #include <opencv2/core/core.h…
This file is implementation of Common Common Computational Geometry Algorithms.Please please pay attention to input according to the specified data type. 个人实现的一些计算几何中常见的算法,包括点,线,多边形等:所有算法只依赖于C++标准库,不用包含任何其他第三方库,包含此头文件即可使用.使用时请注意按照规定的数据类型进行输入,目前只使用C++…
直方图概述 简单来说,直方图就是对数据进行统计的一种方法,这些数据可以是梯度.方向.色彩或任何其他特征.它的表现形式是一种二维统计表,横纵坐标分别是统计样本和该样本对应的某个属性的度量. 计算直方图:calcHist 函数 calcHist 函数用于计算一个或多个阵列的直方图. void calcHist(const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims…
计算轮廓面积:contourArea 函数 double contourArea(InputArray contour, bool oriented = false); contour,输入的二维点集(轮廓顶点),可以是 vector 或 Mat 类型. oriented,面向区域标识符.有默认值 false.若为 true,该函数返回一个带符号的面积值,正负取决于轮廓的方向(顺时针还是逆时针).若为 false,表示以绝对值返回. 计算轮廓长度:arcLength 函数 arcLength 函…
原文链接:http://www.cnblogs.com/houjun/p/4907622.html 关于sizeof的总结 1.sizeof的使用形式:sizeof(var_name)或者sizeof var_name 2.变量名可以不用括号括住:sizeof a 3.数据类型必须用括号括起来:sizeof(int) 4.sizeof可以对表达式求值:sizeof(2+3.14),实际是sizeof(double) 5.sizeof可以对函数调用求值,实际上是对返回值类型求值 6.以下情况不能用…
public class NGlbVec3d    {// 三维点        public double x, y, z;        public NGlbVec3d()        {        }        public NGlbVec3d(double vx, double vy, double vz)        {            x = vx; y = vy; z = vz;        }        public static double oper…
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; RNG rng(12345); int main(int argc, char** argv) { Mat src = imread("f:/images/qq/20200215213837.png"); //Mat src = imread("f:/images/qq/y…
t1 = cv2.getTickCount() # ...... t2 = cv2.getTickCount() # 计算花费的时间:毫秒 time = (t2-t1) / cv2.getTickFrequency()…
cv::getTickCount()可以用来测量一段代码的运行时间,这个函数返回从上次开机算起的时钟周期数. 由于我们需要的是某个代码段运行的毫秒数,因此还需要另一个函数cv::getTickFrequency().此函数返回每秒内时钟的周期数. 用于统计函数(或一段代码)耗费时间的方法如下: double duration; duration  = static_cast<double>(cv::getTickCount()); colorReduce(image);      // 被测试…
# -*- coding: utf-8 -*- #code:myhaspl@myhaspl.com #归一化块滤波 import cv2 import numpy as np fn="test3.jpg" myimg=cv2.imread(fn) img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY) #加上高斯噪声,能够參考曾经博文中的内容 ...... ...... #滤波去噪 lbimg=cv2.blur(newimg,(3,3)) cv2.imsh…
http://blog.sina.com.cn/s/blog_67a7426a0101cxl0.html 一个跟轮廓相关的最常用到的功能是匹配两个轮廓.如果有两个轮廓,如何比较它们;或者如何比较一个轮廓和另一个抽象模板. 矩 比较两个轮廓最简洁的方式是比较他们的轮廓矩.这里先简短介绍一个矩的含义.简单的说,矩是通过对轮廓上所有点进行积分运算(或者认为是求和运算)而得到的一个粗略特征.通常,我们如下定义一个轮廓的(p,q)矩: 在公式中p对应x纬度上的矩,q对应y维度上的矩,q对应y维度上的矩,阶…
一个跟轮廓相关的最常用到的功能是匹配两个轮廓.如果有两个轮廓,如何比较它们;或者如何比较一个轮廓和另一个抽象模板. 矩 比较两个轮廓最简洁的方式是比较他们的轮廓矩.这里先简短介绍一个矩的含义.简单的说,矩是通过对轮廓上所有点进行积分运算(或者认为是求和运算)而得到的一个粗略特征.通常,我们如下定义一个轮廓的(p,q)矩: 在公式中p对应x纬度上的矩,q对应y维度上的矩,q对应y维度上的矩,阶数表示对应的部分的指数.该计算是对轮廓边界上所有像素(数目为n)进行求和.如果p和q全为0,那么m00实际…
一.相关类 MCvMoments inv_sqrt_m00 m00!=0?1/sqrt(m00):0 m00  spatial moments m01, m02, m03, m10, m11 m12, m21, m30, mu02, mu03 mu11, mu12, mu20, mu21, mu30 MCvHuMoments hu1 Hu ivnariants hu2, hu3, hu4, hu5, hu6, hu7 public static void cvMoments( IntPtr ar…
转摘网址为:http://www.cnblogs.com/slysky/archive/2011/10/14/2212227.html 虽然Canny之类的边缘检测算法可以根据像素间的差异检测出轮廓边界的像素,但是它并没有将轮廓作为一个整体.下一步是要将这些边缘像素组装成轮廓. 轮廓是构成任何一个形状的边界或外形线.直方图对比和模板匹配根据色彩及色彩的分布来进行匹配,以下包括:轮廓的查找.表达方式.组织方式.绘制.特性.匹配. 首先回忆下几个结构体: 首先是图像本身的结构体:typedef st…
http://www.cnblogs.com/xrwang/archive/2010/02/09/HowToUseContour.html 作者:王先荣 前言    轮廓是构成任何一个形状的边界或外形线.前面讲了如何根据色彩及色彩的分布(直方图对比和模板匹配)来进行匹配,现在我们来看看如何利用物体的轮廓.包括以下内容:轮廓的查找.表达方式.组织方式.绘制.特性.匹配. 查找轮廓    首先我们面对的问题是如何在图像中找到轮廓,OpenCv(EmguCv)为我们做了很多工作,我们的任务只是调用现成…
在OpenCV中,可以很方便的计算多边形区域的3阶特征矩,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, n…
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; } 空间矩的…
图像的矩 矩的计算:moments()函数 计算轮廓面积:contourArea()函数 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include<iostream> using namespace cv; using namespace std; //-----------------------------------[main( )函…