OpenCV:标准化图像的像素值

我试图将图像的像素值归一化为具有0.0的平均值和1.0的范数,以使图像具有一致的强度。 有一个OpenCV函数,即cvNormalize(src,dst,0,1,cv_MINMAX) ,但是这个函数可以用于我的目的吗? 任何帮助表示赞赏。 谢谢。


不, normalize文档说

normType=NORM_MINMAX (仅适用于密集数组)时,函数normalize缩放并移位输入数组元素,以便:

等式http://docs.opencv.org/_images/math/31bceb122fccfc14279355379f91c7b269290386.png

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

通过给出图像的像素值意味着0.0和1.0的标准, 你不明白你的意思 。 就像你写的那样,我明白你想对像素值进行归一化,以便通过堆叠图像列获得的向量的范数是1.0。 如果这是你想要的,你可以使用meanStdDev (文档)并执行以下操作(假设你的图像是灰度的):

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]);

如果您只是想对像素值的方差进行归一化处理,请忽略第三行。

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

链接地址: http://www.djcxy.com/p/15875.html

上一篇: OpenCV: Normalizing pixel values of an image

下一篇: Distribution of pixel intensity in percentage plot