Python NumPy灰度圖像的壓縮原理講解
灰度圖像是對(duì)圖像的顏色進(jìn)行變換,如果要對(duì)圖像進(jìn)行壓縮該怎么處理呢?
1、矩陣運(yùn)算中有一個(gè)概念叫做奇異值和特征值。
設(shè)A為n階矩陣,若存在常數(shù)λ及n維非零向量x,使得Ax=λx,則稱λ是矩陣A的特征值,x是A屬于特征值λ的特征向量。
一個(gè)矩陣的一組特征向量是一組正交向量。
2、即特征向量被施以線性變換 A 只會(huì)使向量伸長(zhǎng)或縮短而其方向不被改變。
特征分解(Eigendecomposition),又稱譜分解(Spectral decomposition)是將矩陣分解為由其特征值和特征向量表示的矩陣之積的方法。
假如A是m * n階矩陣,q=min(m,n),A*A的q個(gè)非負(fù)特征值的算術(shù)平方根叫作A的奇異值。
特征值分解可以方便的提取矩陣的特征,但是前提是這個(gè)矩陣是一個(gè)方陣。如果是非方陣的情況下,就需要用到奇異值分解了。先看下奇異值分解的定義:
A=UΣVT
其中A是目標(biāo)要分解的m * n的矩陣,U是一個(gè) m * m的方陣,Σ 是一個(gè)m * n 的矩陣,其非對(duì)角線上的元素都是0。VTV^TVT是V的轉(zhuǎn)置,也是一個(gè)n * n的矩陣。
奇異值跟特征值類似,在矩陣Σ中也是從大到小排列,而且奇異值的減少特別的快,在很多情況下,前10%甚至1%的奇異值的和就占了全部的奇異值之和的99%以上了。也就是說,我們也可以用前r大的奇異值來近似描述矩陣。r是一個(gè)遠(yuǎn)小于m、n的數(shù),這樣就可以進(jìn)行壓縮矩陣。
通過奇異值分解,我們可以通過更加少量的數(shù)據(jù)來近似替代原矩陣。
要想使用奇異值分解svd可以直接調(diào)用linalg.svd 如下所示:
U, s, Vt = linalg.svd(img_gray)
其中U是一個(gè)m * m矩陣,Vt是一個(gè)n * n矩陣。
在上述的圖像中,U是一個(gè)(80, 80)的矩陣,而Vt是一個(gè)(170, 170) 的矩陣。而s是一個(gè)80的數(shù)組,s包含了img中的奇異值。
實(shí)例代碼擴(kuò)展:
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 = image<0 moreThen255 = image>255 image[lessThen0] = 0 image[moreThen255] = 255 return image
到此這篇關(guān)于Python NumPy灰度圖像的壓縮原理講解的文章就介紹到這了,更多相關(guān)Python NumPy灰度圖像的壓縮內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python返回?cái)?shù)組/List長(zhǎng)度的實(shí)例
今天小編就為大家分享一篇Python返回?cái)?shù)組/List長(zhǎng)度的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06Python接口自動(dòng)化淺析pymysql數(shù)據(jù)庫操作流程
本文主要介紹pymysql安裝、操作流程、語法基礎(chǔ)及封裝操作數(shù)據(jù)庫類,需要的朋友可以參考下,希望能對(duì)大家有所幫助,每日提升一點(diǎn)點(diǎn),歡迎大家多多交流討論2021-08-08python實(shí)現(xiàn)txt文件格式轉(zhuǎn)換為arff格式
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)txt文件格式轉(zhuǎn)換為arff格式的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05在Python中Dataframe通過print輸出多行時(shí)顯示省略號(hào)的實(shí)例
今天小編就為大家分享一篇在Python中Dataframe通過print輸出多行時(shí)顯示省略號(hào)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python+PyQt5實(shí)現(xiàn)自制pdf工具箱
這篇文章主要為大家詳細(xì)介紹了Python如何利用PyQt5自制pdf工具箱,可以實(shí)現(xiàn)合并拆分和刪除指定pdf頁面,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12Python編程OpenCV和Numpy圖像處理庫實(shí)現(xiàn)圖片去水印
這篇文章主要介紹了Python編程中如何實(shí)現(xiàn)圖片去水印本文采用了OpenCV和Numpy的圖像處理的方法來實(shí)現(xiàn),文中附含詳細(xì)示例代碼,有需要的朋友可以借鑒參考下2021-09-09