opencv学习-011-图像像素归一化(normalize)

本文介绍了OpenCV中的图像像素归一化操作,包括NORM_MINMAX、NORM_INF、NORM_L1和NORM_L2四种方法。通过代码示例展示了如何使用这些方法对图像进行归一化处理,以实现图像尺度和对比度的标准化。归一化处理有助于图像的后续分析和处理,同时保持图像的基本特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

opencv学习-011-图像像素归一化(normalize)

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, const char *argv[])
{
	Mat src = imread("E:/Desktop/y.jpg");
	if (src.empty()) {
		printf("could not load image...\n");
		return -1;
	}
	namedWindow("input", WINDOW_AUTOSIZE);
	imshow("input", src);

	Mat gray, gray_f;
	cvtColor(src, gray, COLOR_BGR2GRAY);

	// 转换为浮点数类型数组
	gray.convertTo(gray, CV_32F);

	// scale and shift by NORM_MINMAX
	Mat dst = Mat::zeros(gray.size(), CV_32FC1);
	normalize(gray, dst, 1.0, 0, NORM_MINMAX);
	Mat result = dst * 255;
	result.convertTo(dst, CV_8UC1);
	imshow("NORM_MINMAX", dst);

	// scale and shift by NORM_INF
	normalize(gray, dst, 1.0, 0, NORM_INF);
	result = dst * 255;
	result.convertTo(dst, CV_8UC1);
	imshow("NORM_INF", dst);

	// scale and shift by NORM_L1
	normalize(gray, dst, 1.0, 0, NORM_L1);
	result = dst * 10000000;
	result.convertTo(dst, CV_8UC1);
	imshow("NORM_L1", dst);

	// scale and shift by NORM_L2
	normalize(gray, dst, 1.0, 0, NORM_L2);
	result = dst * 10000;
	result.convertTo(dst, CV_8UC1);
	imshow("NORM_L2", dst);

	waitKey(0);
	return 0;
}

在这里插入图片描述
  首先概述下什么是图像归一化,其实就是通过一系列变换, 将待处理的原始图像转换成相应的唯一标准形式(该标准形式图像对平移、旋转、缩放等仿射变换具有不变特性)。图像归一化使得图像可以抵抗几何变换的攻击,它能够找出图像中的那些不变量,从而得知这些图像原本就是一样的或者一个系列的。
其性质:

  1. 归一化处理并没有改变图像的对比度
  2. 归一化处理很简单,假设原图像是8位灰度图像,那么读入的像素矩阵最大值为256,最小值为1,定义矩阵为I,J=I/256,就是归一化的图像矩阵,就是说归一化之后所有的像素值都在[0,1]区间内。
void normalize(	InputArray 	src, 	// 输入图像
			InputOutputArray dst, 	// 输出图像
			double 	alpha = 1, 		// NORM_MINMAX时候低值,1,用来规范值,2.规范范围,并且是下限;
			double 	beta = 0, 		// NORM_MINMAX时候高值,只用来规范范围并且是上限;
			int norm_type = NORM_L2, // 只有alpha
			int dtype = -1, 		// 当为负,输出在大小深度通道数都等于输入,当为正,输出只在深度与输如不同,不同的地方由dtype决定; 
			InputArray 	mask = noArray() // mask默认值为空
)	

norm_type 提供了四种归一化的方法

  • NORM_MINMAX
  • NORM_INF
  • NORM_L1
  • NORM_L2

最常用的就是NORM_MINMAX归一化方法。

归一化选择的数学公式类型介绍(norm_type)
设数组中原有{A1,A2,A3…An}
NORM_L1:
在这里插入图片描述
NORM_INF:
在这里插入图片描述
NORM_L2:
在这里插入图片描述
NORM_MINMAX:(AK不属于{max(Ai)},min(Ai),当AK等于max(Ai)时p=1,等于min(Ai)时p=0)
在这里插入图片描述

举例说明:

在这里插入图片描述

最后dst * 255代表还原为图像的像素值,因为图像像素值为0~255

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值