• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python NumPy灰度图像的压缩原理讲解

    灰度图像是对图像的颜色进行变换,如果要对图像进行压缩该怎么处理呢?

    1、矩阵运算中有一个概念叫做奇异值和特征值。

    设A为n阶矩阵,若存在常数λ及n维非零向量x,使得Ax=λx,则称λ是矩阵A的特征值,x是A属于特征值λ的特征向量。

    一个矩阵的一组特征向量是一组正交向量。

    2、即特征向量被施以线性变换 A 只会使向量伸长或缩短而其方向不被改变。

    特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。

    假如A是m * n阶矩阵,q=min(m,n),A*A的q个非负特征值的算术平方根叫作A的奇异值。

    特征值分解可以方便的提取矩阵的特征,但是前提是这个矩阵是一个方阵。如果是非方阵的情况下,就需要用到奇异值分解了。先看下奇异值分解的定义:

    A=UΣVT

    其中A是目标要分解的m * n的矩阵,U是一个 m * m的方阵,Σ 是一个m * n 的矩阵,其非对角线上的元素都是0。VTV^TVT是V的转置,也是一个n * n的矩阵。

    奇异值跟特征值类似,在矩阵Σ中也是从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵。r是一个远小于m、n的数,这样就可以进行压缩矩阵。

    通过奇异值分解,我们可以通过更加少量的数据来近似替代原矩阵。

    要想使用奇异值分解svd可以直接调用linalg.svd 如下所示:

    U, s, Vt = linalg.svd(img_gray)

    其中U是一个m * m矩阵,Vt是一个n * n矩阵。

    在上述的图像中,U是一个(80, 80)的矩阵,而Vt是一个(170, 170) 的矩阵。而s是一个80的数组,s包含了img中的奇异值。

    实例代码扩展:

    import numpy as np
    
    import matplotlib.pyplot as plt
    
    from PIL import Image
    from scipy import misc
    def fix_contrast(image):
    minimumColor = np.amin(image)
    maximumColor = np.amax(image)
    
    #avg = (minimumColor - maximumColor)/2 first attempt
    
    avg = np.mean(image) #second attempt
    colorDownMatrix = image  avg # also tried
    colorUpMatrix = image > avg
    
    #also tried: colorUpMatrix = image > avg * 1.2
    # and : colorDownMatrix = image  avg* 0.3
    image = image - minimumColor*colorDownMatrix
    image = image + maximumColor*colorUpMatrix
    lessThen0 = image0
    moreThen255 = image>255
    image[lessThen0] = 0
    image[moreThen255] = 255
    return image

    到此这篇关于Python NumPy灰度图像的压缩原理讲解的文章就介绍到这了,更多相关Python NumPy灰度图像的压缩内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python多进程共享numpy 数组的方法
    • python中sqllite插入numpy数组到数据库的实现方法
    • python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
    • python numpy中multiply与*及matul 的区别说明
    • 浅谈Python numpy创建空数组的问题
    • Python NumPy中diag函数的使用说明
    • Python机器学习三大件之一numpy
    • python利用numpy存取文件案例教程
    上一篇:Python内置数据结构列表与元组示例详解
    下一篇:pandas求平均数和中位数的方法实例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python NumPy灰度图像的压缩原理讲解 Python,NumPy,灰度,图像,的,