2015-11-17 18:45:18 clear_ad 阅读数 2198
  • 【Python】第16周 数据挖掘与机器学习进阶(上)

    本周课程讲机器学习的概念,了解什么是机器学习以及机器学习的主要任务,kNN算法、线性回归算法的原理与实现,如何拆分训练数据集与测试数据集,算法中的超参数以及特征归一化等内容。实战部份,将讲解手写字体识别和房价预测。

    617 人正在学习 去看看 CSDN就业班

matlab

图像处理为什么要归一化和如何归一化

 

一、为什么归一化

 

1. 

基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图

像变换的影响。也就是转换成唯一的标准形式以抵抗仿射变换

图像归一化使得图像可以抵抗几何变换的攻击,

它能够找出图像中的那些不变量,

从而

得知这些图像原本就是一样的或者一个系列的。

因为我们这次的图片有好多都是一个系列的,所以老师把这个也作为我研究的一个方

向。

我们主要要通过归一化减小医学图片由于光线不均匀造成的干扰。

2.matlab

里图像数据有时候必须是浮点型才能处理,而图像数据本身是

0-255

UNIT

型数

据所以需要归一化,转换到

0-1

之间。

3.

归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,

成为纯量。

目的是为了:

(1).

避免具有不同物理意义和量纲的输入变量不能平等使用

(2).bp

中常采用

sigmoid

函数作为转移函数,归一化能够防止净输入绝对值过大引起的神经

元输出饱和现象

 

(3).

保证输出数据中数值小的不被吞食

 

 

3.

神经网络中归一化的原因

归一化是为了加快训练网络的收敛性,可以不进行归一化处理

归一化的具体作用是归纳统一样本的统计分布性。

归一化在

0-1

之间是统计的概率

分布,归一化在

-1--+1

之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是

为了建模还是为了计算,

首先基本度量单位要同一,

神经网络是以样本在事件中的统计分别

几率来进行训练(概率计算)和预测的,归一化是同一在

0-1

之间的统计概率分布;

 

当所

有样本的输入信号都为正值时,

与第一隐含层神经元相连的权值只能同时增加或减小,

从而

导致学习速度很慢。

为了避免出现这种情况,

加快网络学习速度,

可以对输入信号进行归一

化,使得所有样本的输入信号其均值接近于

0

或与其均方差相比很小。

归一化是因为

sigmoid

函数的取值是

0

1

之间的,

网络最后一个节点的输出也是

如此,

所以经常要对样本的输出归一化处理。

所以这样做分类的问题时用

[0.9 0.1 0.1]

就要比

[1 0]

要好。

 

但是归一化处理并不总是合适的,

根据输出值的分布情况,

标准化等其它统计变换方法有时

可能更好。

二、如何归一化

 

matlab

中的归一化处理有三种方法

 

1. premnmx

postmnmx

tramnmx 

2. restd

poststd

trastd 

3. 

自己编程

 

(1)

线性函数转换,表达式如下:

 

y=(x-MinValue)/(MaxValue-MinValue) 

说明:

x

y

分别为转换前、后的值,

MaxValue

MinValue

分别为样本的最大值和最小值。

 

(2)

对数函数转换,表达式如下:

 

y=log10(x) 

说明:以

10

为底的对数函数转换。

 

(3)

反余切函数转换,表达式如下:

 

y=atan(x)*2/PI 

(4)

一个归一化代码

I=double(I); 

maxvalue=max(max(I)');%max

在把矩阵每列的最大值找到,

并组成一个单行的数组,

转置一

下就会行转换为列,再

max

就求一个最大的值,如果不转置,只能求出每列的最大值。

 

I/maxvalue; %

为什么要用

1

去减?

 

Image1=f; 

 

 

图像归一化到

[0,255] 

(im 

min(min(im))) 

./ 

(max(max(im)) 

 

min(min(im))) 255

2018-02-10 23:34:45 sanwen211314 阅读数 1061
  • 【Python】第16周 数据挖掘与机器学习进阶(上)

    本周课程讲机器学习的概念,了解什么是机器学习以及机器学习的主要任务,kNN算法、线性回归算法的原理与实现,如何拆分训练数据集与测试数据集,算法中的超参数以及特征归一化等内容。实战部份,将讲解手写字体识别和房价预测。

    617 人正在学习 去看看 CSDN就业班

[转载]matlab图像处理为什么要归一化和如何归一化

matlab图像处理为什么要归一化和如何归一化,
一、为什么归一化
1.
    基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图像变换的影响。也就是转换成唯一的标准形式以抵抗仿射变换
  图像归一化使得图像可以抵抗几何变换的攻击,它能够找出图像中的那些不变量,从而得知这些图像原本就是一样的或者一个系列的。
  因为我们这次的图片有好多都是一个系列的,所以老师把这个也作为我研究的一个方向。
  我们主要要通过归一化减小医学图片由于光线不均匀造成的干扰。
2.matlab里图像数据有时候必须是浮点型才能处理,而图像数据本身是0-255的UNIT型数据所以需要归一化,转换到0-1之间。
3.归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。 目的是为了:
(1).避免具有不同物理意义和量纲的输入变量不能平等使用 
(2).bp中常采用sigmoid函数作为转移函数,归一化能够防止净输入绝对值过大引起的神经元输出饱和现象 
(3).保证输出数据中数值小的不被吞食 
3.神经网络中归一化的原因
        归一化是为了加快训练网络的收敛性,可以不进行归一化处理 
        归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,归一化是同一在0-1之间的统计概率分布; 当所有样本的输入信号都为正值时,与第一隐含层神经元相连的权值只能同时增加或减小,从而导致学习速度很慢。为了避免出现这种情况,加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值接近于0或与其均方差相比很小。
        归一化是因为sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。所以这样做分类的问题时用[0.9 0.1 0.1]就要比用[1 0 0]要好。
但是归一化处理并不总是合适的,根据输出值的分布情况,标准化等其它统计变换方法有时可能更好。

二、如何归一化
matlab中的归一化处理有三种方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3. 自己编程
(1)线性函数转换,表达式如下:
y=(x-MinValue)/(MaxValue-MinValue)
说明:x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。
(2)对数函数转换,表达式如下:
y=log10(x)
说明:以10为底的对数函数转换。
(3)反余切函数转换,表达式如下:
y=atan(x)*2/PI
(4)一个归一化代码.
I=double(I);
maxvalue=max(max(I)');%max在把矩阵每列的最大值找到,并组成一个单行的数组,转置一下就会行转换为列,再max就求一个最大的值,如果不转置,只能求出每列的最大值。
f = 1 - I/maxvalue; 
Image1=f;



本文引用地址:http://blog.sciencenet.cn/blog-444691-322182.html 

2011-09-11 14:21:50 berlini159 阅读数 1384
  • 【Python】第16周 数据挖掘与机器学习进阶(上)

    本周课程讲机器学习的概念,了解什么是机器学习以及机器学习的主要任务,kNN算法、线性回归算法的原理与实现,如何拆分训练数据集与测试数据集,算法中的超参数以及特征归一化等内容。实战部份,将讲解手写字体识别和房价预测。

    617 人正在学习 去看看 CSDN就业班
matlab图像处理为什么要归一化和如何归一化,
一、为什么归一化
1.
    基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图像变换的影响。也就是转换成唯一的标准形式以抵抗仿射变换
  图像归一化使得图像可以抵抗几何变换的攻击,它能够找出图像中的那些不变量,从而得知这些图像原本就是一样的或者一个系列的。
  因为我们这次的图片有好多都是一个系列的,所以老师把这个也作为我研究的一个方向。
  我们主要要通过归一化减小医学图片由于光线不均匀造成的干扰。
2.matlab里图像数据有时候必须是浮点型才能处理,而图像数据本身是0-255的UNIT型数据所以需要归一化,转换到0-1之间。
3.归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。 目的是为了:
(1).避免具有不同物理意义和量纲的输入变量不能平等使用 
(2).bp中常采用sigmoid函数作为转移函数,归一化能够防止净输入绝对值过大引起的神经元输出饱和现象 
(3).保证输出数据中数值小的不被吞食 
3.神经网络中归一化的原因
        归一化是为了加快训练网络的收敛性,可以不进行归一化处理 
        归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,归一化是同一在0-1之间的统计概率分布; 当所有样本的输入信号都为正值时,与第一隐含层神经元相连的权值只能同时增加或减小,从而导致学习速度很慢。为了避免出现这种情况,加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值接近于0或与其均方差相比很小。
        归一化是因为sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。所以这样做分类的问题时用[0.9 0.1 0.1]就要比用[1 0 0]要好。
但是归一化处理并不总是合适的,根据输出值的分布情况,标准化等其它统计变换方法有时可能更好。

二、如何归一化
matlab中的归一化处理有三种方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3. 自己编程
(1)线性函数转换,表达式如下:
y=(x-MinValue)/(MaxValue-MinValue)
说明:x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。
(2)对数函数转换,表达式如下:
y=log10(x)
说明:以10为底的对数函数转换。
(3)反余切函数转换,表达式如下:
y=atan(x)*2/PI
(4)一个归一化代码.
I=double(I);
maxvalue=max(max(I)');%max在把矩阵每列的最大值找到,并组成一个单行的数组,转置一下就会行转换为列,再max就求一个最大的值,如果不转置,只能求出每列的最大值。
f = 1 - I/maxvalue; %为什么要用1去减?
Image1=f;
2019-07-29 17:24:21 nanhuaibeian 阅读数 1231
  • 【Python】第16周 数据挖掘与机器学习进阶(上)

    本周课程讲机器学习的概念,了解什么是机器学习以及机器学习的主要任务,kNN算法、线性回归算法的原理与实现,如何拆分训练数据集与测试数据集,算法中的超参数以及特征归一化等内容。实战部份,将讲解手写字体识别和房价预测。

    617 人正在学习 去看看 CSDN就业班

归一化
就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。
首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。

归一化的原因

  1. matlab里图像数据有时候必须是浮点型才能处理,而图像数据本身是 0-255 的 uint8 型数据,所以需要归一化,转换到 0-1之间。
  2. 在许多图像处理系统中,对图像进行归一化都是必备的预处理过程。一般而言,对于灰度图像(或彩色通道的每个颜色分量)进行灰度归一化就是:使其像素的灰度值分布在0~255之间,避免图像对比度不足(图像像素亮度分布不平衡)从而对后续处理带来干扰。
  3. 例如一个double类数组包含区间[0,255]之外的值,则使用B = uint8(A)转换时,MATLAB会将所有小于0的值转换为0,所有大于255的值转换为255,而在0和255之间的值将全部舍去小数部分转换为整数。因此需要对其进行适当地缩放
  4. 防止跨度过大,把边缘像素抹掉

示例 1

>> g = [-0.5 0.5;0.75 1.5]
g =
   -0.5000    0.5000
    0.7500    1.5000
% 将矩阵 g 构成的图像转换为 uint8 型
>> g1 = im2uint8(g)
g1 =
  2×2 uint8 矩阵
     0   128
   191   255
% 将矩阵 g 构成的图像先归一化处理,然后转换为 uint8 型
>> g2 = im2uint8(mat2gray(g))
g2 =
  2×2 uint8 矩阵
     0   128
   159   255

由结果可以看出,不归一化处理,对图像的灰度(介于黑白之间的颜色)或多或少有影响。
示例 2
在这里插入图片描述

2019-11-08 22:19:59 xjp_xujiping 阅读数 87
  • 【Python】第16周 数据挖掘与机器学习进阶(上)

    本周课程讲机器学习的概念,了解什么是机器学习以及机器学习的主要任务,kNN算法、线性回归算法的原理与实现,如何拆分训练数据集与测试数据集,算法中的超参数以及特征归一化等内容。实战部份,将讲解手写字体识别和房价预测。

    617 人正在学习 去看看 CSDN就业班

二:图像归一化处理

图像归一化最常见的就是最大最小值归一化方法,公式如下:

  1. OpenCV中实现图像最大与最小值归一化的函数如下:
  2. normalize(
  3. src, // 表示输入图像, numpy类型
  4. dst, // 表示归一化之后图像, numpy类型
  5. alpha=None, // 归一化中低值 min
  6. beta=None, // 归一化中的高值max
  7. norm_type=None, // 归一化方法,选择最大最小值归一化 NORM_MINMAX,
  8. dtype=None, // 归一化之后numpy数据类型,一般选择cv.CV_32F
  9. mask=None //遮罩层,默认设置为None
  10. )

基于OpenCV实现图像最大最小值归一化的代码演示如下:

  1. image = cv.imread("D:/javaopencv/dahlia_4.jpg")
  2. cv.imshow("input", image)
  3. result = np.zeros(image.shape, dtype=np.float32)
  4. cv.normalize(image, result, alpha=0, beta=1, norm_type=cv.NORM_MINMAX, dtype=cv.CV_32F)
  5. print(result)
  6. cv.imshow("norm", np.uint8(result*255.0))
  7. cv.waitKey(0)
  8. cv.destroyAllWindows()

原图像素值输出

归一化之后像素值:

解释

原图与归一化之后的运行结果完全一致,说明归一化不会改变图像本身的信息存储,但是通过打印出来的像素值可以发现,取值范围从0~255已经转化为0~1之间了,这个对于后续的神经网络或者卷积神经网络处理有很大的好处,tensorflow官方给出mnist数据集,全部采用了归一化之后的结果作为输入图像数据来演示神经网络与卷积神经网络。

实验

image = cv2.imread(r"D:\test_picture\9.jpg")#uint8 (372,419,3) [[[252 246 233][252 246 233].........]]
cv2.imshow("input", image)
#print(image)
result = np.zeros(image.shape, dtype=np.float32)
#cv2.normalize(image, result, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)
result = image/255.0 #与cv2.normalize效果一样
#result = image/127.5 - 1 #也是对图像进行归一化,范围为[-1, 1]
print(result)#float64 (372,419,3) [[[0.98823529 0.96470588 0.91372549] [0.98823529 0.96470588 0.91372549].....]]

img = np.uint8(result*255.0)#
print((image == img).all())#true 

cv2.imshow("norm",result)#result 和 img的显示效果一样,灰度图除以255就是进行以归一化处理,你可视化的时候会映射到图像空间的。
cv2.waitKey(0)
cv2.destroyAllWindows()

#im = Image.fromarray(result)#TypeError: Cannot handle this data type
#im.show()
  • 252 / 255 = 0.98823529

#result 和 img的显示效果一样,灰度图除以255就是进行以归一化处理,你可视化的时候会映射到图像空间的。

在代码中看到图像的2种处理方式:

img/255.0
img/127.5 - 1
第一种是对图像进行归一化,范围为[0, 1],第二种也是对图像进行归一化,范围为[-1, 1],这两种只是归一化范围不同,为了直观的看出2种区别,分别对图像进行两种处理:

1

从图中可以看出, 第二种方式图像显示的更黑,其直方图如下:

2

同样,其直方图的分布规律相同,第二种分布相对稀疏。

 

图像归一化

阅读数 17756

没有更多推荐了,返回首页