【灰度實驗】——圖像預處理(OpenCV)

目錄

1 灰度圖

2 最大值法

3 平均值法

4 加權均值法

5 兩個極端的灰度值


將彩色圖轉為灰度圖地過程稱為灰度化。

灰度圖是單通道圖像,灰度化本質就是將彩色圖的三通道合并成一個通道的過程。三種合并方法:最大值法,平均值法和加權均值法。

1 灰度圖

灰度圖像與黑白圖像不同,在計算機圖像領域中黑白圖像只有黑色與白色兩種顏色;但是,灰度圖像在黑色與白色之間還有許多級的顏色深度。灰度圖像經常是在單個電磁波頻譜如可見光內測量每個像素的亮度得到的,用于顯示的灰度圖像通常用每個采樣像素8位的非線性尺度來保存,這樣可以有256級灰度。

2 最大值法

從彩色圖像的R、G、B三個通道的值中選出最大的一個作為灰度圖像中對應位置的像素值。

例如某圖像中某像素點的像素值如上圖所示,那么在使用最大值法進行灰度化時,就會從該像素點對應的RGB通道中選取最大的像素值作為灰度值,所以在灰度圖中的對應位置上,該像素點的像素值就是121。

案例:

import cv2 as cv
import numpy as np
# 灰度化:最大值法:圖像大小不變,像素點個數不變,通道數由3變1,像素值會變,變成三個通道里的最大值
pig = cv.imread("../day02/images/pig.png")
# 獲取原圖大小,形狀
h,w,_ = pig.shape
# 創建一個和原圖一樣大小的圖像,放像素,拿這張圖就是灰度化后的圖
gray = np.zeros((h,w),dtype=np.uint8)
# 遍歷原圖,取出每個像素點,拿到三個通道里面的最大像素值,放進創建的圖像里面
# 遍歷行
for i in range(h):# 遍歷列for j in range(w):# 取出每個像素點 img[i,j] [200,200,99]# gray[i,j] = max(pig[i,j][0],pig[i,j][1],pig[i,j][2])gray[i,j]=max(pig[i,j])
# 顯示圖像,看看效果
cv.imshow("pig",pig)
cv.imshow("gray",gray)
cv.waitKey(0)
cv.destroyAllWindows()

輸出:

原圖灰度圖(最大值法)

3 平均值法

從彩色圖像的R、G、B三個通道取平均值作為灰度圖像中對應位置的像素值。

例如某圖像中某像素點的像素值如上圖所示,那么在使用平均值進行灰度化時,其計算結果就是(91+121+46)/3=86(對結果進行取整),所以在灰度圖中的對應位置上,該像素點的像素值就是86。

案例:

import cv2 as cv
import numpy as np
# 灰度化:最大值法:圖像大小不變,像素點個數不變,通道數由3變1,像素值會變,變成三個通道里的最大值
pig = cv.imread("../day02/images/pig.png")
# 獲取原圖大小,形狀
h,w,_ = pig.shape
# 創建一個和原圖一樣大小的圖像,放像素,拿這張圖就是灰度化后的圖
gray = np.zeros((h,w),dtype=np.uint8)
# 遍歷原圖,取出每個像素點,拿到三個通道里面的最大像素值,放進創建的圖像里面
# 遍歷行
for i in range(h):# 遍歷列for j in range(w):gray[i,j] = np.uint8(((int(pig[i,j,0])+int(pig[i,j,1])+int(pig[i,j,2]))//3)) # 使用int()是為了防止np.uint8溢出,最后再轉回去即可
# 取出每個像素點 img[i,j] [200,200,99]
# 顯示圖像
cv.imshow("pig",pig)
cv.imshow("gray",gray)
print(pig.shape,gray.shape)
cv.waitKey(0)
cv.destroyAllWindows()

輸出:

原圖灰度圖(平均值法)

4 加權均值法

彩色圖像每個通道乘以一定的權重在相加得到灰度圖像對應位置的像素值。

例如某圖像中某像素點的像素值如上圖所示,那么在使用加權平均值進行灰度化時,其計算結果就是10*0.299+121*0.587+46*0.114=79。所以在灰度圖中的對應位置上,該像素點的像素值就是79。

案例:

import cv2 as cv
import numpy as np
# 灰度化:最大值法:圖像大小不變,像素點個數不變,通道數由3變1,像素值會變,變成三個通道里的最大值
pig = cv.imread("../day02/images/pig.png")
# 獲取原圖大小,形狀
h,w,_ = pig.shape
# 定義三個通道上的權重
wr = 0.299
wg = 0.587
wb = 0.114
# 創建一個和原圖一樣大小的圖像,放像素,拿這張圖就是灰度化后的圖
gray = np.zeros((h,w),dtype=np.uint8)
# 遍歷原圖,取出每個像素點,拿到三個通道里面的最大像素值,放進創建的圖像里面
# 遍歷行
for i in range(h):# 遍歷列for j in range(w):# 取出每個像素點 img[i,j] [200,200,99]# R:0.299 G:0.587 B:0.114gray[i,j] = round(pig[i,j,0]*wb + pig[i,j,1]*wg + pig[i,j,2]*wr)
# 顯示圖像
cv.imshow("pig",pig)
cv.imshow("gray",gray)
print(pig.shape,gray.shape)
cv.waitKey(0)
cv.destroyAllWindows()

輸出:

原圖灰度圖(加權均值法)

5 兩個極端的灰度值

在灰度圖像中,“極端”的灰度值指的是亮度的兩個極端:最暗和最亮的值。

  • 最暗的灰度值:0。這代表完全黑色,在灰度圖像中沒有任何亮度。

  • 最亮的灰度值:255。這代表完全白色,在灰度圖像中具

灰度值為0(純黑)灰度值為255(純白)

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

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

相關文章

【linux驅動開發】編譯linux驅動程序報錯:ERROR: Kernel configuration is invalid.

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄一、報錯二、解決方法1.先編譯linux內核源碼2.再重新編譯驅動程序一、報錯 在編譯驅動程序過程中,經常碰到的一個小問題: make -C /home/lu…

Java面試寶典:MySQL中的鎖

InnoDB中鎖的類型非常多,總體上可以如下分類: 這些鎖都是做什么的?具體含義是什么?我們現在來一一學習。 1. 解決并發事務問題 我們已經知道事務并發執行時可能帶來的各種問題。最大的一個難點是:一方面要最大程度地利用數據庫的并發訪問能力,另一方面又要確保每個用戶…

設備識別最佳實踐:四維交叉驗證框架

設備識別最佳實踐:四維交叉驗證框架 1. MAC地址分析(40%權重) - 設備身份核驗 核心方法: # MAC地址標準化(OUI提取) mac"B4:2E:99:FB:9D:78" oui$(echo $mac | tr -d : | cut -c 1-6 | tr a-f A-…

《Java 程序設計》第 9 章 - 內部類、枚舉和注解

大家好,今天我們來學習《Java 程序設計》第 9 章的內容 —— 內部類、枚舉和注解。這三個知識點是 Java 中提升代碼靈活性和可讀性的重要工具,在實際開發中非常常用。接下來我們逐一展開講解,每個知識點都會配上可直接運行的代碼示例&#xf…

CTF Misc入門篇

在CTF比賽中,misc方向是必考的一個方向,其中,圖形隱寫是最最常見的類型。 先從Misc開始入門,一般會借助CTF SHOW解題平臺,解題,然后進行技巧總結。 目錄 圖片篇(基礎操作) misc1 misc2 misc3 misc4 …

Vulnhub 02 Breakout靶機

一、信息收集 我是在僅主機模式下掃描的。 以此去訪問端口。 80端口是上面的主頁,查看一下源代碼,發現了如下圖所示的注釋,翻譯過來是:別擔心,沒有人會來這里,安全地與你分享我的訪問權限,它是…

論文閱讀:2024 arxiv AutoDefense: Multi-Agent LLM Defense against Jailbreak Attacks

總目錄 大模型安全相關研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 AutoDefense: Multi-Agent LLM Defense against Jailbreak Attacks https://arxiv.org/pdf/2403.04783#page9.14 https://www.doubao.com/chat/14064782214316034 文章目錄…

Spring Boot 請求限流實戰:基于 IP 的高效防刷策略

前言 互聯網流量就像洪水猛獸,來得快去得也快。如果不給接口裝個“限速閥”,服務器瞬間被刷爆,宕機成真,根本不稀奇。沒有限流機制,系統就像沒有剎車的賽車,跑得太快反而翻車。為了保證服務穩定、響應迅速,保護后端資源不被惡意請求掏空,限流成必備武器。 本篇文章將…

機器學習第二課之線性回歸的實戰技巧

1 線性回歸簡介 1 線性回歸應用場景 線性回歸是一種用于分析自變量與連續型因變量之間線性關系的模型,其核心是通過擬合線性方程(y w_1x_1 w_2x_2 ... w_nx_n b)來預測因變量或解釋自變量的影響。由于其簡單、可解釋性強的特點,線性回歸…

【時時三省】(C語言基礎)指向指針數據的指針變量

山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省在了解了指針數組的基礎上,需要了解指向指針數據的指針變量,簡稱為指向指針的指針。怎樣定義一個指向指針數據的指針變量呢?下面定義一個指向指針數據的指針變量&#…

前端css 的固定布局,流式布局,彈性布局,自適應布局,響應式布局

1. 固定布局容器的寬高是固定的,單位一般是px,不會隨著屏幕大小變化2.流式布局(百分比布局/vw)vw: 視圖寬度的百分比,1vw代表視窗寬度的1% vh: 視圖高度的百分比,1vh代表視窗高度的1%特點: 寬度隨屏幕大小變化單位用%或vw 高度通常…

python學習DAY26打卡

DAY 26 函數專題1:函數定義與參數 內容: 函數的定義 變量作用域:局部變量和全局變量 函數的參數類型:位置參數、默認參數、不定參數 傳遞參數的手段:關鍵詞參數 傳遞參數的順序:同時出現三種參數類型時…

echarts圖表點擊legend報錯問題(折線圖)

原因是&#xff1a;echats 實例&#xff0c;不能夠用響應式變量去接收。<template><div class"attendance-chart"><div v-if"loading" class"loading">加載中...</div><div v-else-if"error" class"e…

Django模型開發:模型字段、元數據與繼承全方位講解

文章目錄一、模型字段類型詳解Django 與 MySQL 字段類型映射整數類型深度對比二、常用字段選項null 與 blank 的區別注釋與幫助文本默認值設置日期時間特殊選項選項列表&#xff08;choices&#xff09;三、模型元數據與方法模型 Meta 類模型管理器&#xff08;Manager&#xf…

墨者:SQL注入實戰-MySQL

1. 墨者學院&#xff1a;SQL注入實戰-MySQL&#x1f680; 2. 實訓重點目標? 目標一&#xff1a; 了解sqlmap的使用及其tamper插件的使用&#xff1b; 目標二&#xff1a; 了解base64編碼及解碼。 3. 解題方向&#x1f50d; 目標網站的id參數通過Base64編碼傳輸&#xff0c;…

Milvus 實戰全流程

&#x1f4da; 學習路徑總覽1. Milvus 基礎知識什么是向量數據庫&#xff1f;Milvus 的核心概念&#xff08;collection、field、index、partition、segment&#xff09;Milvus 和 Faiss、Annoy、HNSW 的區別2. 安裝與部署Docker 快速部署 Milvus&#xff08;推薦&#xff09;本…

Mysql數據庫基礎(入門)

目錄 一.認識Sql 1.什么是Sql 2.Sql的作用 3.Sql通用語法 4.Sql分類 二.數據庫的操作&#xff08;DDL&#xff09; 1.創建數據庫 2.顯示/使用數據庫 3.修改數據庫 4.刪除數據庫 三.常用數據類型 1.數值類型 2.字符串類型 3.日期類型 4.詳細的數據類型 四.表的操…

MySQL 鎖機制 15 連問 · 面試速答版

一、腦圖&#xff1a;鎖全景&#xff08;先記結構&#xff0c;再填細節&#xff09; 鎖層級 ├─ 表鎖 │ ├─ 意向鎖 IS / IX │ └─ 表鎖 READ / WRITE └─ 行鎖├─ 記錄鎖 Record├─ 間隙鎖 Gap└─ 臨鍵鎖 Next-Key二、15 問 15 答&#xff08;面試官一問一…

【Linux】發展歷程

很高興為您詳細介紹Linux操作系統的詳細發展歷程。Linux是一個自由和開放源代碼的操作系統內核&#xff0c;由林納斯托瓦茲&#xff08;Linus Torvalds&#xff09;于1991年首次發布。以下是Linux操作系統的主要發展里程碑&#xff1a;1. Linux 0.01 (1991)發布日期&#xff1a…

LNMP架構+wordpress實現動靜分離

WordPress簡稱WP&#xff0c;最初是一款博客系統&#xff0c;后逐步演化成一款免費的CMS&#xff08;內容管理系統/建站系統&#xff09;。 WordPress網站的適用場景&#xff1a; 博客 企業官網 作品集網站 電商平臺 線上教育系統 論壇和社群網站 甚至會員系統、訂閱內容…