通過特征值和特征向量實現的圖像壓縮和特征提取

? ? ? ? 前文,我們在學習人工智能的線性代數基礎的時候,就了解到,矩陣在人工智能中被廣泛使用,接下來我們就從大家非常常見的圖像開始,深度理解矩陣在人工智能中的應用。有關線性代數基礎的文章可以看的我CSDN:人工智能中的線性代數基礎詳解-CSDN博客

????????在圖像處理和機器學習中,特征值和特征向量(尤其是奇異值分解,SVD)被廣泛用于圖像壓縮和特征提取。接下來我們詳細講解圖像壓縮(通過SVD)和特征提取(通過PCA)的每一個步驟,包括數學原理、具體操作和示例。

一、圖像壓縮(通過奇異值分解,SVD)

????????圖像壓縮的目標是減少圖像數據的存儲空間,同時盡量保留圖像的主要信息。奇異值分解(SVD)是一種強大的工具,可以實現高效的圖像壓縮。SVD將A矩陣分解成三個其他矩陣的示意圖如下(分兩種情況):

1.數學原理

????????一張圖像可以表示為一個m×n 的矩陣 A,其中每個元素對應一個像素的灰度值或顏色值(注意這個不是彩色圖像)。SVD將圖像矩陣 A 分解為三個矩陣的乘積

其中:

  • U 是一個 m×m 的正交矩陣(即 U^{T}U=I),其列向量是 A 的左奇異向量,表示圖像的行空間的基。

  • Σ 是一個 m×n 的對角矩陣對角線上的元素是奇異值 σ1?,σ2?,…,σk?,且 σ1?≥σ2?≥?≥σk,通常按從大到小的順序排列?,表示每個基向量的重要性。

  • V 是一個 n×n 的正交矩陣(即 V^{T}V=I),其列向量是 A 的右奇異向量,表示圖像的列空間的基。

????????通過保留最大的幾個奇異值及其對應的奇異向量,可以近似重構圖像,從而實現壓縮。例如:假設我們有一個 1080×1920 的圖像矩陣 A。通過SVD分解后,我們發現前10個奇異值占據了大部分信息。因此,可以只保留前10個奇異值及其對應的奇異向量,將圖像壓縮為一個 1080×10 和 10×1920 的矩陣,大大減少了存儲空間。

2.圖像壓縮的具體步驟

步驟1:圖像矩陣化

????????將圖像數據表示為一個矩陣 A。對于灰度圖像,每個像素的灰度值構成矩陣的一個元素;對于彩色圖像,可以分別對RGB三個通道進行處理。

????????示例:假設有一張 5×5 的灰度圖像,其矩陣表示為:

步驟2:SVD分解

????????對矩陣 A 進行SVD分解,得到 U、Σ 和V^{T}。分解的過程參照下圖(網上下載的),其中的M為本文中的A。

???????

????????如何通過 SVD 分解得到奇異矩陣,以下是分解步驟:

? ? ? ? (1)計算 A^{T}AAA^{T}

????????A^{T}AAA^{T}是對稱矩陣,且它們的特征值和特征向量與 A 的奇異值和奇異向量有關。

? ? ? ? (2)求A^{T}AAA^{T}的特征值和特征向量

  • 計算A^{T}A的特征值和特征向量,得到矩陣 V 和奇異值的平方

  • 計算AA^{T}的特征值和特征向量,得到矩陣 U 和奇異值的平方

? ? ? ? (3)構造奇異值矩陣 Σ(注意是構造出來的,不是計算得到的)

  • 奇異值是A^{T}AAA^{T}的特征值的平方根。

  • 將奇異值按從大到小的順序排列在對角矩陣 Σ 中。

? ? ? ? (4)構造正交矩陣 U 和 V

  • V 的列是A^{T}A的特征向量。

  • U 的列是AA^{T}的特征向量。

? ? ? ? (5)驗證分解結果

  • 通過驗證分解的正確性。

? ? ? ? 以下是示例:假設分解結果為:

????????其中三個矩陣分別為:

步驟3:選擇重要的奇異值

????????保留前 k 個最大的奇異值及其對應的奇異向量,其中 k 遠小于 min(m,n)。這一步可以顯著減少數據量。

????????示例:假設我們選擇 k=2(原本有5個),則新的矩陣為:

????????其中:

? ? ? ? 注意:Uk的列數跟Σk的列數相同,Vk的行數跟Σk的行數相同

以下為補充內容:

????????在SVD分解后,確定保留的奇異值數量 k 是一個關鍵步驟,因為它直接影響到數據壓縮或降維的效果。以下是幾種常用的方法來確定 k 的值:

(1)累積能量百分比

????????奇異值的平方通常表示矩陣的能量分布。通過計算累積能量百分比,可以選擇一個 k,使得保留的奇異值能夠解釋大部分的能量(例如90%或95%)。

????????累積能量百分比的步驟:

? ? ? ? 1)計算所有奇異值的平方和

? ? ? ? 2)計算每個奇異值的累積能量百分比:

? ? ? ? 3)選擇 k,使得累積能量百分比達到一個閾值(如90%)。

????????示例: 假設奇異值為 σ1?,σ2?,…,σr?,當 k=10 時,累積能量百分比為92%,則可以選擇 k=10。

(2)奇異值分布曲線

????????通過繪制奇異值的分布曲線(通常是按降序排列的奇異值大小),觀察奇異值的衰減情況。通常,奇異值會快速下降,形成一個“肘部”(elbow point),選擇肘部位置作為 k 的值。

????????示例: 在奇異值分布曲線上,當 k=20 時,奇異值的下降速度明顯減緩,可以將 k 設為20。

(3)重構誤差

????????通過嘗試不同的 k 值,計算重構矩陣與原始矩陣之間的誤差(如均方誤差MSE或Frobenius范數)。選擇一個 k,使得重構誤差在可接受范圍內。

????????重構誤差的步驟:

? ? ? ? 1)對于不同的 k,計算重構矩陣

? ? ? ? 2)計算重構誤差:

? ? ? ? 3)選擇一個 k,使得MSE小于某個閾值。

(4)基于應用需求

在某些應用場景中,可以根據實際需求選擇 k。例如:

  • 在圖像壓縮中,選擇較小的 k 可以顯著減少存儲空間,但可能會丟失一些細節。

  • 在圖像去噪中,選擇較小的 k 可以去除噪聲,但可能會丟失一些高頻細節。

步驟4:重構圖像

????????通過 Ak? 近似重構圖像。雖然 Ak? 的維度比原始矩陣小,但可以通過以下公式重構近似圖像:

????????示例:重構后的圖像矩陣為:

????????其中\tilde{a}_{ij}是近似值。

步驟5:評估壓縮效果

????????通過比較原始圖像和重構圖像的差異(如均方誤差MSE或峰值信噪比PSNR),評估壓縮效果。

二、特征提取(通過主成分分析,PCA)

????????特征提取是從原始數據中提取有意義的特征,以減少數據維度并提高模型性能。主成分分析(PCA)是一種基于特征值和特征向量的特征提取方法。

????????假設我們有一組圖像數據,每張圖像有1000個像素。通過PCA,我們計算出協方差矩陣的特征值和特征向量,發現前50個特征值占據了大部分方差。因此,可以將每張圖像投影到這50個特征向量上,將圖像的維度從1000降為50,同時保留主要信息。

1.數學原理

????????PCA通過將數據投影到方差最大的方向上,提取數據的主要特征,從而實現降維。其核心是通過協方差矩陣的特征值和特征向量來確定主成分。??????

??PCA通過以下步驟實現特征提取:

步驟1:數據預處理(標準化數據

????????將數據標準化,使每個特征的均值為0,方差為1。對于圖像數據,可以將像素值歸一化到 [0, 1] 或 [-1, 1]。

????????示例:假設有一組圖像數據 X,其中每一行是一個圖像的像素向量。

步驟2:計算協方差矩陣

????????協方差矩陣 C 表示數據特征之間的相關性:

????????其中 n 是樣本數量。

步驟3:求解特征值和特征向量

????????計算協方差矩陣 C 的特征值 λi? 和特征向量 vi?。特征值表示每個方向上的方差大小,特征向量表示數據的主要方向

????????示例:假設特征值按大小排序為 λ1?≥λ2?≥?≥λd?,對應的特征向量為 v1?,v2?,…,vd?。

步驟4:選擇主成分

????????選擇前 k 個特征值最大的特征向量作為主成分,構成投影矩陣 Vk?。

????????示例:假設選擇前2個主成分,則投影矩陣為:

步驟5:數據投影

????????將原始數據 X 投影到主成分空間,得到降維后的數據 Y:

????????示例:假設原始數據 X 是 m×d 的矩陣,投影后得到 m×k 的矩陣 Y。

步驟6:評估特征提取效果

????????通過比較降維前后的數據,評估特征提取的效果。例如,可以通過重構誤差或分類任務的性能來評估。

總結

  • 圖像壓縮:通過SVD分解圖像矩陣,保留最大的幾個奇異值及其對應的奇異向量,重構圖像以實現壓縮。

    • 將圖像矩陣分解為

    • 保留前 k 個奇異值及其對應的奇異向量。

    • 通過近似重構圖像。

    • 評估壓縮效果。

  • 特征提取:通過PCA計算數據的協方差矩陣的特征值和特征向量,選擇最重要的特征向量作為新的特征空間,實現降維。

    • 標準化數據。

    • 計算協方差矩陣并求解特征值和特征向量。

    • 選擇前 k 個主成分。

    • 將數據投影到主成分空間。

    • 評估特征提取效果。

這兩種方法都利用了特征值和特征向量的性質,分別在圖像壓縮和特征提取中發揮了重要作用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897926.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897926.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897926.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

藍橋杯2023年第十四屆省賽真題-整數刪除 暴力-->鏈表+小根堆

題目來自DOTCPP: 思路: ①每次找到數列中的最小值下標,然后用狀態數組st標記它,相當與刪除它,之后就不會訪問它。 ②對最小值下標左邊和右邊判斷一下,看有沒有數字,如果有就把最小值加到兩邊第…

springboot438-基于SpringBoot的數字化教學資源管理系統(源碼+數據庫+純前后端分離+部署講解等)

💕💕作者: 愛笑學姐 💕💕個人簡介:十年Java,Python美女程序員一枚,精通計算機專業前后端各類框架。 💕💕各類成品Java畢設 。javaweb,ssm&#xf…

藍橋杯刷題——第十五屆藍橋杯大賽軟件賽省賽C/C++ 大學 B 組

一、0握手問題 - 藍橋云課 算法代碼&#xff1a; #include <iostream> using namespace std; int main() {int sum0;for(int i49;i>7;i--)sumi;cout<<sum<<endl;return 0; } 直接暴力&#xff0c;題意很清晰&#xff0c;累加即可。 二、0小球反彈 - 藍…

跨境衛士跟vps哪個更好用?跨境衛士為賣家提供固定IP環境

跨境衛士是通過為賣家提供固定的環境 i p來隔離本地電腦環境&#xff0c;為賣家創造一個真實獨立的物理環境&#xff0c;讓買家再任意電腦&#xff0c;任意網絡下都能夠安全的管理賬號。跨境衛士和紫鳥原理一樣&#xff0c;是通過為賣家提供固定的環境 i p來隔離本地電腦環境&a…

coding ability 展開第四幕(滑動指針——鞏固篇)超詳細!!!!

文章目錄 前言水果成籃思路 找到字符串中所有字母異位詞思路 串聯所有單詞的子串思路 最小覆蓋子串思路 總結 前言 本專欄上一篇博客&#xff0c;帶著大家從認識滑動窗口到慢慢熟悉 相信大家對滑動窗口已經有了大概的認識 其實主要就是抓住——一段連續的區間 今天來學習一些滑…

圖解AUTOSAR_CP_BSW_General

AUTOSAR BSW通用規范詳解 AUTOSAR基礎軟件模塊通用規范與架構解析 目錄 1. 概述 1.1. AUTOSAR BSW通用規范簡介1.2. 文檔目的與范圍2. BSW模塊文件結構 2.1. 標準文件組織2.2. 命名規范3. BSW模塊接口 3.1. 接口類型3.2. 模塊API3.3. 配置參數4. BSW通用架構 4.1. 分層架構4.2.…

如何在Futter開發中做性能優化?

目錄 1. 避免不必要的Widget重建 問題&#xff1a;頻繁調用setState()導致整個Widget樹重建。 優化策略&#xff1a; 2. 高效處理長列表 問題&#xff1a;ListView一次性加載所有子項導致內存暴漲。 優化策略&#xff1a; 3. 圖片加載優化 問題&#xff1a;加載高分辨率…

組件通信框架ARouter原理剖析

組件通信框架ARouter原理剖析 一、前言 隨著Android應用規模的不斷擴大&#xff0c;模塊化和組件化開發變得越來越重要。ARouter作為一個用于幫助Android應用進行組件化改造的框架&#xff0c;提供了一套完整的路由解決方案。本文將深入分析ARouter的核心原理和實現機制。 二…

Netty啟動源碼NioEventLoop剖析accept剖析read剖析write剖析

學習鏈接 NIO&Netty - 專欄 Netty核心技術十–Netty 核心源碼剖析Netty核心技術九–TCP 粘包和拆包及解決方案Netty核心技術七–Google ProtobufNetty核心技術六–Netty核心模塊組件Netty核心技術五–Netty高性能架構設計 聊聊Netty那些事兒 - 專欄 一文搞懂Netty發送數…

2024年12月CCF-GESP編程能力等級認證C++編程一級真題解析

一級真題的難度: ? CCF-GESP編程能力等級認證C++編程一級真題的難度適中?。這些真題主要考察的是C++編程的基礎知識、基本語法以及簡單的算法邏輯。從搜索結果中可以看到,真題內容包括了選擇題、編程題等題型,涉及的內容如C++表達式的計算、基本輸入輸出語句的理解…

73.HarmonyOS NEXT PicturePreviewImage組件深度剖析:高級功能擴展與性能優化策略(三)

溫馨提示&#xff1a;本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦&#xff01; HarmonyOS NEXT PicturePreviewImage組件深度剖析&#xff1a;高級功能擴展與性能優化策略(三) 文章目錄 HarmonyOS NEXT PicturePreviewImage組件…

Spark 中創建 DataFrame 的2種方式對比

spark.createDataFrame(data).toDF("name", "age") 和 spark.createDataFrame(spark.sparkContext.parallelize(data), schema) 創建df的方式有什么區別&#xff1f; 在 Spark 中&#xff0c;創建 DataFrame 的方式有多種&#xff0c;其中兩種常見的方式…

六十天前端強化訓練之第十七天React Hooks 入門:useState 深度解析

歡迎來到編程星辰海的博客講解 看完可以給一個免費的三連嗎&#xff0c;謝謝大佬&#xff01; 目錄 一、知識講解 1. Hooks 是什么&#xff1f; 2. useState 的作用 3. 基本語法解析 4. 工作原理 5. 參數詳解 a) 初始值設置方式 b) 更新函數特性 6. 注意事項 7. 類組…

IEC61850標準下MMS 緩存報告控制塊 ResvTms詳細解析

IEC61850標準是電力系統自動化領域唯一的全球通用標準。IEC61850通過標準的實現&#xff0c;使得智能變電站的工程實施變得規范、統一和透明&#xff0c;這大大提高了變電站自動化系統的技術水平和安全穩定運行水平。 在 IEC61850 標準體系中&#xff0c;ResvTms&#xff08;r…

【JVM】GC 常見問題

GC 常見問題 哪些情況新生代會進入老年代 新生代 GC 后幸存區&#xff08;survivor&#xff09;不夠存放存活下來的對象&#xff0c;會通過內存擔保機制晉升到老年代。大對象直接進入老年代&#xff0c;因為大對象再新生代之間來會復制會影響 GC 性能。由 -XX:PretenureSizeT…

Audacity 技術淺析(一)

Audacity 是一個開源的音頻編輯工具&#xff0c;雖然它主要用于音頻編輯和處理&#xff0c;但也可以通過一些插件和功能實現基本的音頻生成功能。 1. Audacity 的音頻生成基礎 Audacity 的音頻生成主要依賴于其內置的生成器、效果器以及 Nyquist 編程語言。這些工具允許用戶創…

G-Star 公益行起航,揮動開源技術點亮公益!

公益組織&#xff0c;一直是社會溫暖的傳遞者&#xff0c;但在數字化浪潮中&#xff0c;也面臨著諸多比大眾想象中復雜的挑戰&#xff1a;項目管理如何更高效&#xff1f;志愿者管理又該如何創新&#xff1f;宣傳推廣怎么才能更有影響力&#xff1f;內部管理和技術支持又該如何…

MongoDB 數據導出與導入實戰指南(附完整命令)

1. 場景說明 在 MongoDB 運維中&#xff0c;數據備份與恢復是核心操作。本文使用 mongodump 和 mongorestore 工具&#xff0c;演示如何通過命令行導出和導入數據&#xff0c;解決副本集連接、路徑指定等關鍵問題。 2. 數據導出&#xff08;mongodump&#xff09; 2.1 導出命…

京東 h5st 5.1 分析

聲明: 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 逆向分析 學習了2天某物&#xff0c;f…

CentOS 系統安裝 docker 以及常用插件

博主用的的是WindTerm軟件鏈接的服務器&#xff0c;因為好用 1.鏈接上服務器登入后&#xff0c;在/root/目錄下 2.執行以下命令安裝docker sudo yum install -y yum-utilssudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.reposudo…