精华内容
下载资源
问答
  • 本文详细介绍了OpenCV-Python图像乘法运算cv2.multiply函数的调用语法,并分析了OpenCV乘法的几种使用场景以及图像溢出的归一化处理,通过这些分析可以知道OpenCV图像的乘法运算主要有三种作用: 1. 图像和标量的...

    ☞ ░ 前往老猿Python博客░ https://blog.csdn.net/LaoYuanPython

    一、引言

    在《OpenCV-Python图像的加法运算cv2.add函数详解》及《OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减法的差异对比》详细介绍了图像的加法运算和减法运算,有加减法就有乘除法,本文介绍图像的乘法运算。

    图像的乘法有三种,具体参考《对OpenCV中3种乘法操作的理解掌握》,我们在此只关注最后一种,也即cv2.multiply函数提供的乘法。对于两个图像矩阵A、B来说:
    在这里插入图片描述
    该种方式的乘法计算方法如下:
    在这里插入图片描述

    二、图像乘法cv2.multiply的语法

    调用语法:

    multiply(src1, src2, dst=None, scale=None, dtype=None)

    参数说明:

    OpenCV手册介绍的乘法相关语法内容解读如下:

    1. src1:作为被乘数的图像数组
    2. src2:作为乘数的图像数组,大小和类型与src1相同
    3. dst:可选参数,输出结果保存的变量,默认值为None,如果为非None,输出图像保存到dst对应实参中,其大小和通道数与输入图像相同,图像的深度(即图像像素的位数)由dtype参数或输入图像确定
    4. scale:可选的结果图像缩放因子,即在src1*src2的基础上再乘scale
    5. mask:图像掩膜,可选参数,为8位单通道的灰度图像,用于指定要更改的输出图像数组的元素,即输出图像像素只有mask对应位置元素不为0的部分才输出,否则该位置像素的所有通道分量都设置为0
    6. dtype:可选参数,输出图像数组的深度,即图像单个像素值的位数(如RGB用三个字节表示,则为24位)。
    7. 返回值:相乘的结果图像

    三、图像乘法cv2.multiply的使用场景

    关于src1和src2这两个输入数据上,OpenCV帮助文档中乘法和加法、减法的说明不一样,加法和减法中可以使用标量,而在乘法中说明是二者必须大小和类型相同,没有说可以使用标量。我们参考加减法的模式来进行验证说明。

    本部分处理案例的源图像使用图片imgs.jpg是一张多个OpenCV处理经典图像的合集,图像如下:
    在这里插入图片描述
    由于图像比较大不好截图,因此后面读取图像时将其强制调整为1000*750.

    3.1、src2为标量的情况

    以一副图像和一个标量相乘来观察,代码如下:

    import numpy as np
    import cv2
    def  main():
        img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
        imgMultiply = cv2.multiply(img,1.2)
        cv2.imshow('img', img)
        cv2.imshow('imgMultiply', imgMultiply)
        cv2.waitKey(0)
    
    main()
    

    我们通过程序调试来观察相乘的结果,在显示图片前设置断点,观看相关变量数据,如图:
    在这里插入图片描述
    从上述标黄色部分的矩阵通道值可以看出,直接用一个常数标量相乘后,原图像矩阵的像素后2个通道值在结果图像中全部为0。继续运行显示图像如下:
    在这里插入图片描述
    可以看到图像为蓝色,与上面三通道只留了第一个通道蓝色通道的数据的一致。

    3.2、src2为一个四元组

    在前面介绍加减法时说明了OpenCV在对标量运算时转为了四元组进行运算,因此在此我们将上面案例的标量改为四元组再验证。代码如下:

    def  main():
        img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
        imgMultiply = cv2.multiply(img,(1.5,1.5,1.5,1.5))
        cv2.imshow('img', img)
        cv2.imshow('imgMultiply', imgMultiply)
        cv2.waitKey(0)
    
    main()
    

    经跟踪观察,所有像素通道分量都乘以了1.5,超过255的按饱和运算模式置为255.显示图像如下:

    在这里插入图片描述
    上图跟原图对比,亮度明显增强。实际上当src2设置为一个元素值相等的四元组时,其效果等同于设置为四个元素为1的四元组和图像设置缩放因子为该元素值的情况。我们将上述代码调整为如下:

    def  main():
        img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
        imgMultiply = cv2.multiply(img,(1,1,1,1),scale=0.5)
        cv2.imshow('img', img)
        cv2.imshow('imgMultiply', imgMultiply)
        cv2.waitKey(0)
    
    main()
    

    注意:缩放因子之前还有个可选参数dst,因此需要用关键字参数形式。
    对应结果图像如下:
    在这里插入图片描述
    可以看到图像亮度明显变暗,但对比度没有变化。

    综合3.1和3.2验证的情况(老猿的验证环境为OpenCV-Python4.3.0.36,windows版本),src2可以是一个四元组,当我们想使用multiply调整图像亮度时,可以使用src2为一个四元组,该四元组的所有元素值即为要调整的亮度因子,也可以使用元素全为1的四元组叠加scale调整因子的情况来实现。但这2种形式在OpenCV帮助文档中没有说明,因此虽然现在可行但老猿不建议使用。如果要直接调整图像的亮度,建议直接进行矩阵和标量的算术乘法即可,只是需要注意要采用饱和运算模式。

    3.3、彩色图像数组和掩膜图像数组相乘

    使用如下代码进行彩色图像和掩膜图像的乘法运算:

    def  main():
        img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
        mask = np.ones(img.shape[:2],np.uint8)
        mask[100:200,100:200] = 0
        imgMultiply = cv2.multiply(img,mask,scale=0.5)
    
        cv2.imshow('img', img)
        cv2.imshow('imgMultiply', imgMultiply)
        cv2.waitKey(0)
    
    main()
    

    执行时报错:

    "C:\Program Files\Python38\python.exe" F:/study/python/project/cvtest/cvtest.py
    Traceback (most recent call last):
      File "F:/study/python/project/cvtest/cvtest.py", line 100, in <module>
        main()
      File "F:/study/python/project/cvtest/cvtest.py", line 94, in main
        imgMultiply = cv2.multiply(img,mask,scale=0.5)
    cv2.error: OpenCV(4.3.0) C:\projects\opencv-python\opencv\modules\core\src\arithm.cpp:669: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function 'cv::arithm_op'
    

    可见不能这样操作。

    3.4、彩色图像数组和彩色图像数组相乘

    我们使用如下代码构建两个彩色图像数组的乘法运算,其中的第二个图像是基于原图像同样大小和通道数的矩阵图像,其元素取值只有0和1:

    def  main():
        img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
        mask = np.ones(img.shape,np.uint8)
        mask[500:650,10:300] = 0
        imgMultiply = cv2.multiply(img,mask,scale=0.8)
    
        cv2.imshow('img', img)
        cv2.imshow('imgMultiply', imgMultiply)
        cv2.waitKey(0)
    
    main()
    

    执行后结果图像截图:
    在这里插入图片描述
    可以看到左下角图片部分被黑色替代,如果想使用白色替代,将mask设置为0的通道调整为一个比较大的值使得相乘时饱和运算后值为255即可。如:

    def  main():
        img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
        mask = np.ones(img.shape,np.uint8)
        mask[500:650,10:300] = 100
        imgMultiply = cv2.multiply(img,mask,scale=0.8)
    
        cv2.imshow('img', img)
        cv2.imshow('imgMultiply', imgMultiply)
        cv2.waitKey(0)
    
    main()
    

    执行结果截图:
    在这里插入图片描述
    可以看到,通过这样的两个图像相乘,可以决定结果图像哪些部分保留哪些部分清除。

    3.5、彩色图像饱和运算乘

    如果两副图像相乘甚至是一副图像自乘,由于图像自身像素通道值一般大于为0或大于1的数,而图像运算是饱和运算,就会导致两副图像任意一副为黑色的部分在结果图像中都为黑色,而其他部分通道值大部分都会大幅增长甚至达到饱和。

    上面原图自乘的代码如下:

    def  main():
        img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
        imgMultiply = cv2.multiply(img,img)
    
        cv2.imshow('img', img)
        cv2.imshow('imgMultiply', imgMultiply)
        cv2.waitKey(0)
    
    main()
    

    自乘之后的结果图像如下:
    在这里插入图片描述
    所以这种真正的两副图像相乘在低级图像处理来说基本没有意义,中高级图像处理方面老猿没有研究不清楚是否有特殊用途。

    3.6、彩色图像乘积的溢出处理

    3.6.1、溢出的解决方式

    图像的单个通道值用一个无符号字节(numpy.uint8)表示,其值范围在0-255之内,如果图像像素通道值超出范围时,OpenCV的饱和运算机制会将小于0的通道值置为0,大于255的置为255。但这种机制在某些情况下会导致图像像素通道值大范围的被置为255或0。例如从上面3.4可以看到真正两个图像的乘积由于饱和元素导致图像大范围白化。

    为了解决这个问题,可以采用如下方法处理:

    1. 乘法时,将图像乘积结果保存到通道值uint16或float32的矩阵中(由于float32可以保存小数,因此老猿建议为float32),这可能有2种方式,一种是将原输入图像矩阵在执行乘运算前将其转为float32矩阵,二是原输入图像矩阵保持不变,将乘积保存到float32图像矩阵,但老猿目前没有在OpenCV-Python中找到第二种方式的实现,只验证通过了先将输入图像转为float32的方式;
    2. 执行乘法的乘积矩阵进行归一化处理。关于归一化处理请参考《opencv中归一化函数normalize()的原理讲解》。
    3.6.2、归一化处理的算法考虑

    使用OpenCV-Python的normalize函数的NORM_MINMAX模式将矩阵元素值归到[0,255]区间范围内时,OpenCV采用的算法是:
    在这里插入图片描述

    这个算法的思想是将原矩阵中最大元素值映射为区间的上限如255,将原矩阵中最小元素值映射为区间的下限如0,其他中间值映射为该值与矩阵中最小元素值的差与原矩阵中最大最小元素值差的比例乘以映射区间的乘积再加上映射区间下限值,即映射过程的线性变换是以原元素值与原矩阵最小值的差异值作为线性变换的,而不是直接以元素值作为线性变换的。

    从算法上来说,这种方式比较科学,但老猿认为图像处理的情况比较特殊,如果一副图像全部是由深色图像构成,所有像素的每个通道值都比较大,就会导致图像的乘积归一化到[0-255]之间时差异会很小,并且图像单通道都在[0-255]之间,因此两个图像的乘积特别是自乘的乘积理论上以0作为下限来考虑进行归一化处理可能在特定场景下更合理,当然在其他归一化场景下(如图像加法)可能OpenCV采用的NORM_MINMAX模式更合理。

    3.6.3、图像自乘及归一化处理案例

    针对OpenCV-Python的归一化和老猿考虑的归一化两种算法我们来实现图片imgs.jpg的图像自乘之后的归一化效果对比。对应代码如下:

    def main():
        img = cv2.imread(r'F:\pic\imgs.jpg')
        img32 = img.astype(np.float32)
    
        imgMultiply = cv2.multiply(img32, img32)
    
        imgNormalizeOpenCV = cv2.normalize(imgMultiply,None,0,255,cv2.NORM_MINMAX) #opencv归一化处理
    
        #老猿的归一化处理
        maxv = np.max(imgMultiply)
        imgNormalizeLaoyuan = (imgMultiply / maxv) * 255
    
        cv2.imshow('imgNormalizeOpenCV', imgNormalizeOpenCV.astype(np.uint8))
        cv2.imshow('imgNormalizeLaoyuan', imgNormalizeLaoyuan.astype(np.uint8))
    
        cv2.waitKey(0)
    
    
    main()
    

    我们将原图、两种归一化处理的图竖直叠加在一起对比一下看看图像自乘再归一化处理的效果。下面图片中第一行图片是原图的,第二行是OpenCV归一化处理的,第三行是老猿的归一化方式处理。
    在这里插入图片描述
    从上面图片对照可以看出,自乘归一化处理后图像的对比度增大,这是因为自乘后放大了差异,归一化处理不会改变这种变化趋势。同时可以看到两种归一化处理图像效果差不多,老猿没有仔细分析数据,想来也差不多,这是因为imgs.jpg这幅图像黑色和白色都存在,导致这两种算法处理时实际结果应该基本相同。

    四、小结:

    本文详细介绍了OpenCV-Python图像乘法运算cv2.multiply函数的调用语法,并分析了OpenCV乘法的几种使用场景以及图像溢出的归一化处理,通过这些分析可以知道OpenCV图像的乘法运算主要有三种作用:

    1. 图像和标量的乘法可以调节图像的明暗度;
    2. 图像和掩膜的乘法可以控制输出图像的范围;
    3. 图像自乘可以调节图像的对比度。

    更多OpenCV-Python的介绍请参考专栏《OpenCV-Python图形图像处理 》

    博文地址https://blog.csdn.net/laoyuanpython/category_9979286.html

    关于老猿的付费专栏

    老猿的付费专栏《使用PyQt开发图形界面Python应用 》(https://blog.csdn.net/laoyuanpython/category_9607725.html)专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》 (https://blog.csdn.net/laoyuanpython/category_10232926.html)详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏都适合有一定Python基础但无相关知识的小白读者学习。

    付费专栏文章目录:《moviepy音视频开发专栏文章目录》(https://blog.csdn.net/LaoYuanPython/article/details/107574583)、《使用PyQt开发图形界面Python应用专栏目录 》(https://blog.csdn.net/LaoYuanPython/article/details/107580932)。

    对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》(https://blog.csdn.net/laoyuanpython/category_9831699.html)从零开始学习Python。

    如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

    跟老猿学Python、学OpenCV!

    ☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython

    展开全文
  • 数据的标准化,归一化方法 数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或...

     数据的标准化,归一化方法
    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

     
    像素值在0-10000之间,通过归一化到 [-1,1] 之间。

    
    import os
    import SimpleITK as sitk
    def adaptive_normal(image_path, outpath):
        """
        normalize image, rescaled to [-1, 1], without background voxels in statistic analysis
        :param image_path: image path, nii.gz
        :param outpath: .nii.gz, 归一化后的文件保存路径
        :return: 归一化后的 nii.gz 文件绝对路径
        """
    
        min_p = 0.001 
        max_p = 0.999 # quantile prefer 98~99
        
        image = sitk.ReadImage(image_path)
        image_array = sitk.GetArrayFromImage(image)
        imgArray = np.float32(image_array)
    
        imgPixel = imgArray[imgArray >= 0]
        imgPixel.sort()
        index = int(round(len(imgPixel) - 1) * min_p + 0.5)
        if index < 0:
            index = 0
        if index > (len(imgPixel) - 1):
            index = len(imgPixel) - 1
        value_min = imgPixel[index]
    
        index = int(round(len(imgPixel) - 1) * max_p + 0.5)
        if index < 0:
            index = 0
        if index > (len(imgPixel) - 1):
            index = len(imgPixel) - 1
        value_max = imgPixel[index]
    
        mean = (value_max + value_min) / 2.0
        stddev = (value_max - value_min) / 2.0
    
        imgArray = (imgArray - mean) / stddev
        imgArray[imgArray < -1] = -1.0
        imgArray[imgArray > 1] = 1.0
    
        img = sitk.GetImageFromArray(imgArray, isVector=False)
        sitk.WriteImage(img, outpath)
        return os.path.abspath(outpath)


    Reference:
    https://blog.csdn.net/gefeng1209/article/details/90414604?utm_medium=distribute.pc_relevant.none-task-blog-opensearch-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-opensearch-2.channel_param

    https://blog.csdn.net/zwqjoy/article/details/81182102?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.channel_param

    https://github.com/Wddzht/DataPreprocessing

    https://blog.csdn.net/u013524655/article/details/40918959?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160005348519725247433072%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160005348519725247433072&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~pc_rank_v2-2-40918959.first_rank_ecpm_v3_pc_rank_v2&utm_term=%E6%9E%81%E5%B7%AE&spm=1018.2118.3001.4187

    Game Over~~~

    展开全文
  • 我在业余时间处理一个小问题,包括分析通过显微镜获得的一些图像。它是一个到处都有东西的晶圆,最终我想做一个程序来检测某些材料何时出现。不管怎样,第一步是将图像的强度标准,因为镜头不会产生均匀的闪电。...

    我在业余时间处理一个小问题,包括分析通过显微镜获得的一些图像。它是一个到处都有东西的晶圆,最终我想做一个程序来检测某些材料何时出现。

    不管怎样,第一步是将图像的强度标准化,因为镜头不会产生均匀的闪电。目前我使用的图像,没有任何东西,只有基板,作为背景,或参考,图像。我找到RGB的三个(强度)值中的最大值。from PIL import Image

    from PIL import ImageDraw

    rmax = 0;gmax = 0;bmax = 0;rmin = 300;gmin = 300;bmin = 300

    im_old = Image.open("test_image.png")

    im_back = Image.open("background.png")

    maxx = im_old.size[0] #Import the size of the image

    maxy = im_old.size[1]

    im_new = Image.new("RGB", (maxx,maxy))

    pixback = im_back.load()

    for x in range(maxx):

    for y in range(maxy):

    if pixback[x,y][0] > rmax:

    rmax = pixback[x,y][0]

    if pixback[x,y][1] > gmax:

    gmax = pixback[x,y][1]

    if pixback[x,y][2] > bmax:

    bmax = pixback[x,y][2]

    pixnew = im_new.load()

    pixold = im_old.load()

    for x in range(maxx):

    for y in range(maxy):

    r = float(pixold[x,y][0]) / ( float(pixback[x,y][0])*rmax )

    g = float(pixold[x,y][1]) / ( float(pixback[x,y][1])*gmax )

    b = float(pixold[x,y][2]) / ( float(pixback[x,y][2])*bmax )

    pixnew[x,y] = (r,g,b)

    代码的第一部分确定了背景图像的红、绿、蓝通道的最大强度(逐像素),但只需要一次。

    第二部分获取“真实”图像(上面有东西),并根据背景逐像素地对红、绿、蓝通道进行标准化。这需要一些时间,1280x960图像需要5-10秒,如果需要对多个图像执行此操作,则速度太慢。

    如何提高速度?我想将所有图像移动到numpy数组中,但似乎找不到一种快速的方法来处理RGB图像。

    我宁愿不离开Python,因为我的C++是相当低的,并且得到一个工作的FORTRAN代码可能要比我在速度方面节省的时间要长:P<

    展开全文
  • 我在业余时间处理一个小问题,包括分析通过显微镜获得的一些图像.这是一个带有一些东西的晶圆,最终我想制作一个程序来检测某些材料何时出现.无论如何,第一步是规范化图像的强度,因为镜头不能提供均匀的闪电.目前,我...

    我在业余时间处理一个小问题,包括分析通过显微镜获得的一些图像.这是一个带有一些东西的晶圆,最终我想制作一个程序来检测某些材料何时出现.

    无论如何,第一步是规范化图像的强度,因为镜头不能提供均匀的闪电.目前,我使用的图像没有任何东西,只有基板,作为背景或参考图像.我找到了RGB的三个(强度)值的最大值.

    from PIL import Image

    from PIL import ImageDraw

    rmax = 0;gmax = 0;bmax = 0;rmin = 300;gmin = 300;bmin = 300

    im_old = Image.open("test_image.png")

    im_back = Image.open("background.png")

    maxx = im_old.size[0] #Import the size of the image

    maxy = im_old.size[1]

    im_new = Image.new("RGB", (maxx,maxy))

    pixback = im_back.load()

    for x in range(maxx):

    for y in range(maxy):

    if pixback[x,y][0] > rmax:

    rmax = pixback[x,y][0]

    if pixback[x,y][1] > gmax:

    gmax = pixback[x,y][1]

    if pixback[x,y][2] > bmax:

    bmax = pixback[x,y][2]

    pixnew = im_new.load()

    pixold = im_old.load()

    for x in range(maxx):

    for y in range(maxy):

    r = float(pixold[x,y][0]) / ( float(pixback[x,y][0])*rmax )

    g = float(pixold[x,y][1]) / ( float(pixback[x,y][1])*gmax )

    b = float(pixold[x,y][2]) / ( float(pixback[x,y][2])*bmax )

    pixnew[x,y] = (r,g,b)

    代码的第一部分确定背景图像的逐个像素的RED,GREEN和BLUE通道的最大强度,但只需要进行一次.

    第二部分采用“真实”图像(上面有东西),并根据背景逐像素地对RED,GREEN和BLUE通道进行标准化.对于1280×960图像,这需要一些时间,5-10秒,如果我需要对多个图像执行此操作,则速度太慢.

    我该怎么做才能提高速度?我想将所有图像移动到numpy数组,但我似乎无法找到一种快速的方法来处理RGB图像.

    我宁愿不离开python,因为我的C级别很低,并且获得一个有效的FORTRAN代码可能需要比我在速度方面节省的时间更长:P

    展开全文
  • 1.1.定义:归一化把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。 1.2.优点:归一化使数据有可比性,同时又保持相比较的两个数据之间的相对关系 转换成标准模式,防止仿射变换的影响。 ...
  • 在我想对每个频道的图像进行归一化处理。有没有比下面这些更性感的方式来做这件事?特别是我不喜欢的是频道上的循环,我发现必须这样做很奇怪np.min.最小值以及np.最大值在切片上。同样,这是硬编码,只工作在张量与...
  • 一、简单缩放分为:最大值...例子:在处理自然图像时,我们获得的像素值在[0,255]区间中,常用的处理是将这些像素值除以255,使它们缩放到[0,1]中。二、逐样本均值消减(也称为移除直流分量)如果你的数据是平稳的(即数...
  • python opencv-11图像像素归一化

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

    千次阅读 热门讨论 2016-01-15 10:25:53
    图像归一化就不多说了,就是(数值-min)/(max-min),把结果都划归到0-1范围,便于不同变量之间的比较,取消了不同数量差别。 第一个方法,需要对栅格数据预先知道取值范围。 第二种方法,比较好点,直接读取属性
  • 图像归一化作用和方法

    千次阅读 2017-06-20 11:26:10
    不管是Python || C++ ||Matlab,咱们关注的是归一化处理的思路,以及为什么要进行归一化,不要被语言所局限 matlab图像处理为什么要归一化和如何归一化, 一、为什么归一化 1.  基本上归一化思想是利用图像的...
  • 同时,为了防止训练中出现数值暴增,补充简单归一化处理。 源代码 import numpy as np import matplotlib.pyplot as plt import random import math #-----------data-----------# rawData = n
  • 你的意思是你目前正在寻找一个已知的物体在图像的某个地方,你现在只能处理这个物体被仿射变换(在二维平面上移动),但是你想要能够处理透视变换的物体吗?在您可以尝试使用SURF或SIFT算法在参考图像和未知图像中查找...
  • 对原图像进行归一化处理,即用【图像矩阵元素-处理前灰度级最小值】除以【处理前灰度级最大值-处理前灰度级最小值】;将图像灰度级放缩至我们指定的预期期间,即用【处理后的灰度级最小值】加上“ 【步骤3中归一化...
  • 请教一下各位大佬,我现在要对一批图片进行二值化处理。但是问题在于,这一批图片里有的图片已经二值... 而且这些处理过的图片有的是黑底白字,有的是白底黑字,请问该如何将他们归一化到白底黑字/黑底白字上?谢谢!
  • 图像处理--归一化切割--(normalized cut)--Python实现

    万次阅读 多人点赞 2018-06-08 07:06:42
    归一化切割Normalized cut 是一种分群(cluster grouping)技术,在数据处理图像处理方面有很广的运用 用其实现图像分割的思路是,把一个图片看成一个图(graph), 然后计算权重图(weighted graph),然后分割成一些...
  • 目录直方图处理 ...fff的非归一化直方图定义为: h(rk)=nk,k=0,1,2,…,L−1(3.6)h(r_{k}) = n_{k}, \quad k = 0, 1, 2, \dots, L-1 \tag{3.6}h(rk​)=nk​,k=0,1,2,…,L−1(3.6) nk是fn_{k}是fnk​是f
  • python+opencv图像处理之七:直方图均衡 目录python+opencv图像处理之七:直方图均衡一、直方图均衡二、直方图绘制三、直方图均衡四、有限对比适应性直方图均衡 一、直方图均衡 直方图(英语:Histogram...
  • 3-python图像处理之NumPy

    万次阅读 2016-12-31 13:45:38
    NumPy(http://www.scipy.org/NumPy/) 是非常有名的Python 科学计算工具包,...解方程系统、向量乘积和归一化,这为图像变形、对变化进行建模、图像分类、 图像聚类等提供了基础。一。 图像数组表示: 将图片转化为
  • OpenCV-Python图像乘法运算cv2.multiply函数详解及像素值溢出归一化处理 OpenCV-Python图像位与运算bitwise_and函数详解 OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减法的差异对比 OpenCV-Python...
  • 在《OpenCV-Python图像乘法运算cv2.multiply函数详解及像素值溢出归一化处理》详细介绍了OpenCV-Python的乘法运算,本文将介绍图像乘法的逆运算图像除法。 对于两个图像矩阵A、B来说: OpenCV两个图像矩阵的除法...
  • 在训练计算机视觉模型时,往往需要先对图像进行处理,如对图像进行归一化、中心化和标准化处理,并将...本文将主要讲解使用Keras处理图像,包括图像归一化、中心化和标准化。学完本文后,您将学会:如何使用ImageDat...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 130
精华内容 52
关键字:

python图像归一化处理

python 订阅