您的位置:  首頁 > 技術 > python語言 > 正文

Python圖像處理丨圖像的灰度線性變換

2022-08-29 08:00 https://my.oschina.net/u/4526289/blog/5570409 華為云開發者聯盟 次閱讀 條評論
摘要:本文主要講解灰度線性變換。

本文分享自華為云社區《[Python圖像處理] 十五.圖像的灰度線性變換》,作者:eastmount。

一.圖像灰度線性變換原理

圖像的灰度線性變換是通過建立灰度映射來調整原始圖像的灰度,從而改善圖像的質量,凸顯圖像的細節,提高圖像的對比度?;叶染€性變換的計算公式如下所示:

該公式中DB表示灰度線性變換后的灰度值,DA表示變換前輸入圖像的灰度值,α和b為線性變換方程f(D)的參數,分別表示斜率和截距。

  • 當α=1,b=0時,保持原始圖像
  • 當α=1,b!=0時,圖像所有的灰度值上移或下移
  • 當α=-1,b=255時,原始圖像的灰度值反轉
  • 當α>1時,輸出圖像的對比度增強
  • 當0<α<1時,輸出圖像的對比度減小
  • 當α<0時,原始圖像暗區域變亮,亮區域變暗,圖像求補

如圖所示,顯示了圖像的灰度線性變換對應的效果圖。

二.圖像灰度上移變換

該算法將實現圖像灰度值的上移,從而提升圖像的亮度,其實現代碼如下所示。由于圖像的灰度值位于0至255區間之內,所以需要對灰度值進行溢出判斷。

# -*- coding: utf-8 -*-
import cv2  
import numpy as np  
import matplotlib.pyplot as plt
#讀取原始圖像
img = cv2.imread('miao.png')
#圖像灰度轉換
grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#獲取圖像高度和寬度
height = grayImage.shape[0]
width = grayImage.shape[1]
#創建一幅圖像
result = np.zeros((height, width), np.uint8)
#圖像灰度上移變換 DB=DA+50
for i in range(height):
 for j in range(width):
 if (int(grayImage[i,j]+50) > 255):
            gray = 255
 else:
            gray = int(grayImage[i,j]+50)
        result[i,j] = np.uint8(gray)
#顯示圖像
cv2.imshow("Gray Image", grayImage)
cv2.imshow("Result", result)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()

其輸出結果如下圖所示,圖像的所有灰度值上移50,圖像變得更白了。注意,純黑色對應的灰度值為0,純白色對應的灰度值為255。

三.圖像對比度增強變換

該算法將增強圖像的對比度,Python實現代碼如下所示:

# -*- coding: utf-8 -*-
import cv2  
import numpy as np  
import matplotlib.pyplot as plt
#讀取原始圖像
img = cv2.imread('miao.png')
#圖像灰度轉換
grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#獲取圖像高度和寬度
height = grayImage.shape[0]
width = grayImage.shape[1]
#創建一幅圖像
result = np.zeros((height, width), np.uint8)
#圖像對比度增強變換 DB=DA*1.5
for i in range(height):
 for j in range(width):
 if (int(grayImage[i,j]*1.5) > 255):
            gray = 255
 else:
            gray = int(grayImage[i,j]*1.5)
        result[i,j] = np.uint8(gray)
#顯示圖像
cv2.imshow("Gray Image", grayImage)
cv2.imshow("Result", result)

其輸出結果如下圖所示,圖像的所有灰度值增強1.5倍。

四.圖像對比度減弱變換

該算法將減弱圖像的對比度,Python實現代碼如下所示:

# -*- coding: utf-8 -*-
import cv2  
import numpy as np  
import matplotlib.pyplot as plt
#讀取原始圖像
img = cv2.imread('miao.png')
#圖像灰度轉換
grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#獲取圖像高度和寬度
height = grayImage.shape[0]
width = grayImage.shape[1]
#創建一幅圖像
result = np.zeros((height, width), np.uint8)
#圖像對比度減弱變換 DB=DA*0.8
for i in range(height):
 for j in range(width):
        gray = int(grayImage[i,j]*0.8)
        result[i,j] = np.uint8(gray)
#顯示圖像
cv2.imshow("Gray Image", grayImage)
cv2.imshow("Result", result)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()

其輸出結果如下圖所示,圖像的所有灰度值減弱,圖像變得更暗。

五.圖像灰度反色變換

反色變換又稱為線性灰度求補變換,它是對原圖像的像素值進行反轉,即黑色變為白色,白色變為黑色的過程。其Python實現代碼如下所示:

# -*- coding: utf-8 -*-
import cv2  
import numpy as np  
import matplotlib.pyplot as plt
#讀取原始圖像
img = cv2.imread('miao.png')
#圖像灰度轉換
grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#獲取圖像高度和寬度
height = grayImage.shape[0]
width = grayImage.shape[1]
#創建一幅圖像
result = np.zeros((height, width), np.uint8)
#圖像灰度反色變換 DB=255-DA
for i in range(height):
 for j in range(width):
        gray = 255 - grayImage[i,j]
        result[i,j] = np.uint8(gray)
#顯示圖像
cv2.imshow("Gray Image", grayImage)
cv2.imshow("Result", result)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()

其輸出結果如下圖所示,圖像處理前后的灰度值是互補的。

圖像灰度反色變換在醫學圖像處理中有一定的應用,如下圖所示:

PS:文章參考自己以前系列圖像處理文章及OpenCV庫函數,同時參考如下文獻:

?

點擊關注,第一時間了解華為云新鮮技術~

展開閱讀全文
  • 0
    感動
  • 0
    路過
  • 0
    高興
  • 0
    難過
  • 0
    搞笑
  • 0
    無聊
  • 0
    憤怒
  • 0
    同情
熱度排行
友情鏈接
18禁高潮出水呻吟娇喘mp3,日本熟妇乱人伦A片免费高清,成人午夜精品无码区,狠狠色噜噜色狠狠狠综合久久,麻豆一区二区99久久久久,年轻的妈妈4,少妇被又大又粗又爽毛片,护士张开腿让我爽了一夜,男男互攻互受h啪肉np文,你好神枪手电视剧免费观看啊,97人妻一区二区精品免费,久久久婷婷五月亚洲97号色,freegaysexvideos男男中国,国产精品国产三级国av麻豆,国产精品又黄又爽又色无遮挡网站,亚洲av无码一区二区三区网站,亚洲国产精品久久久久蜜桃,国产真人无码作爱视频免费,国产成人精品亚洲一区二区三区,亚洲欧洲日产最新,老司机带带我精彩免费,国产成人久久精品激情,日本最新av免费一区二区三区,边摸边吃奶又黄又激烈视频
<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>