數字圖像處理(三:圖像如果當作矩陣,那加減乘除處理了矩陣,那圖像咋變):從LED冬奧會、奧運會及春晚等等大屏,到手機小屏,快來挖一挖里面都有什么

數字圖像處理(三)

  • 一、(準備工作:咋玩,用什么玩具)圖像以矩陣形式存儲,那矩陣一變、圖像立刻跟著變?
    • 1. Python + Jupyter Notebook/Lab + 庫 (NumPy, OpenCV, Matplotlib, scikit-image)
    • 2. MATLAB + Image Processing Toolbox
    • 3. JavaScript + HTML5 Canvas + 瀏覽器
    • 4. 專業的圖像處理軟件 (帶腳本/插件功能)
  • 二、(準備工作:玩具咋買咋裝)圖像以矩陣形式存儲,那矩陣一變、圖像立刻跟著變?

一、(準備工作:咋玩,用什么玩具)圖像以矩陣形式存儲,那矩陣一變、圖像立刻跟著變?

你好! 從LED冬奧會、奧運會及春晚等等大屏,到手機小屏,快來挖一挖里面都有什么。

為了不拘束各位看官,把各種玩法給大家列出來

1. Python + Jupyter Notebook/Lab + 庫 (NumPy, OpenCV, Matplotlib, scikit-image)

  • 完全控制矩陣: 你直接操作的就是圖像對應的NumPy數組 (np.array)。每個像素值(R, G, B 或灰度)就是一個矩陣元素。
  • 實時可視化: 在Jupyter Notebook中,一行代碼修改矩陣,下一行代碼就能用matplotlib.imshow()或cv2.imshow()顯示結果圖像,變化立竿見影。
  • 強大的庫: OpenCV (cv2) 和 scikit-image (skimage) 提供了幾乎所有你能想到的圖像處理操作(本質都是矩陣運算),并且你能看到它們內部是如何操作矩陣的(或者你自己用NumPy實現)。
  • 交互性 (可選): 結合ipywidgets庫,可以創建滑塊、按鈕等交互控件,動態調整矩陣參數(比如卷積核系數、閾值、亮度增益),圖像實時更新,效果極其直觀。
    • 你可以實現翻轉(np.flip)、旋轉(np.rot90)、裁剪(切片[:, :])、顏色空間轉換(cv2.cvtColor)、卷積濾波(cv2.filter2D 或手動實現)、閾值分割(np.where)等等。每一步操作后顯示圖像,變化過程清晰可見。

比如

import cv2
import numpy as np
from matplotlib import pyplot as plt# 1. 讀取圖像為NumPy矩陣 (BGR格式)
image = cv2.imread('your_image.jpg') # 矩陣 shape: (height, width, 3)# 2. 顯示原始圖像
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) # OpenCV是BGR, matplotlib用RGB
plt.title('Original Image (Matrix)')# 3. 直接操作矩陣!例如,將紅色通道(R)置零
modified_image = image.copy() # 避免修改原圖
modified_image[:, :, 2] = 0 # 第3個維度索引2是OpenCV BGR中的R通道# 4. 顯示修改后的圖像
plt.subplot(1, 2, 2)
plt.imshow(cv2.cvtColor(modified_image, cv2.COLOR_BGR2RGB))
plt.title('Matrix Changed (Red Channel Zeroed)')
plt.show()

2. MATLAB + Image Processing Toolbox

  • 優點: 如果你在學校或研究所有MATLAB可用,這也是一個非常好的選擇。

    • 矩陣是核心: MATLAB本身就是為矩陣運算設計的語言。圖像直接表示為矩陣(或高維數組)。
    • 強大的工具箱: Image Processing Toolbox 提供了極其豐富的圖像處理函數和優秀的可視化工具 (imshow, imtool)。
    • 交互式工具: 像 imtool 允許你查看像素值、測量距離、調整窗寬窗位等,直接關聯底層矩陣。
    • 豐富的文檔和示例: 學習資源多。
  • 缺點:

    • 商業軟件,需要許可證。
    • 不如Python生態開放和通用。

3. JavaScript + HTML5 Canvas + 瀏覽器

  • 優點: 如果你想創建一個網頁應用或交互式演示來展示圖像處理效果,這是最佳選擇。庫如p5.js可以簡化Canvas操作。
    • 高度交互性和可視化: 非常適合構建在線的、交互式的圖像處理演示。用戶可以在網頁上直接操作,效果實時反饋。
    • Canvas API: 可以通過ImageData對象直接訪問和操作像素數據(就是一個巨大的Uint8ClampedArray,本質是RGBA一維數組,需要轉換處理)。
  • 缺點:
    • 直接操作像素數組相對于NumPy操作多維矩陣來說,有時會更底層、更繁瑣一些(需要自己處理索引計算)。
    • 對于復雜的數學運算和大型矩陣操作,性能可能不如Python或C++。
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const img = new Image();
img.onload = function() {// 繪制原圖ctx.drawImage(img, 0, 0);// 獲取圖像矩陣數據 (RGBA)const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);const data = imageData.data; // Uint8ClampedArray [R, G, B, A, R, G, B, A, ...]// 操作矩陣/像素數據:例如,反轉顏色for (let i = 0; i < data.length; i += 4) {data[i] = 255 - data[i];     // Reddata[i + 1] = 255 - data[i + 1]; // Greendata[i + 2] = 255 - data[i + 2]; // Blue// Alpha (data[i+3]) 保持不變}// 將修改后的矩陣數據放回Canvas,圖像立刻變化!ctx.putImageData(imageData, 0, 0);
};
img.src = 'your_image.jpg';

4. 專業的圖像處理軟件 (帶腳本/插件功能)

  • 例如: GIMP (支持Python-Fu, Script-Fu), ImageJ/Fiji (Java宏, 腳本), Adobe Photoshop (JS腳本, 動作)
  • 優點
    • 提供直觀的GUI界面進行常規操作。
    • 腳本/宏允許你編寫代碼自動化操作(本質上也是在操作像素矩陣)。
  • 缺點
    • 直接訪問和可視化底層矩陣不如Python/NumPy或MATLAB方便和透明。
    • 腳本語言可能不如通用編程語言靈活。

二、(準備工作:玩具咋買咋裝)圖像以矩陣形式存儲,那矩陣一變、圖像立刻跟著變?

我是個懶蛋,懶得翻,所以就第一種了

  • 安裝Anaconda(包含Python和Jupyter Notebook等科學計算庫):https://www.anaconda.com/products/individual
  • 安裝OpenCV和Matplotlib(如果Anaconda沒有自帶):
    在Anaconda Prompt中運行
    pip install opencv-python matplotlib scikit-image
    or
    pip install opencv-python matplotlib numpy scikit-image ipywidgets pillow
    

下次開始玩玩具吧,這次先撂了

如果想了解一些成像系統、圖像、人眼、顏色等等的小知識,快去看看視頻吧 :

  • GodWarrior、抖音號:59412983611
  • B站:宇宙第一AIYWM
    • 認準一個頭像,保你不迷路:
      在這里插入圖片描述

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

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

相關文章

docker-desktop啟動失敗

報錯提示deploying WSL2 distributions ensuring main distro is deployed: checking if main distro is up to date: checking main distro bootstrap version: getting main distro bootstrap version: open \\wsl$\docker-desktop\etc\wsl_bootstrap_version: The network n…

基于FastMCP創建MCP服務器的小白級教程

以下是基于windows 11操作系統環境的開發步驟。 1、python環境搭建 訪問官網&#xff1a;https://www.python.org/。下載相應的版本&#xff08;如&#xff1a;3.13.5&#xff09;&#xff0c;然后安裝。 安裝完成之后&#xff0c;使用命令行工具輸入python&#xff0c;顯示…

網絡協議與層次對應表

網絡協議與層次對應表&#xff08;OSI & TCP/IP模型&#xff09;OSI七層模型TCP/IP四層模型協議/技術核心功能與應用?應用層?應用層HTTP/HTTPS網頁傳輸協議&#xff08;HTTP&#xff09;及其加密版&#xff08;HTTPS&#xff09;FTP文件上傳/下載協議SMTP/POP3/IMAPSMTP發…

android studio(NewsApiDemo)100%kotlin

api接口地址&#xff1a;https://newsapi.org/docs/get-started 項目成品地址&#xff1a;https://github.com/RushHan824/NewsApiDemo 項目效果展示&#xff1a; MVVM數據流 UML圖 本系列文章將帶你從零實現一個新聞列表App&#xff0c;適合零基礎讀者。一步步來&#xff0c…

面試高頻題 力扣 417. 太平洋大西洋水流問題 洪水灌溉(FloodFill) 深度優先遍歷(dfs) 暴力搜索 C++解題思路 每日一題

目錄零、題目描述&#xff1a;用人話再講一遍一、為什么這道題值得咱們學習&#xff1f;二、思路探索常規思路&#xff1a;逐個檢查每個格子&#xff08;會超時&#xff01;??&#xff09;三、正難則反&#xff1a;反向思維的巧妙應用 &#x1f504;&#xff08;思考時間&…

博物館智慧導覽系統AR交互與自動感應技術:從虛實融合到智能講解的技術實踐

本文面向博物館信息化開發者、智慧場館系統技術建設師及AR 設計工程師,從AR 交互與自動感應技術的邏輯出發,拆解AR虛實融合技術與智能講解自動感應技術的原理&#xff0c;為相關開發者實踐提供可復用的技術路徑。如需獲取博物館智慧導覽系統解決方案請前往文章最下方獲取&#…

高效編程革命:DeepSeek V3多語言支持與性能優化實戰

文章目錄 如何利用DeepSeek V3編寫高效程序代碼:從原理到實踐 引言 一、DeepSeek V3核心能力解析 1.1 模型架構與優勢 1.2 與傳統編程輔助工具對比 二、高效代碼編寫實踐指南 2.1 精準提示工程(Prompt Engineering) 基礎提示模板 高級提示技巧 2.2 生產級代碼生成案例 示例:…

OkHttp 與 JSON 解析庫完美結合:Moshi/Jackson/Gson 實戰指南

前言在現代 Android 開發中&#xff0c;網絡請求與 JSON 數據處理是密不可分的。OkHttp 作為強大的 HTTP 客戶端&#xff0c;與 JSON 解析庫&#xff08;Moshi/Jackson/Gson&#xff09;的結合使用&#xff0c;可以極大簡化網絡請求與數據解析的流程。本文將詳細介紹如何將 OkH…

An error occurred at line: 1 in the generated java file問題處理及tomcat指定對應的jdk運行

一、背景 tomcat7啟動后&#xff0c;加載jsp頁面報錯&#xff0c;提示無法將jsp編譯為class文件&#xff0c;主要報錯信息如下&#xff1a; An error occurred at line: 1 in the generated java file 最后確認該錯誤原因為&#xff1a;tomcat7不支持jdk1.8版本 機器上已配…

深入剖析大模型在文本生成式 AI 產品架構中的核心地位

一、大模型的崛起與概念解析 在人工智能技術飛速迭代的當下&#xff0c;大模型已成為驅動行業發展的核心引擎。從技術定義來看&#xff0c;大模型&#xff08;Large Model&#xff09; 是指基于深度學習架構、具備海量參數規模&#xff08;通常數十億至數萬億級別&#xff09;&…

Vue Scoped樣式:當動態元素成為“無家可歸“的孤兒

引言&#xff1a;一場CSS的"身份危機"想象一下&#xff1a;你精心設計了一個Vue組件&#xff0c;為每個元素添加了漂亮的樣式。你滿意地添加了scoped屬性&#xff0c;確保樣式不會"越獄"影響其他組件。然后你動態添加了一些新元素&#xff0c;卻發現它們完…

vmware分配了ubuntu空間但是ubuntu沒有獲取

一開始我看vmware中的ubuntu磁盤空間只有200g不夠用&#xff0c;我在vmware給Ubuntu分了300G的磁盤空間&#xff0c;但是ubuntu還是只有之前的200g 如圖在ubuntu查看后來發現&#xff0c;在磁盤軟件里面需要自己分配磁盤空間大小拓展后就可以了

[MarkdownGithub] 使用塊引用高亮顯示“注意“和“警告“和其他注意方式的選項

參考來源: https://github.com/orgs/community/discussions/16925 Alerts are an extension of Markdown used to emphasize critical information. On GitHub, they are displayed with distinctive colors and icons to indicate the importance of the content. 提示框是 Ma…

mac測試ollama llamaindex

LlamaIndexs 將大語言模型和外部數據連接在一起的工具。大模型prompt有一個長度限制&#xff0c;當外部知識的內容超過這個長度&#xff0c;無法同時將有效信息傳遞給大模型&#xff0c;因此就誕生了 LlamaIndex。 具體操作就是通過多輪對話的方式不斷提純外部數據&#xff0c…

數據結構:字符串:大小寫轉換(changing case of a string)

目錄 第一性問題&#xff1a;什么是“大小寫”&#xff1f; 逐步構造代碼&#xff1a;全部轉為大寫 我們現在用 第一性原理 的方式&#xff0c;從字符串與字符的本質出發&#xff0c;一步步推導出如何在 C 語言中將字符串中的字母變成全部大寫或全部小寫。 第一性問題&…

閑庭信步使用圖像驗證平臺加速FPGA的開發:第三十二課——車牌識別的FPGA實現(4)車牌字符的分割定位

&#xff08;本系列只需要modelsim即可完成數字圖像的處理&#xff0c;每個工程都搭建了全自動化的仿真環境&#xff0c;只需要雙擊top_tb.bat文件就可以完成整個的仿真&#xff0c;大大降低了初學者的門檻&#xff01;&#xff01;&#xff01;&#xff01;如需要該系列的工程…

03_java_運行機制

1. java執行流程2. 什么是編譯3. 什么是運行

鴻蒙卡片開發保姆級教程

卡片 1. 卡片概念 什么是卡片&#xff1f;卡片用來顯示或者提示一些基本信息或者進行一些基本操作。注意不能做重邏輯&#xff0c;所有重要邏輯全部交給應用如果是元服務如何喚醒&#xff1f;因為元服務不提供桌面應用圖標&#xff0c;我們可以通過用戶手動的方式在桌面上添加一…

反向傳播及優化器

反向傳播&#xff08;Backpropagation&#xff09;反向傳播是計算梯度的算法&#xff0c;核心作用是高效求解 “損失函數對模型所有參數的偏導數”&#xff08;即梯度&#xff09;。沒有反向傳播&#xff0c;深度學習的大規模訓練幾乎不可能實現。 整個過程像 “從終點回溯到起…

【機器學習深度學習】生成式模型的評估與驗證

目錄 前言 1. 主觀評估&#xff1a;以人為本的質量判斷 1.1 什么是主觀評估&#xff1f; 1.2 主觀評估的核心流程 1.3 主觀評估的優缺點 2. 客觀評估&#xff1a;量化的性能衡量 2.1 什么是客觀評估&#xff1f; 2.2 常見的客觀評估指標 文本生成 圖像生成 多模態生…