訂閱
糾錯
加入自媒體

圖像上的 OpenCV 算術(shù)運算

OpenCV 簡介

圖像可以進行算術(shù)運算,例如加法、減法和按位運算(AND、OR、NOT、XOR)。這些操作可以幫助改善輸入圖像的屬性。

圖像算法對于分析輸入圖像的屬性是必要的,可以將操作后的圖像用作增強的輸入圖像,并且可以對圖像應(yīng)用更多操作,以進行閾值化、膨脹等。

圖像算術(shù)是將一幅或多幅圖像應(yīng)用于標(biāo)準(zhǔn)算術(shù)運算或邏輯運算符之一。運算符是逐個像素應(yīng)用的,因此輸出圖像中像素的值僅由輸入圖像中相應(yīng)像素的值決定。

因此,圖像通常必須具有相同的大小。當(dāng)向圖像添加恒定偏移量時,輸入圖像之一可能是恒定值。

雖然圖像算法是圖像處理的最基本形式,但它有很多應(yīng)用。算術(shù)運算符的一個顯著優(yōu)勢是該過程簡單明了,因此速度很快。

添加圖像

在其最基本的形式中,該運算符將兩個相同大小的圖像作為輸入,并輸出與前兩個相同大小的第三個圖像,每個像素值是兩個輸入圖像中每個圖像中對應(yīng)像素值的總和. 更高級的版本允許在一次操作中組合多個圖像。

運算符的一個常見變體只是允許向每個像素添加一個指定的常數(shù)。使用函數(shù) cv2.a(chǎn)dd(),我們可以添加兩個圖像。這直接將兩個圖像中的圖像像素相加。

Syntax: cv2.a(chǎn)dd(image1, image2)

但是,添加像素并不是一個理想的情況。因此,我們使用 cv2.a(chǎn)ddweighted()。請記住,兩個輸入圖像的形狀和顏色通道必須相同。

Syntax: cv2.a(chǎn)dd Weighted(image1, weight1, Image2, weight2, gammaValue)

參數(shù):

image1:第一個圖像數(shù)組輸入

weight 1:輸入圖像中第一個用于最終圖像的圖像元素的權(quán)重。

image2:第二個圖像數(shù)組輸入

weight 2:將第二輸入圖像元素的權(quán)值應(yīng)用于最終圖像的伽馬值。

gammaValue:光測量。

加法代碼

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)像素值。

使用單個圖像作為輸入是常見的,從所有像素中減去一個常數(shù)值也是常見的。一些版本的運算符將簡單地輸出像素值之間的絕對差,而不是直接的有符號輸出。

Syntax:  cv2.subtract(image1, image2)

參數(shù):

圖 1:第一個圖像數(shù)組輸入(單通道、8 位或浮點)

圖 2:第二個圖像陣列輸入(單通道、8 位或浮點)

輸入圖像

代碼 :

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)

輸出減去的圖像將是

位運算

位運算用于圖像處理以提取重要部分。本文中使用了以下按位運算:

AND

OR

NOT

XR

位運算對于圖像遮罩也很有用。這些操作可用于啟用圖像創(chuàng)建。這些操作可以幫助改善輸入圖像的屬性。

注意:按位運算只能在相同尺寸的輸入圖像上執(zhí)行。

圖像的 AND 位運算

AND 運算符(以及類似方式的 NAND 運算符)通常將兩個二進制或整數(shù)灰度級圖像作為輸入,并生成第三個圖像,其像素值只是第一個圖像的像素值與來自第二個圖像的相應(yīng)像素相乘。

可以修改此運算符以通過獲取單個輸入圖像,并將每個像素與預(yù)定的常數(shù)值進行與運算來產(chǎn)生輸出。

Syntax: cv2.bitwise_and(Image1, Image2, destination, mask)

參數(shù):

Image1:第一個輸入圖像 numpy 數(shù)組

Image1:第二個輸入圖像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 位運算

OR 運算符通常將兩個二進制或灰度圖像作為輸入,并輸出第三個圖像,其像素值是第一個圖像的像素值與來自第二個圖像的相應(yīng)像素進行或運算。

該運算符的一個變體采用單個輸入圖像并將每個像素與一個常數(shù)值進行 OR 運算以生成輸出。

Syntax: cv2.bitwise_or(source1, source2, destination, mask)

參數(shù):

source1 第一個輸入 numpy 圖像數(shù)組

source2 第二個輸入 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位運算

邏輯非,也稱為反轉(zhuǎ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 位運算

至關(guān)重要的是,正在處理的所有輸入像素值都具有相同的位數(shù),否則可能會出現(xiàn)意外結(jié)果。當(dāng)輸入圖像中的像素值不是簡單的 1 位數(shù)字時,XOR 操作通常(但不總是)對像素值中的每個對應(yīng)位按位執(zhí)行。

Syntax: cv2.bitwise_xor(source1, source2, destination, mask)

參數(shù):

source1 第一個輸入圖像數(shù)組(單通道、8 位或浮點)

source2 第二個輸入圖像數(shù)組(單通道、8 位或浮點)

目的地輸出圖像數(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)用程序使用從同一場景的不同點獲取的經(jīng)過處理的圖像,例如通過添加相同場景的連續(xù)圖像來降低噪聲或通過減去兩個連續(xù)圖像來進行運動檢測。邏輯運算符經(jīng)常用于組合兩個(主要是二進制)圖像。

在整數(shù)圖像的情況下,邏輯運算符通常按位使用。然后,例如,我們可以使用二進制掩碼來選擇圖像的特定區(qū)域。

關(guān)鍵要點:

在本文中,我們學(xué)習(xí)了如何對圖像執(zhí)行各種算術(shù)運算,OpenCV 方法是如何工作的,以及這些圖像算術(shù)運算在哪里使用。

       原文標(biāo)題 : 圖像上的 OpenCV 算術(shù)運算

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯
x
*文字標(biāo)題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號