Directorio de artículos
-
-
- 1. Encuentre los valores mínimo y máximo de los valores de píxel en la región de interés de ROI
- 2. Encuentre la media y la desviación estándar (desviación estándar) de los valores de píxel en la región de interés de ROI
-
- (1) Conceptos matemáticos:
-
- Media media: el valor medio del conjunto de muestras;
- Varianza varianza: En la teoría de la probabilidad, la **varianza** se usa para medir el **grado de desviación** entre una variable aleatoria y su expectativa matemática (es decir, el valor medio); la varianza en estadística (varianza muestral) es la diferencia entre cada datos muestrales y el promedio muestral El **promedio** de la **suma de cuadrados** de la **diferencia**;
- Desviación estándar desviación estándar: refleja el grado de dispersión de un conjunto de datos, la desviación estándar es la raíz cuadrada aritmética de la **varianza** de la muestra;
- (2) prototipo de función meanStdDev():
- (3) Use la función `mean()` para encontrar el valor medio de los valores de píxel en la región roi de interés
-
Estadísticas de valores de píxel en la región de interés de ROI, encuentre la desviación mínima, máxima, media y estándar (desviación estándar) de los valores de píxel en la región de interés de ROI
1. Encuentre los valores mínimo y máximo de los valores de píxel en la región de interés de ROI
- En OpenCV, la función
minMaxLoc()
se usa para encontrar los valores máximos y mínimos en la matriz y dar sus coordenadas;- La función no es adecuada para matrices multicanal. Si necesita recorrer todos los canales para encontrar los valores máximo y mínimo, primero use la función
Mat::reshape()
para convertir la matriz en una matriz de un solo canal, o usesplit()
,mixChannels()
, para extraer un canal específico , y luego useminMaxLoc()
la función para encontrar el valor máximo de la matriz y min;
Prototipo de la función minMaxLoc():
(1) Prototipo 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) Prototipo 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) Además minMaxLoc()
, la función con el mismo uso que la función prototipo 1 minMaxIdx()
también puede encontrar los valores máximos y mínimos en la matriz:
Prototipo de la función 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. Encuentre la media y la desviación estándar (desviación estándar) de los valores de píxel en la región de interés de ROI
(1) Conceptos matemáticos:
-
Varianza varianza: En la teoría de la probabilidad, la varianza se usa para medir el grado de desviación entre una variable aleatoria y su expectativa matemática (es decir, la media) ; en estadística, la varianza (varianza muestral) es el promedio de la suma de los cuadrados de las diferencias entre cada dato muestral y la media muestral ;
-
Desviación estándar desviación estándar: refleja el grado de dispersión de un conjunto de datos, la desviación estándar es la raíz cuadrada aritmética de la varianza de la muestra ;
(2) prototipo de función meanStdDev():
La desviación estándar en opencv indica el grado de cambio en la luz y la sombra de una imagen. Cuanto mayor sea la desviación estándar, más evidente será el cambio en la luz y la sombra;
void meanStdDev( InputArray src,
OutputArray mean,
OutputArray stddev,
InputArray mask=noArray()
);
参数解释:
src:输入矩阵,单通道的矩阵/多通道的矩阵;
mean:输出参数,计算出的平均值;
stddev:输出参数,计算出的标准差;
mask:可选参数,操作掩摸,用以标记求取哪些区域;
Ejemplo:
#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()
Encuentre el valor medio de los valores de píxel en la región de interés de ROI a través de la función
Prototipo de la función mean():
mean( InputArray src,
InputArray mask=noArray()
)
参数解释:
src:输入矩阵;
mask:可选参数,操作掩摸,用以标记求取哪些区域;
Ejemplo de código:
#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);
}