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;
}
**针对一幅图像,我们把像素的坐标看成是一个二维随机变量(X, Y),那么一副灰度图可以用二维灰度图密度函数来表示,因此可以用矩来描述灰度图像的特征。**图像可以看成是一个平板的物体,其一阶矩和零阶矩就可以拿来计算某个形状的重心,而二阶矩就可以拿来计算形状的方向。
其中M00即零阶矩,M20和M02为二阶矩,接下来计算物体形状的方向
#region 三角函数和反三角函数
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Messaging;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace test
{
class Program
{
static void Main(string[] args)
{
#region 正弦、反正弦
//正弦
double sinAngleValue1 = 30;//角度值:30度。
double sinRadianValue1 = Math.PI * sinAngleValue1 / 180;//求弧度值
double sinValue1 = Math.Sin(sinRadianValue1);//求sin30度,其实sin30度 = sin(PI/6),但是,数学上或代码上,常常用弧度PI/6,来计算sin(PI/6),其他函数同理。
Console.WriteLine(sinValue1);
//反正弦
double sinValue2 = 0.5;//正弦值 = 0.5。
double sinRadianValue2 = Math.Asin(sinValue2);//求弧度值
double sinAngleValue2 = sinRadianValue2 / Math.PI * 180;//根据弧度值,来求角度值。
Console.WriteLine(sinAngleValue2);
Console.WriteLine();
#endregion
#region 正切、反正切
Console.WriteLine();
Console.WriteLine();
//正切
double tanAngleValue1 = 15;//角度值
double tanRadianValue1 = Math.PI * tanAngleValue1 / 180;//求弧度值
double tanValue1 = Math.Tan(tanRadianValue1);//tan值
Console.WriteLine(tanValue1);//tan值
double tanValue2 = 1;//正切值
double tanRadianValue2 = Math.Atan(tanValue2);//求弧度值
double tanAngleValue2 = tanRadianValue2 / Math.PI *180;//求角度
Console.WriteLine(tanAngleValue2);
#endregion
Console.ReadLine();
}
}
}
#endregion