C++ OpenCV:规范化图像的像素值

C++ OpenCV:规范化图像的像素值,c++,opencv,C++,Opencv,我试图将图像的像素值标准化,使其平均值为0.0,范数为1.0,以使图像具有一致的强度。有一个OpenCV函数,即cvNormalize(src,dst,0,1,cv_MINMAX),但是这个函数可以用于我的目的吗?感谢您的帮助。谢谢。不,for规范化说明: 当normType=NORM_MINMAX时(仅适用于密集数组),函数将规范化缩放和移动输入数组元素,以便: (来源:) 因此,如果使用normalize(src、dst、0、1、NORM_MINMAX、CV_32F),您的数据将被标准化,

我试图将图像的像素值标准化,使其平均值为0.0,范数为1.0,以使图像具有一致的强度。有一个OpenCV函数,即
cvNormalize(src,dst,0,1,cv_MINMAX)
,但是这个函数可以用于我的目的吗?感谢您的帮助。谢谢。

不,for
规范化
说明

normType=NORM_MINMAX
时(仅适用于密集数组),函数
将规范化
缩放和移动输入数组元素,以便:


(来源:)

因此,如果使用
normalize(src、dst、0、1、NORM_MINMAX、CV_32F),您的数据将被标准化,以便最小值为0,最大值为1

通过给图像的像素值平均值0.0和范数1.0,不清楚您的意思。正如您所写的,我理解您希望规范化像素值,以便通过堆叠图像列获得的向量的范数为1.0。如果这是您想要的,您可以使用
meanstdev
()并执行以下操作(假设您的图像是灰度图像):

如果您只想规格化,使像素值的方差为1,请忽略第三行


是的,
CV_32F
表示生成的图像将使用32位浮点数据类型(即
float
)。

您使用的是旧版本的opencv。请阅读最新的。实际上我正在进行一个对象跟踪项目,在那里我需要将图像转换为平均值0.0和范数1.0,以使图像具有一致的强度,即减少不同照明条件的影响。@Anislein343仍然不清楚什么应该具有“范数1.0”。。。无论如何,如果您想要有效地减少不同照明条件的影响,则图像的全局标准化将无助于您。请看以下文章:。
cv::Scalar avg,sdv;
cv::meanStdDev(image, avg, sdv);
sdv.val[0] = sqrt(image.cols*image.rows*sdv.val[0]*sdv.val[0]);
cv::Mat image_32f;
image.convertTo(image_32f,CV_32F,1/sdv.val[0],-avg.val[0]/sdv.val[0]);