roi感兴趣区域像素值统计,求roi感兴趣区域内像素值的最小值、最大值、均值、标准差(标准方差)

文章目录

      • 1、求roi感兴趣区域内像素值的最小值、最大值
        • minMaxLoc() 函数原型:
          • (1)原型一:
          • (2)原型二:
          • (3)另外与 `minMaxLoc()`函数原型一,用法相同的函数 `minMaxIdx()`,也可以找出矩阵中的最大值和最小值:
            • minMaxIdx()函数原型:
      • 2、求roi感兴趣区域内像素值的均值、标准差(标准方差)
        • (1)数学概念:
          • 均值 mean:样本集合的平均值;
          • 方差 variance:概率论中**方差**用来度量随机变量和其数学期望(即均值)之间的**偏离程度**;统计中的方差(样本方差)是各个样本数据 与 样本平均值**之差**的 **平方和** 的**平均数**;
          • 标准差 standard deviation:反映一个数据集的离散程度,标准差就是样本**方差**的算术平方根;
        • (2)meanStdDev() 函数原型:
          • 示例:
        • (3)通过函数 `mean()`求roi感兴趣区域内像素值的均值
          • mean() 函数原型:
          • 代码示例:

roi感兴趣区域像素值统计,求roi感兴趣区域内像素值的最小值、最大值、均值、标准差(标准方差)

1、求roi感兴趣区域内像素值的最小值、最大值

  • OpenCV中,函数 minMaxLoc()用于找出矩阵中的最大值和最小值,并且给出它们的坐标;
  • 函数不适用于多通道矩阵,如果需要遍历所有的通道来找到最大和最小值,首先使用函数 Mat::reshape()将矩阵转换为单通道矩阵,或者使用 split()mixChannels(),来提取特定的通道,再使用 minMaxLoc() 函数求矩阵的最大值和最小值;

minMaxLoc() 函数原型:

(1)原型一:
void cv::minMaxLoc( 	InputArray src,double     *minVal,double     *maxVal = 0,Point      *minLoc = 0,Point      *maxLoc = 0,InputArray mask = noArray() 
)参数解释:
src:输入单通道矩阵
minVal:输入矩阵中的最小值(如果不需要返回,置为NULL)
maxVal:输入矩阵中的最大值(如果不需要返回,置为NULL)
minLoc:输入矩阵中的最小值的坐标(如果不需要返回,置为NULL)
maxLoc:输入矩阵中的最大值的坐标(如果不需要返回,置为NULL)
mask:可选参数,操作掩摸,用以标记求取哪些区域
(2)原型二:
void minMaxLoc( const SparseMat &src, double 		*minVal,double 		*maxVal, int 		*minIdx = 0, int 		*maxIdx = 0
);参数解释:
src:输入单通道矩阵
minVal:输入矩阵中的最小值(如果不需要返回,置为NULL)
maxVal:输入矩阵中的最大值(如果不需要返回,置为NULL)
minLoc:输入矩阵中的最小值的坐标(如果不需要返回,置为NULL)
maxLoc:输入矩阵中的最大值的坐标(如果不需要返回,置为NULL
(3)另外与 minMaxLoc()函数原型一,用法相同的函数 minMaxIdx(),也可以找出矩阵中的最大值和最小值:
minMaxIdx()函数原型:
void minMaxIdx(	InputArray src,double	   *minVal,double     *maxVal = 0,int        *minIdx = 0,int        *maxIdx = 0,InputArray mask = noArray()
);参数解释:
src:输入单通道矩阵
minVal:输入矩阵中的最小值(如果不需要返回,置为NULL)
maxVal:输入矩阵中的最大值(如果不需要返回,置为NULL)
minIdx:输入矩阵中的最小值的坐标(如果不需要返回,置为NULL)
maxIdx:输入矩阵中的最大值的坐标(如果不需要返回,置为NULL)
mask:可选参数,操作掩摸,用以标记求取哪些区域

2、求roi感兴趣区域内像素值的均值、标准差(标准方差)

(1)数学概念:

  • 均值 mean:样本集合的平均值;

请添加图片描述

  • 方差 variance:概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度;统计中的方差(样本方差)是各个样本数据 与 样本平均值之差平方和平均数

请添加图片描述

  • 标准差 standard deviation:反映一个数据集的离散程度,标准差就是样本方差的算术平方根;

在这里插入图片描述

(2)meanStdDev() 函数原型:

opencv中标准差表示一个图像的明暗变化程度,标准差越大,表示明暗变化越明显;

void meanStdDev( InputArray src,OutputArray mean,OutputArray stddev,InputArray mask=noArray()
);参数解释:
src:输入矩阵,单通道的矩阵/多通道的矩阵;
mean:输出参数,计算出的平均值;
stddev:输出参数,计算出的标准差;
mask:可选参数,操作掩摸,用以标记求取哪些区域;
示例:
#include <opencv2\opencv.hpp>
#include <iostream>
#include <demo.h>using namespace cv;
using namespace std;int main() {// 读取图像,BGR存储在Mat矩阵里Mat src = cv::imread("C:\\cpp\\image\\suzy4.jpg");if (src.empty()) {printf("could not load image..../n");return -1;}namedWindow("src", WINDOW_NORMAL);imshow("src", src);// 将矩阵转换为单通道矩阵vector<Mat> mv;split(src, mv);double minv, maxv;Point minLoc, maxLoc;// 使用函数 minMaxLoc()找出矩阵中的最大值和最小值for (int i = 0; i < mv.size(); i++){minMaxLoc(mv[i], &minv, &maxv, &minLoc, &maxLoc, Mat());cout << "channels:" << i << " min:" << minv << " max:" << maxv << endl;}// 求roi感兴趣区域内像素值的均值、标准差(标准方差)Mat mean, stddev;meanStdDev(src, mean, stddev);cout << "means:" << mean << endl;cout << "stddev:" << stddev << endl;waitKey();destroyAllWindows();return 0;
}

(3)通过函数 mean()求roi感兴趣区域内像素值的均值

mean() 函数原型:
mean( InputArray src,InputArray mask=noArray()
)参数解释:
src:输入矩阵;
mask:可选参数,操作掩摸,用以标记求取哪些区域;
代码示例:
#include <opencv2/opencv.hpp>
#include <iostream>using namespace std;
using namespace cv;int main()
{cv::Mat A1 = (cv::Mat_<uchar>(3, 3) << 1, 2, 3,4, 5, 6,7, 8, 9);cout << "A1中的数据为:\n" << A1 << endl << endl;cv::Scalar A1_mean;// 通过函数mean()求roi感兴趣区域内像素值的均值 A1_mean = mean(A1);cout << "通过函数mean计算得到的A1的均值为:" << A1_mean << endl << endl;cv::Scalar A1_mean_2, A1_sd;meanStdDev(A1, A1_mean_2, A1_sd);cout << "通过函数meanStdDev计算得到的A1的均值为:" << A1_mean_2 << endl << endl;cout << "通过函数meanStdDev计算得到的A1的标准差为:" << A1_sd << endl << endl;return(0);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/60306.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Idea中侧面栏不见了,如何设置?

一、打开idea点击File然后点击Setting 二、点击Appearance,然后划到最下面&#xff0c;勾选Show tool windows bars和Side-by-side layout on the left 三、侧面栏目正常显示

高翔《自动驾驶中的SLAM技术》代码详解 — 第6章 2D SLAM

目录 6.2 扫描匹配算法 6.2.1 点到点的扫描匹配 6.2 扫描匹配算法 6.2.1 点到点的扫描匹配 // src/ch6/test_2dlidar_io.cc // Created by xiang on 2022/3/15. // #include <gflags/gflags.h> #include <glog/logging.h> #include <opencv2/highgui.hpp>…

【实测有效】朋友圈截图生成,制作朋友圈网页教程

使用教程可以自己看工具的使用手册。 Windows电脑版&#xff1a; https://imageio.jscs.top/zip/wxchat-moment-windows Mac电脑版&#xff1a; https://imageio.jscs.top/zip/wxchat-moment-mac 比如&#xff0c;你可以使用朋友圈评论生成器制作一段搞笑的评论回复&#…

Android Camera预览画面变形问题

csdn 问题 安卓camera1在预览时&#xff0c;预览画面看起来被拉伸了&#xff0e; 如图&#xff0c;圆形的盖子&#xff0c;变成椭圆形了&#xff0e; 代码 默认流程&#xff0c;如下为大致的打开摄像头并进行预览显示的代码 private Camera mCamera null; private Surfa…

sentinel客户端和dashboard交互

回顾 在前面的章节中&#xff1a;通过阐述sentinel简单使用、滑动窗口、核心流程源码分析把sentinel限流、熔断等主要功能说明清楚了&#xff0c;但我们在实际使用的过程中&#xff0c;不可能通过硬编码的方式设置规则&#xff0c;且规则也没法直观的维护&#xff0c;为此肯定…

图像的缩放之c++实现(qt + 不调包)

1.基本原理 图像的缩放一般使用插值算法&#xff0c;而本章将介绍两种常用插值算法&#xff1a;最临近插值法和双线性插值法 1.最临近插值法 将浮点数的位置坐标&#xff0c;进行四舍五入找到原图像的整型坐标即可&#xff0c;具体操作可见下面的公式&#xff0c;其中原图像坐标…

Java培训出来的好找工作吗?能拿多少工资?

作为编程界“泰斗”级别的语言&#xff0c;Java进可攻前端、后可守后端&#xff0c;还是很受市场青睐的&#xff0c;那为什么很多程序员抱怨太卷了&#xff0c;找工作难&#xff1f;这其实是企业业务需求的原因&#xff0c;产品更新、迭代速度极快&#xff0c;企业需要的是“来…

贝叶斯深度学习的温和介绍

一、说明 欢迎来到令人兴奋的概率编程世界&#xff01;本文是对这个领域的温和介绍&#xff0c;你只需要对深度学习和贝叶斯统计有一个基本的了解。如果像我一样&#xff0c;你听说过贝叶斯深度学习&#xff0c;并且你猜它涉及贝叶斯统计&#xff0c;但你不知道它是如何使用的&…

现代C++中的从头开始深度学习【1/8】:基础知识

一、说明 提及机器学习框架与研究和工业的相关性。现在很少有项目不使用Google TensorFlow或Meta PyTorch&#xff0c;在于它们的可扩展性和灵活性。也就是说&#xff0c;花时间从头开始编码机器学习算法似乎违反直觉&#xff0c;即没有任何基本框架。然而&#xff0c;事实并非…

汽车及汽车零部件行业云MES解决方案

汽配行业现状&#xff1a; 随着经济全球化进程加快&#xff0c;一直走在智能化改造&#xff0c;数字化转型前沿的汽车行业企业&#xff0c;面临的信息化需求也日益增加&#xff0c;不管德系&#xff0c;美系还是日系供应链的各大厂商&#xff0c;均将企业信息化&#xff0c;数字…

HTTP代理与HTTPS代理请求的方式揭秘

今天&#xff0c;我们要一起来揭秘HTTP代理与HTTPS代理请求的方式&#xff0c;帮助大家更好地理解和使用这两种代理。我们将分析它们的不同之处&#xff0c;并提供一些实际的例子和操作经验&#xff0c;让你轻松玩转网络请求&#xff01; HTTP代理请求方式&#xff1a; HTTP代…

linux程序保护机制gcc编译选项

预备知识&#xff1a; 计算机内存的结构通常包括以下几个主要部分&#xff1a; 1.代码段(Code Segment)&#xff1a;也称为文本段&#xff0c;存储程序的可执行指令。代码段是被标记为可执行的&#xff0c;程序从代码段中获取指令并执行。 2.数据段(Data Segment)&#xff1a…