图像处理归一化怎么理解_图像处理 归一化处理 - CSDN
  • 使用gradient descent来训练模型的话都要在数据预处理步骤进行数据归一化。原因如下: 根据反向传播公式: 如果输入层 x 很大,在反向传播时候传递到输入层的梯度就会变得很大。梯度大,学习率就得非常小,否则...

    使用gradient descent来训练模型的话都要在数据预处理步骤进行数据归一化。原因如下:

    根据反向传播公式:

    如果输入层 x 很大,在反向传播时候传递到输入层的梯度就会变得很大。梯度大,学习率就得非常小,否则会越过最优。在这种情况下,学习率的选择需要参考输入层数值大小,而直接将数据归一化操作,能很方便的选择学习率。而且受 x 和 w 的影响,各个梯度的数量级不相同,因此,它们需要的学习率数量级也就不相同。对 w1 适合的学习率,可能相对于 w2 来说会太小,如果仍使用适合 w1 的学习率,会导致在 w2 方向上走的非常慢,会消耗非常多的时间,而使用适合 w2 的学习率,对 w1 来说又太大,搜索不到适合 w1 的解。
     

    展开全文
  • [转载]matlab图像处理为什么要归一化和如何归一化 matlab图像处理为什么要归一化和如何归一化,一、为什么归一化1. 基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图像变换的影响。...

    [转载]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 

    展开全文
  • 二:图像归一化处理

    千次阅读 2019-11-08 22:29:42
    二:图像归一化处理 图像归一化最常见的就是最大最小值归一化方法,公式如下: OpenCV中实现图像最大与最小值归一化的函数如下: normalize( src, // 表示输入图像, numpy类型 dst, // 表示归一化之后图像,...

    二:图像归一化处理

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

    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

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

     

    展开全文
  • 标准化和归一化的区别

    千次阅读 2019-08-20 18:47:37
     归一化是线性模型做数据预处理的关键步骤,比如LR,非线性的就不用归一化了。  归一化就是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。 缺点:这种方法有个缺陷就是当有新数据加入...

    一、是什么?

    1. 归一化

      是为了将数据映射到0~1之间,去掉量纲的过程,让计算更加合理,不会因为量纲问题导致1米与100mm产生不同。

      归一化是线性模型做数据预处理的关键步骤,比如LR,非线性的就不用归一化了。

         归一化就是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。

    缺点:这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

    另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景

    2. z-标准化

      消除分布产生的度量偏差,例如:班级数学考试,数学成绩在90-100之间,语文成绩在60-100之间,那么,小明数学90,语文100,小花数学95,语文95,如何评价两个综合成绩好坏的数学处理方式。

     

    二、怎么选?

    1. 标准化

    • 标准化更好保持了样本间距。当样本中有异常点时,归一化有可能将正常的样本“挤”到一起去。比如三个样本,某个特征的值为1,2,10000,假设10000这个值是异常值,用归一化的方法后,正常的1,2就会被“挤”到一起去。如果不幸的是1和2的分类标签还是相反的,那么,当我们用梯度下降来做分类模型训练时,模型会需要更长的时间收敛,因为将样本分开需要更大的努力!而标准化在这方面就做得很好,至少它不会将样本“挤到一起”。
    • 标准化更符合统计学假设:对一个数值特征来说,很大可能它是服从正态分布的。标准化其实是基于这个隐含假设,只不过是略施小技,将这个正态分布调整为均值为0,方差为1的标准正态分布而已。

    (1)逻辑回归必须要进行标准化吗?

    答案:这取决于我们的逻辑回归是不是用正则。

      如果你不用正则,那么,标准化并不是必须的,如果你用正则,那么标准化是必须的。(暗坑3)
      为什么呢?
      因为不用正则时,我们的损失函数只是仅仅在度量预测与真实的差距,加上正则后,我们的损失函数除了要度量上面的差距外,还要度量参数值是否足够小。而参数值的大小程度或者说大小的级别是与特征的数值范围相关的。举例来说,我们用体重预测身高,体重用kg衡量时,训练出的模型是: 身高 = 体重*x ,x就是我们训练出来的参数。
    当我们的体重用吨来衡量时,x的值就会扩大为原来的1000倍。
      在上面两种情况下,都用L1正则的话,显然对模型的训练影响是不同的。

      假如不同的特征的数值范围不一样,有的是0到0.1,有的是100到10000,那么,每个特征对应的参数大小级别也会不一样,在L1正则时,我们是简单将参数的绝对值相加,因为它们的大小级别不一样,就会导致L1最后只会对那些级别比较大的参数有作用,那些小的参数都被忽略了。

      如果你回答到这里,面试官应该基本满意了,但是他可能会进一步考察你,如果不用正则,那么标准化对逻辑回归有什么好处吗?

      答案是有好处,进行标准化后,我们得出的参数值的大小可以反应出不同特征对样本label的贡献度,方便我们进行特征筛选。如果不做标准化,是不能这样来筛选特征的。

      答到这里,有些厉害的面试官可能会继续问,做标准化有什么注意事项吗?

      最大的注意事项就是先拆分出test集,不要在整个数据集上做标准化,因为那样会将test集的信息引入到训练集中,这是一个非常容易犯的错误!
     

    举例:简单的预测房价的线性回归模型:

      有一组关于房价和房子变量的数据集,通过房子的面积,房间数量,房子的层数来预测房价。

      占地面积1800尺,房间数量3间,房子层数2层-> 房价?;为了方便对比,我们分别看一下标准化前和标准化后的模型输出分布是怎么样的。

      可以看出,标准化前后变量的系数不同,误差不同,但是R平方,和变量的t值是相同的

      现在我们来预测一个1590尺,3个卧室,3层的房屋

      我们发现预测出来的房价是一样的。
      这时你一定会想,既然结果都一样,做不做标准化,都一样嘛。说到这里,我们再看一下,建模时寻找最优解的时间吧。

      为什么标准化后的建模时间会短呢?这时候就要说起寻找系数最优解-梯度下降法。

      标准化前,由于变量的单位相差很大,导致了椭圆型的梯度轮廓。标准化后,把变量变成统一单位,产生了圆形轮廓。由于梯度下降是按切线方向下降,所以导致了系统在椭圆轮廓不停迂回地寻找最优解,而圆形轮廓就能轻松找到了。

      还有一种比较极端的情况,有时没做标准化,模型始终找不到最优解,一直不收敛。

    (2)PCA需要标准化吗?

      我们再来看一下,如果将预测房价的变量,用PCA方法来降维,会不会对结果产生影响。

      我们看出在标准化前,用一个成分就能解释99%的变量变化,而标准化后一个成分解释了75%的变化。 主要原因就是在没有标准化的情况下,我们给了居住面积过大权重,造成了这个结果。

    (3)Kmeans,KNN需要标准化吗?

      Kmeans,KNN一些涉及到距离有关的算法,或者聚类的话,都是需要先做变量标准化的。

      举例:我们将3个城市分成两类,变量有面积和教育程度占比;三个城市分别是这样的:

      城市A,面积挺大,但是整天发生偷盗抢劫,教育程度低;
      城市B,面积也挺大,治安不错,教育程度高;
      城市C,面积中等,治安也挺好,教育程度也挺高;

      我们如果不做标准化,直接做聚类模型的话,A城市和B城市分在一块儿了,你想想,一个治安挺好的城市和一个整体偷盗抢劫城市分在一起,实在是有点违反常理。

    总结:

      在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,Z-score standardization表现更好

    基于树的模型不需要标准化;

    用到正则的线性模型一定要标准化,没用到正则的线性模型不一定要标准化, 但标准化可以加快收敛;

    基于距离或聚类需要先做标准化,如KNN、kmeans

    PCA最好先做标准化

     

    2. 归一化

      模型算法里面有没关于对距离的衡量,没有关于对变量间标准差的衡量。比如decision tree 决策树,他采用算法里面没有涉及到任何和距离等有关的,所以在做决策树模型时,通常是不需要将变量做标准化的。

      在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。有时候,我们必须要特征在0到1之间,此时就只能用归一化。有种svm可用来做单分类,里面就需要用到归一化。

     

    三、怎么用?

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    #导入数据到data变量中

    import pandas

    data = pandas.read_csv('路径.csv')

     

    #(一)Min-Max 标准化

     

    from sklearn.preprocessing import MinMaxScaler

    #初始化一个scaler对象

    scaler = MinMaxScaler()

    #调用scaler的fit_transform方法,把我们要处理的列作为参数传进去

     

    data['标准化后的A列数据'] = scaler.fit_transform(data['A列数据'])

    data['标准化后的B列数据'] = scaler.fit_transform(data['B列数据'])

     

    #(二)Z-Score标准化 (可在scale中直接实现)

     

    from sklearn.preprocessing import scale

    data['标准化后的A列数据'] = scale(data['A列数据'])

    data['标准化后的B列数据'] = scale(data['B列数据'])

     

    # (三) Normalizer归一化

     

    from sklearn.preprocessing import Normalizer

    scaler = Normalizer()

    #归一化可以同时处理多个列,所以[0]第一个进行赋值

    data['归一化后的A列数据'] = scaler.fit_transform(data['A列数据'])[0]

    data['归一化后的B列数据'] = scaler.fit_transform(data['B列数据'])[0]

      

     

    参考文献:

    【1】关于数据建模变量标准化

    【2】机器学习面试之归一化与标准化

    【3】[机器学习] 数据特征 标准化和归一化

    展开全文
  • 【Python】图像归一化

    千次阅读 2020-04-28 23:44:10
    import numpy as np # image为array类型,多少维度都无所谓,直接操作全部元素 image = (image - np.min(image)) / (np.max(image) - np.min(image))
  • 本文引用地址:... ... ...matlab图像处理为什么要归一化和如何归一化 一、为什么归一化 1.  基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变
  • MATLAB实现图像灰度归一化

    万次阅读 2017-03-11 20:08:17
    在许多图像处理系统中,对图像进行归一化都是必备的预处理过程。一般而言,对于灰度图像(或彩色通道的每个颜色分量)进行灰度归一化就是:使其像素的灰度值分布在0~255之间,避免图像对比度不足(图像像素亮度分布...
  • 归一化: 就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。...在许多图像处理系统中,对图像进行归一化都是必备的预处理过程。一般而言,对于灰度图像(或彩色通道的每个颜...
  • 图像归一化normalization

    万次阅读 2018-05-25 14:42:05
    一、图像归一化的好处:1、转换成标准模式,防止仿射变换的影响。2、减小几何变换的影响。3、加快梯度下降求最优解的速度。二、图像归一化的方法1、线性函数转换,表达式如下:y=(x-MinValue)/(MaxValue-MinValue)...
  • matlab图像处理为什么要归一化和如何归一化, 一、为什么归一化 1.  基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图像变换的影响。也就是转换成唯一的标准形式以抵抗仿射变换  图像...
  • 图像归一化

    万次阅读 2014-08-28 11:23:43
    图像归一化在计算机视觉当中,很多时候都作为一个预处理进行处理的。因为图像归一化保持了仿射不变性。而且图像归一化有时候能够提高计算的精度。 所以图像归一化对于我们来说很重要。 而图像归一化的具体...
  • 数字图像处理归一化方法

    千次阅读 2014-08-13 12:05:32
    1.把数变为(0,1)之间的小数,
  • 原文地址:(转载)图像处理进行归一化的各种理由。作者:linyunjia matlab图像处理为什么要归一化和如何归一化, 一、为什么归一化 1.  基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他...
  • 图像归一化是一个像素级操作,其作用是在不改变脊线和谷线结构的清晰度的情况下减少脊谷灰度值的变化,方便后续的处理步骤。对于指纹数据库来说,在进行完图像归一化操作后,图像具有相同的灰度均值和灰度方差,减小...
  • 图像处理中数据归一化

    千次阅读 2014-04-23 11:01:38
    在统计学中,归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。 即该函数在(-∞,+∞)的积分为1 例如概率中的密度函数就满足归一化条件 ...
  • 图像直方图归一化 图像直方图概念: 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的...
  • python opencv-11图像像素归一化

    千次阅读 2019-11-05 22:03:52
    归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。 首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0...
  • openCV实现图像归一化

    万次阅读 热门讨论 2020-06-12 13:55:14
    今天下午师弟问了一个关于图像归一化的问题,因此小编写了关于图像归一化的代码,比如一个文件夹下有多幅图像,每幅图像的大小不一致,如果想把这些图像归一化为相同大小的图像,就涉及到归一化的问题,现分享代码...
  • 图像归一化Normalization

    千次阅读 2019-04-16 10:11:57
    归一化就是通过一系列变换(即利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图像变换的影响),将待处理的原始图像转换成相应的唯一标准形式(该标准形式图像对平移、旋转、缩放等仿射变换具有不变特性)。...
  • opencv图像处理基本操作_归一化

    千次阅读 2018-11-06 11:09:40
     NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。  NORM_INF: 此类型的定义没有查到,根据OpenCV 1的对应项,可能是归一化数组的C-范数(绝对值的最大值)  NORM_L1 : 归一化...
1 2 3 4 5 ... 20
收藏数 42,409
精华内容 16,963
关键字:

图像处理归一化怎么理解