使用Python和OpenCV進行影像負變換
影像亮度反轉後的影像稱為負片影像,其中影像的亮部顯示為暗色,暗部顯示為亮色。彩色影像(RGB影像)的負變換將反轉,紅色區域顯示為青色,綠色區域顯示為品紅,藍色區域顯示為黃色。
在醫學影像、遙感和其他一些應用中,負變換被廣泛使用。它也有助於找到影像較暗區域的細節。
負變換函式為:
眾所周知,8點陣圖像的最大強度值為255,因此我們需要從每個畫素中減去255(最大強度值)以生成負片影像。
s = T(r) = L – 1 – r
在本文中,我們將學習使用OpenCV Python以不同方式獲得影像的負變換。
使用cv2.bitwise_not()函式
該函式計算輸入陣列的按位反轉。以下是not()函式的語法:
cv2.bitwise_not(src[, dst[, mask]])
引數
src:輸入影像陣列。
dst:與輸入陣列大小和型別相同的輸出陣列(可選)。
mask:可選引數。
示例
在這個例子中,我們將反轉影像陣列的每個值以獲得負片影像。
import cv2
# Load the image
img = cv2.imread('Images/Fruits.jpg')
# Invert the image using cv2.bitwise_not
img_neg = cv2.bitwise_not(img)
# Show the image
cv2.imshow('negative',img_neg)
cv2.waitKey(0)
輸入影像

輸出影像

使用減法
在這種方法中,我們使用兩個for迴圈(基於影像尺寸)遍歷畫素,並從每個畫素的最大畫素值(255)中減去紅色、綠色和藍色的值。
示例
讓我們實現一個不使用任何函式的彩色影像負變換。
import cv2
# Load the image
img = cv2.imread('Images/Fruits.jpg', cv2.COLOR_BGR2RGB)
height, width, _ = img.shape
for i in range(0, height - 1):
for j in range(0, width - 1):
# each pixel has RGB channle data
pixel = img[i, j]
# red
pixel[0] = 255 - pixel[0]
# green
pixel[1] = 255 - pixel[1]
# blue
pixel[2] = 255 - pixel[2]
# Store new values in the pixel
img[i, j] = pixel
# Display the negative transformed image
cv2.imshow('negative image', img)
cv2.waitKey(0)
輸出影像

我們已成功將彩色影像轉換為負片。最初,我們使用for迴圈迭代了影像陣列的所有值(畫素資料),然後從最大畫素值(255)中減去每個畫素值以獲得負變換影像。
示例
在這裡,我們將直接對最大強度值和影像陣列之間應用減法運算,而不是迴圈遍歷每個畫素。
import numpy as np
import cv2
img = cv2.imread('Images/Fruits.jpg')
# Subtract the img array values from max value(calculated from dtype)
img_neg = 255 - img
# Show the negative image
cv2.imshow('negative',img_neg)
cv2.waitKey(0)
輸出

對於灰度影像
對於灰度影像,在負變換中,影像的亮部顯示為暗色,暗部顯示為亮色。
示例
在這個例子中,我們將以灰度模式讀取影像以生成其負片。
import cv2
# Load the image
gray = cv2.imread('Images/Fruits.jpg', 0)
cv2.imshow('Gray image:', gray)
# Invert the image using cv2.bitwise_not
gray_neg = cv2.bitwise_not(gray)
# Show the image
cv2.imshow('negative',gray_neg)
cv2.waitKey(0)
輸入影像

輸出影像

我們已經學習了使用OpenCV Python獲得影像負變換的不同方法。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP