数字图像处理合集

您所在的位置:网站首页 二值图像的几何特征 数字图像处理合集

数字图像处理合集

2024-03-20 04:27| 来源: 网络整理| 查看: 265

实现: 1、掌握图像的基本特征算法,理解图像中目标的几何特征、形状特征的物理与几何意义,并能够将特征的数学语言转换成程序描述。 2、掌握图像的角点特征算法,理解Moravec角点的物理与几何意义,并能够将角点的数学语言转换成程序描述。 3、掌握图像的纹理分析算法,理解对比度、熵、角二阶矩等纹理测度的几何意义,并能够将纹理特征描述的数学语言转换成程序描述。

1、掌握图像的基本特征算法,理解图像中目标的几何特征、形状特征的物理与几何意义。 图像的基本特征提取对研究工作有着重要的帮助,而图像的几何特征和形状特征更是尤为重要。本次实验我先将图像进行滤波处理,使用的是中值滤波。然后使用canny算子进行图像边界轮廓的提取,由于opencv有大量的接口函数可供我们使用,故我调用了许多接口函数直接画出最小外接矩和外接圆,并使用接口函数计算图像的面积、周长等,最后通过简单的数学公式运算得出外接圆半径、外接圆心坐标、矩形度延长度、周长比、似圆度、形状复杂性、一阶矩、二阶矩等图像几何特征。主要实现代码如下所示:

int features() { stroage = cvCreateMemStorage(); Mat src = imread("..//feature1.png"); Mat I; imshow("原图", src); medianBlur(src, I, 3); //中值滤波 cvtColor(I, I, CV_BGR2GRAY); //函数是一个颜色空间转换函数, 可以实现RGB颜色向HSV, HSI等颜色空间转换 Mat contours; Canny(I, contours, 100, 255); //边缘检测算子 threshold(contours, contours, 100, 255, CV_THRESH_TRUNC); //二值化 int numcontours = cvFindContours(&(CvMat)contours, stroage, &seq, sizeof(CvContour), CV_RETR_LIST); //轮廓提取 CvMoments moments; //申请内存 CvHuMoments hu; //hu矩 cvMoments(&(CvMat)I, &moments, 0); cvGetHuMoments(&moments, &hu); if (ku != numcontours) { ku = numcontours; printf("contournum:::: %d \n", numcontours); } CvSeq *c = 0; int zz = 0; int totl = 0; cvSet(contourimage, cvScalar(255, 0, 255)); //cvscalar是opencv常用的结构体 cvSet(contourimage, cvScalar(125, 0, 125)); CvPoint2D32f center; //二维坐标下的点,类型为浮点 float radius; CvPoint2D32f rectpoint[4]; CvContour *testcontour = 0; //发展自序列 //c为轮廓顶点数组 for (c = seq; c != NULL; c = c->h_next) { // 取得轮廓面积 double testdbArea = fabs(cvContourArea(c, CV_WHOLE_SEQ)); //取得轮廓长度 double testdbLength = cvArcLength(c); c->block_max; if (testdbArea >= 50 && testdbLength


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3