OpenCV-Day-011:像素归一化

预备知识

opencv中提供了四种归一化的方法:

  • NORM_MINMAX
  • NORM_INF
  • NORM_L1
  • NORM_L2
    最常用的就是NORM_MINMAX归一化方法
L1 归一化(依据是:和为1)
2.0+8.0+10.0=20
2.0         0.12.0/20.08.0         0.48.0/20.010.0        0.510.0/20.0
L2 归一化(依据是:单位向量为1,也即每个数除以 根号下所有数的平方和)
2.0         0.15         
8.0         0.62       
10.0        0.77  
NORM_INF 归一化(依据是:最大值)
2.0         0.2       (2.0/10.0)  
8.0         0.8       (8.0/10.0)  
10.0        1.0       (10.0/10.0)  
NORM_MINMAX 归一化(依据是:delta=max-min,也即最小值为0,最大值为1)
2.0         0.0      (0.0/8.0)
8.0         0.75     (6.0/8.0)      
10.0        1.0      (8.0/8.0)

代码

import cv2 as cv
import numpy as np

src = cv.imread('./erweima.png', cv.IMREAD_COLOR)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
gray = np.float32(gray)
print(gray)

dst = np.zeros(gray.shape, dtype=np.float32)
cv.normalize(gray, dst=dst, alpha=0, beta=1.0, norm_type=cv.NORM_MINMAX)

dst = np.zeros(gray.shape, dtype=np.float32)
cv.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv.NORM_MINMAX)
print(dst)
cv.imshow("NORM_MINMAX", np.uint8(dst * 255))
dst = np.zeros(gray.shape, dtype=np.float32)
cv.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv.NORM_INF)
print(dst)
cv.imshow("NORM_INF", np.uint8(dst * 255))

cv.waitKeyEx(0)
cv.destroyAllWindows()

实验结果

在这里插入图片描述

解释

函数cv.normalize(gray, dst=dst, alpha=0, beta=1.0, norm_type=cv.NORM_MINMAX)中alpha和beta的意义是:
alpha:range normalization模式的最小值
beta:range normalization模式的最大值,不用于norm normalization(范数归一化)模式。

NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。

NORM_INF:归一化数组的C-范数(绝对值的最大值)

NORM_L1 : 归一化数组的L1-范数(绝对值的和)

NORM_L2: 归一化数组的(欧几里德)L2-范数

发布了197 篇原创文章 · 获赞 35 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/PoGeN1/article/details/90761262