opencv图片放大缩小(Opencv学习之:将图片的值进行范围调整 cv2.normalize())
cv2.normalize()
指定将图片的值放缩到 0-255 之间 array = cv2.normalize(array,None,0,255,cv2.NORM_MINMAX)cv2.NORM_MINMAX :使用的放缩方式是 min_max 的方式
其对应的原理是:
x
^
=
x
−
m
i
n
m
a
x
−
m
i
n
∗
(
m
a
x
′
−
m
i
n
′
)
+
m
i
n
′
\hat{x} = \frac{x-min}{max-min} * (max^{}-min^{}) + min^{}
x=max−minx−min∗(max′−min′)+min′x
^
\hat{x}
x 表示矩阵中任意一点归一化之后的值x
x
x 表示矩阵中的所有原始值m
i
n
,
m
a
x
min,max
min,max 分别代表矩阵中的最大值和最小值m
a
x
′
,
m
i
n
′
max^{}, min^{}
max′,min′ 分别表示放缩的目标范围中的最大和最小值例如当我们想把 0-255 值放缩到 0-1 之间 ,那么
m
a
x
=
255
,
m
i
n
=
,
m
a
x
′
=
1
,
m
i
n
′
=
max=255, min=0, max^{}=1,min^{}=0
max=255,min=0,max′=1,min′=0就可以得到我们平时用的归一化公式:
x
^
=
x
−
m
i
n
m
a
x
−
m
i
n
\hat{x} = \frac{x-min}{max-min}
x=max−minx−min而当我们想把值从 0-1 之间放缩到 0-255 那么
m
a
x
=
1
,
m
i
n
=
,
m
a
x
′
=
255
,
m
i
n
′
=
max=1, min=0, max^{}=255,min^{}=0
max=1,min=0,max′=255,min′=0x
^
=
x
−
1
−
∗
(
255
−
)
+
=
x
∗
255
\hat{x} = \frac{x-0}{1-0} * (255-0) + 0=x*255
x=1−0x−0∗(255−0)+0=x∗255除此之外 ,还有其他的归一化和放缩的选项 ,例如:
cv2.NORM_INF:归一化数组的(切比雪夫距离)L∞范数(绝对值的最大值) cv2.NORM_L1 : 归一化数组的(曼哈顿距离)L1-范数(绝对值的和) cv2.NORM_L2: 归一化数组的(欧几里德距离)L2-范数想知道具体的公式解析可以参考文章:
opencv中归一化函数cv2.normalize()的原理讲解代码示例
import cv2 test_set = torchvision.datasets.CIFAR10(root=../datasets, train=False, download=False, transform=None) x = train_set.data[0] x = x / 255. x array([[[0.23137255, 0.24313725, 0.24705882], [0.16862745, 0.18039216, 0.17647059], [0.19607843, 0.18823529, 0.16862745], ..., [0.61960784, 0.51764706, 0.42352941], [0.59607843, 0.49019608, 0.4 ], [0.58039216, 0.48627451, 0.40392157]], [[0.0627451 , 0.07843137, 0.07843137], [0. , 0. , 0. ], [0.07058824, 0.03137255, 0. ], ..., [0.48235294, 0.34509804, 0.21568627], [0.46666667, 0.3254902 , 0.19607843], [0.47843137, 0.34117647, 0.22352941]], [[0.09803922, 0.09411765, 0.08235294], [0.0627451 , 0.02745098, 0. ], [0.19215686, 0.10588235, 0.03137255], ..., [0.4627451 , 0.32941176, 0.19607843], [0.47058824, 0.32941176, 0.19607843], [0.42745098, 0.28627451, 0.16470588]], ..., [[0.81568627, 0.66666667, 0.37647059], [0.78823529, 0.6 , 0.13333333], [0.77647059, 0.63137255, 0.10196078], ..., [0.62745098, 0.52156863, 0.2745098 ], [0.21960784, 0.12156863, 0.02745098], [0.20784314, 0.13333333, 0.07843137]], [[0.70588235, 0.54509804, 0.37647059], [0.67843137, 0.48235294, 0.16470588], [0.72941176, 0.56470588, 0.11764706], ..., [0.72156863, 0.58039216, 0.36862745], [0.38039216, 0.24313725, 0.13333333], [0.3254902 , 0.20784314, 0.13333333]], [[0.69411765, 0.56470588, 0.45490196], [0.65882353, 0.50588235, 0.36862745], [0.70196078, 0.55686275, 0.34117647], ..., [0.84705882, 0.72156863, 0.54901961], [0.59215686, 0.4627451 , 0.32941176], [0.48235294, 0.36078431, 0.28235294]]]) plt.imshow(x) x_ = cv2.normalize(x,None,0,255,cv2.NORM_MINMAX) x_ array([[[ 59, 62, 63], [ 43, 46, 45], [ 50, 48, 43], ..., [158, 132, 108], [152, 125, 102], [148, 124, 103]], [[ 16, 20, 20], [ 0, 0, 0], [ 18, 8, 0], ..., [123, 88, 55], [119, 83, 50], [122, 87, 57]], [[ 25, 24, 21], [ 16, 7, 0], [ 49, 27, 8], ..., [118, 84, 50], [120, 84, 50], [109, 73, 42]], ..., [[208, 170, 96], [201, 153, 34], [198, 161, 26], ..., [160, 133, 70], [ 56, 31, 7], [ 53, 34, 20]], [[180, 139, 96], [173, 123, 42], [186, 144, 30], ..., [184, 148, 94], [ 97, 62, 34], [ 83, 53, 34]], [[177, 144, 116], [168, 129, 94], [179, 142, 87], ..., [216, 184, 140], [151, 118, 84], [123, 92, 72]]], dtype=uint8) plt.imshow(x_)创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!