PythonNumPy灰度图像的压缩原理讲解

PythonNumPy灰度图像的压缩原理讲解
灰度图像是对图像的颜⾊进⾏变换,如果要对图像进⾏压缩该怎么处理呢?
第七次全国人口普查结果公布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
3.0文明
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 = image<0
moreThen255 = image>255
image[lessThen0] = 0
image[moreThen255] = 255
return image
到此这篇关于Python NumPy灰度图像的压缩原理讲解的⽂章就介绍到这了,更多相关Python NumPy灰度图像的压缩内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

本文发布于:2024-09-22 20:21:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/105101.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   特征值   分解   压缩
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议