圖像上的 OpenCV 算術(shù)運(yùn)算
OpenCV 簡介
圖像可以進(jìn)行算術(shù)運(yùn)算,例如加法、減法和按位運(yùn)算(AND、OR、NOT、XOR)。這些操作可以幫助改善輸入圖像的屬性。
圖像算法對(duì)于分析輸入圖像的屬性是必要的,可以將操作后的圖像用作增強(qiáng)的輸入圖像,并且可以對(duì)圖像應(yīng)用更多操作,以進(jìn)行閾值化、膨脹等。
圖像算術(shù)是將一幅或多幅圖像應(yīng)用于標(biāo)準(zhǔn)算術(shù)運(yùn)算或邏輯運(yùn)算符之一。運(yùn)算符是逐個(gè)像素應(yīng)用的,因此輸出圖像中像素的值僅由輸入圖像中相應(yīng)像素的值決定。
因此,圖像通常必須具有相同的大小。當(dāng)向圖像添加恒定偏移量時(shí),輸入圖像之一可能是恒定值。
雖然圖像算法是圖像處理的最基本形式,但它有很多應(yīng)用。算術(shù)運(yùn)算符的一個(gè)顯著優(yōu)勢(shì)是該過程簡單明了,因此速度很快。
添加圖像
在其最基本的形式中,該運(yùn)算符將兩個(gè)相同大小的圖像作為輸入,并輸出與前兩個(gè)相同大小的第三個(gè)圖像,每個(gè)像素值是兩個(gè)輸入圖像中每個(gè)圖像中對(duì)應(yīng)像素值的總和. 更高級(jí)的版本允許在一次操作中組合多個(gè)圖像。
運(yùn)算符的一個(gè)常見變體只是允許向每個(gè)像素添加一個(gè)指定的常數(shù)。使用函數(shù) cv2.a(chǎn)dd(),我們可以添加兩個(gè)圖像。這直接將兩個(gè)圖像中的圖像像素相加。
Syntax: cv2.a(chǎn)dd(image1, image2)
但是,添加像素并不是一個(gè)理想的情況。因此,我們使用 cv2.a(chǎn)ddweighted()。請(qǐng)記住,兩個(gè)輸入圖像的形狀和顏色通道必須相同。
Syntax: cv2.a(chǎn)dd Weighted(image1, weight1, Image2, weight2, gammaValue)
參數(shù):
image1:第一個(gè)圖像數(shù)組輸入
weight 1:輸入圖像中第一個(gè)用于最終圖像的圖像元素的權(quán)重。
image2:第二個(gè)圖像數(shù)組輸入
weight 2:將第二輸入圖像元素的權(quán)值應(yīng)用于最終圖像的伽馬值。
gammaValue:光測(cè)量。
加法代碼
import cv2
import numpy as np
image1 = cv2.imread('input1.jpg')
image2 = cv2.imread('input2.jpg')
weightedSumadd = cv2.a(chǎn)ddWeighted(image1, 0.6, image2, 0.4, 0)
cv2.imshow('Weighted Image', weightedSumadd)
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出圖像將是:
圖像減法
像素減法算子將兩幅圖像作為輸入并輸出第三幅圖像,其像素值是第一幅圖像的像素值減去第二幅圖像的相應(yīng)像素值。
使用單個(gè)圖像作為輸入是常見的,從所有像素中減去一個(gè)常數(shù)值也是常見的。一些版本的運(yùn)算符將簡單地輸出像素值之間的絕對(duì)差,而不是直接的有符號(hào)輸出。
Syntax: cv2.subtract(image1, image2)
參數(shù):
圖 1:第一個(gè)圖像數(shù)組輸入(單通道、8 位或浮點(diǎn))
圖 2:第二個(gè)圖像陣列輸入(單通道、8 位或浮點(diǎn))
輸入圖像
代碼 :
import cv2
import numpy as np
image1 = cv2.imread('input1.jpg')
image2 = cv2.imread('input2.jpg')
sub = cv2.subtract(image1, image2)
cv2.imshow('Subtracted Image', sub)
cv2.waitKey(0)
輸出減去的圖像將是
位運(yùn)算
位運(yùn)算用于圖像處理以提取重要部分。本文中使用了以下按位運(yùn)算:
AND
OR
NOT
XR
位運(yùn)算對(duì)于圖像遮罩也很有用。這些操作可用于啟用圖像創(chuàng)建。這些操作可以幫助改善輸入圖像的屬性。
注意:按位運(yùn)算只能在相同尺寸的輸入圖像上執(zhí)行。
圖像的 AND 位運(yùn)算
AND 運(yùn)算符(以及類似方式的 NAND 運(yùn)算符)通常將兩個(gè)二進(jìn)制或整數(shù)灰度級(jí)圖像作為輸入,并生成第三個(gè)圖像,其像素值只是第一個(gè)圖像的像素值與來自第二個(gè)圖像的相應(yīng)像素相乘。
可以修改此運(yùn)算符以通過獲取單個(gè)輸入圖像,并將每個(gè)像素與預(yù)定的常數(shù)值進(jìn)行與運(yùn)算來產(chǎn)生輸出。
Syntax: cv2.bitwise_and(Image1, Image2, destination, mask)
參數(shù):
Image1:第一個(gè)輸入圖像 numpy 數(shù)組
Image1:第二個(gè)輸入圖像numpy數(shù)組destination:輸出數(shù)組mask: 操作掩碼圖像
代碼 :
import cv2
import numpy as np
img1 = cv2.imread('input1.png')
img2 = cv2.imread('input2.png')
dest_and = cv2.bitwise_and(img2, img1, mask = None)
cv2.imshow('Bitwise And', dest_and)
cv2.waitKey(0)
圖像的 OR 位運(yùn)算
OR 運(yùn)算符通常將兩個(gè)二進(jìn)制或灰度圖像作為輸入,并輸出第三個(gè)圖像,其像素值是第一個(gè)圖像的像素值與來自第二個(gè)圖像的相應(yīng)像素進(jìn)行或運(yùn)算。
該運(yùn)算符的一個(gè)變體采用單個(gè)輸入圖像并將每個(gè)像素與一個(gè)常數(shù)值進(jìn)行 OR 運(yùn)算以生成輸出。
Syntax: cv2.bitwise_or(source1, source2, destination, mask)
參數(shù):
source1 :第一個(gè)輸入 numpy 圖像數(shù)組
source2 :第二個(gè)輸入 numpy 圖像數(shù)組
目的地:輸出數(shù)組圖像
mask :操作掩碼,輸入/輸出 8 位單通道掩碼。
代碼 :
import cv2
import numpy as np
img1 = cv2.imread('input1.png')
img2 = cv2.imread('input2.png')
dest_or = cv2.bitwise_or(img1, img2, mask = None)
cv2.imshow('Bitwise OR', dest_or)
cv2.waitKey(0)
圖像的NOT位運(yùn)算
邏輯非,也稱為反轉(zhuǎn),是一種將二值或灰度圖像作為輸入并生成其照相底片的運(yùn)算符。
Syntax: cv2.bitwise_not(Image1,Destination, mask)
參數(shù):
Image1: 輸入圖像數(shù)組
Destination:輸出數(shù)組圖像
mask: 操作掩碼
代碼 :
import cv2
import numpy as np
img1 = cv2.imread('input1.png')
dest_not = cv2.bitwise_not(img1, mask = None)
cv2.imshow('Bitwise Not', dest_not)
cv2.waitKey(0)
圖像的 XR 位運(yùn)算
至關(guān)重要的是,正在處理的所有輸入像素值都具有相同的位數(shù),否則可能會(huì)出現(xiàn)意外結(jié)果。當(dāng)輸入圖像中的像素值不是簡單的 1 位數(shù)字時(shí),XOR 操作通常(但不總是)對(duì)像素值中的每個(gè)對(duì)應(yīng)位按位執(zhí)行。
Syntax: cv2.bitwise_xor(source1, source2, destination, mask)
參數(shù):
source1 :第一個(gè)輸入圖像數(shù)組(單通道、8 位或浮點(diǎn))
source2 :第二個(gè)輸入圖像數(shù)組(單通道、8 位或浮點(diǎn))
目的地:輸出圖像數(shù)組
mask :操作掩碼,輸入/輸出8位單通道掩碼。
代碼 :
import cv2
import numpy as np
img1 = cv2.imread('input1.png')
img2 = cv2.imread('input2.png')
dest_or = cv2.bitwise_xor(img1, img2, mask = None)
cv2.imshow('Bitwise XOR', dest_xor)
cv2.waitKey(0)
OpenCV的結(jié)論
許多應(yīng)用程序使用從同一場景的不同點(diǎn)獲取的經(jīng)過處理的圖像,例如通過添加相同場景的連續(xù)圖像來降低噪聲或通過減去兩個(gè)連續(xù)圖像來進(jìn)行運(yùn)動(dòng)檢測(cè)。邏輯運(yùn)算符經(jīng)常用于組合兩個(gè)(主要是二進(jìn)制)圖像。
在整數(shù)圖像的情況下,邏輯運(yùn)算符通常按位使用。然后,例如,我們可以使用二進(jìn)制掩碼來選擇圖像的特定區(qū)域。
關(guān)鍵要點(diǎn):
在本文中,我們學(xué)習(xí)了如何對(duì)圖像執(zhí)行各種算術(shù)運(yùn)算,OpenCV 方法是如何工作的,以及這些圖像算術(shù)運(yùn)算在哪里使用。
原文標(biāo)題 : 圖像上的 OpenCV 算術(shù)運(yùn)算
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長度6~500個(gè)字
最新活動(dòng)更多
-
即日-10.29立即報(bào)名>> 2024德州儀器嵌入式技術(shù)創(chuàng)新發(fā)展研討會(huì)
-
10月31日立即下載>> 【限時(shí)免費(fèi)下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報(bào)名>>> 【在線會(huì)議】多物理場仿真助跑新能源汽車
-
11月14日立即報(bào)名>> 2024工程師系列—工業(yè)電子技術(shù)在線會(huì)議
-
12月19日立即報(bào)名>> 【線下會(huì)議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
即日-12.26火熱報(bào)名中>> OFweek2024中國智造CIO在線峰會(huì)
推薦專題
- 1 Intel宣布40年來最重大轉(zhuǎn)型:年底前裁員15000人、拋掉2/3房產(chǎn)
- 2 因美封殺TikTok,字節(jié)股價(jià)骨折!估值僅Meta1/5
- 3 宏山激光重磅發(fā)布行業(yè)解決方案,助力智能制造產(chǎn)業(yè)新飛躍
- 4 國產(chǎn)AI芯片公司破產(chǎn)!白菜價(jià)拍賣
- 5 具身智能火了,但規(guī)模落地還需時(shí)間
- 6 國產(chǎn)英偉達(dá)們,抓緊沖刺A股
- 7 三次錯(cuò)失風(fēng)口!OpenAI前員工殺回AI編程賽道,老東家捧金相助
- 8 英特爾賦能智慧醫(yī)療,共創(chuàng)數(shù)字化未來
- 9 英偉達(dá)的麻煩在后頭?
- 10 將“網(wǎng)紅”變成“商品”,AI“爆改”實(shí)力拉滿
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市