簡體   English   中英

OpenCV:規范化圖像的像素值

[英]OpenCV: Normalizing pixel values of an image

我試圖將圖像的像素值標准化為具有0.0的平均值和1.0的范數,以使圖像具有一致的強度。 有一個OpenCV函數,即cvNormalize(src,dst,0,1,cv_MINMAX) ,但是這個函數可以用於我的目的嗎? 任何幫助表示贊賞。 謝謝。

不, normalize文檔

normType=NORM_MINMAX (僅適用於密集數組)時,函數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]);

如果您只想標准化以使像素值的方差為1,則忽略第3行。

是的, CV_32F意味着生成的圖像將使用32位浮點數據類型(即float )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM