歡迎大家來到“Python從零到壹”,在這里我將分享約200篇Python系列文章,帶大家一起去學習和玩耍,看看Python這個有趣的世界,所有文章都將結合案例、代碼和作者的經驗講解,真心想把自己近十年的編程經驗分享給大家,希望對您有所幫助,文章中不足之處也請海涵,Python系列整體框架包括基礎語法10篇、網路爬蟲30篇、可視化分析10篇、機器學習20篇、大資料分析20篇、影像識別30篇、人工智能40篇、Python安全20篇、其他技巧10篇,您的關注、點贊和轉發就是對秀璋最大的支持,知識無價人有情,希望我們都能在人生路上開心快樂、共同成長,
該系列文章主要講解Python OpenCV影像處理和影像識別知識,前期主要講解影像處理基礎知識、OpenCV基礎用法、常用影像繪制方法、影像幾何變換等,中期講解影像處理的各種運算,包括影像點運算、形態學處理、影像銳化、影像增強、影像平滑等,后期研究影像識別、影像分割、影像分類、影像特效處理以及影像處理相關應用,
第二部分將講解影像運算和影像增強,上一篇文章是影像點運算的灰度化處理知識,包括各種灰度演算法的實作,以及灰度線性變換和灰度非線性變換,這篇文章將詳細講解影像灰度線性變換,包括灰度上移、對比度增強、對比度減弱和灰度反色變換,希望文章對您有所幫助,如果有不足之處,還請海涵,
文章目錄
- 一.灰度線性變換
- 二.影像灰度上移變換
- 三.影像對比度增強變換
- 四.影像對比度減弱變換
- 五.影像灰度反色變換
- 六.總結
下載地址:
- https://github.com/eastmountyxz/Python-zero2one
前文賞析:
第一部分 基礎語法
- [Python從零到壹] 一.為什么我們要學Python及基礎語法詳解
- [Python從零到壹] 二.語法基礎之條件陳述句、回圈陳述句和函式
- [Python從零到壹] 三.語法基礎之檔案操作、CSV檔案讀寫及面向物件
第二部分 網路爬蟲
- [Python從零到壹] 四.網路爬蟲之入門基礎及正則運算式抓取博客案例
- [Python從零到壹] 五.網路爬蟲之BeautifulSoup基礎語法萬字詳解
- [Python從零到壹] 六.網路爬蟲之BeautifulSoup爬取豆瓣TOP250電影詳解
- [Python從零到壹] 七.網路爬蟲之Requests爬取豆瓣電影TOP250及CSV存盤
- [Python從零到壹] 八.資料庫之MySQL基礎知識及操作萬字詳解
- [Python從零到壹] 九.網路爬蟲之Selenium基礎技術萬字詳解(定位元素、常用方法、鍵盤滑鼠操作)
- [Python從零到壹] 十.網路爬蟲之Selenium爬取在線百科知識萬字詳解(NLP語料構造必備技能)
第三部分 資料分析和機器學習
- [Python從零到壹] 十一.資料分析之Numpy、Pandas、Matplotlib和Sklearn入門知識萬字詳解(1)
- [Python從零到壹] 十二.機器學習之回歸分析萬字總結全網首發(線性回歸、多項式回歸、邏輯回歸)
- [Python從零到壹] 十三.機器學習之聚類分析萬字總結全網首發(K-Means、BIRCH、層次聚類、樹狀聚類)
- [Python從零到壹] 十四.機器學習之分類演算法三萬字總結全網首發(決策樹、KNN、SVM、分類演算法對比)
- [Python從零到壹] 十五.文本挖掘之資料預處理、Jieba工具和文本聚類萬字詳解
- [Python從零到壹] 十六.文本挖掘之詞云熱點與LDA主題分布分析萬字詳解
- [Python從零到壹] 十七.可視化分析之Matplotlib、Pandas、Echarts入門萬字詳解
- [Python從零到壹] 十八.可視化分析之Basemap地圖包入門詳解
- [Python從零到壹] 十九.可視化分析之熱力圖和箱圖繪制及應用詳解
- [Python從零到壹] 二十.可視化分析之Seaborn繪圖萬字詳解
- [Python從零到壹] 二十一.可視化分析之Pyechart繪圖萬字詳解
- [Python從零到壹] 二十二.可視化分析之OpenGL繪圖萬字詳解
- [Python從零到壹] 二十三.十大機器學習演算法之決策樹分類分析詳解(1)
- [Python從零到壹] 二十四.十大機器學習演算法之KMeans聚類分析詳解(2)
- [Python從零到壹] 二十五.十大機器學習演算法之KNN演算法及影像分類詳解(3)
- [Python從零到壹] 二十六.十大機器學習演算法之樸素貝葉斯演算法及文本分類詳解(4)
- [Python從零到壹] 二十七.十大機器學習演算法之線性回歸演算法分析詳解(5)
- [Python從零到壹] 二十八.十大機器學習演算法之SVM演算法分析詳解(6)
- [Python從零到壹] 二十九.十大機器學習演算法之隨機森林演算法分析詳解(7)
- [Python從零到壹] 三十.十大機器學習演算法之邏輯回歸演算法及惡意請求檢測應用詳解(8)
- [Python從零到壹] 三十一.十大機器學習演算法之Boosting和AdaBoost應用詳解(9)
- [Python從零到壹] 三十二.十大機器學習演算法之層次聚類和樹狀圖聚類應用詳解(10)
第四部分 Python影像處理基礎
- [Python從零到壹] 三十三.影像處理基礎篇之什么是影像處理和OpenCV配置
- [Python從零到壹] 三十四.OpenCV入門詳解——顯示讀取修改及保存影像
- [Python從零到壹] 三十五.影像處理基礎篇之OpenCV繪制各類幾何圖形
- [Python從零到壹] 三十六.影像處理基礎篇之影像算術與邏輯運算詳解
- [Python從零到壹] 三十七.影像處理基礎篇之影像融合處理和ROI區域繪制
- [Python從零到壹] 三十八.影像處理基礎篇之影像幾何變換(平移縮放旋轉)
- [Python從零到壹] 三十九.影像處理基礎篇之影像幾何變換(鏡像仿射透視)
- [Python從零到壹] 四十.影像處理基礎篇之影像量化處理
- [Python從零到壹] 四十一.影像處理基礎篇之影像采樣處理
- [Python從零到壹] 四十二.影像處理基礎篇之影像金字塔向上取樣和向下取樣
第五部分 Python影像運算和影像增強
- [Python從零到壹] 四十三.影像增強及運算篇之影像點運算和影像灰度化處理
- [Python從零到壹] 四十四.影像增強及運算篇之影像灰度線性變換詳解
第六部分 Python影像識別和影像高階案例
第七部分 NLP與文本挖掘
第八部分 人工智能入門知識
第九部分 網路攻防與AI安全
第十部分 知識圖譜構建實戰
擴展部分 人工智能高級案例
作者新開的“娜璋AI安全之家”將專注于Python和安全技術,主要分享Web滲透、系統安全、人工智能、大資料分析、影像識別、惡意代碼檢測、CVE復現、威脅情報分析等文章,雖然作者是一名技術小白,但會保證每一篇文章都會很用心地撰寫,希望這些基礎性文章對你有所幫助,在Python和安全路上與大家一起進步,
一.灰度線性變換
影像的灰度線性變換是通過建立灰度映射來調整原始影像的灰度,從而改善影像的質量,凸顯影像的細節,提高影像的對比度,灰度線性變換的計算公式如(12-1)所示:

該公式中DB表示灰度線性變換后的灰度值,DA表示變換前輸入影像的灰度值,α和b為線性變換方程f(D)的引數,分別表示斜率和截距[1-4],
- 當α=1,b=0時,保持原始影像
- 當α=1,b!=0時,影像所有的灰度值上移或下移
- 當α=-1,b=255時,原始影像的灰度值反轉
- 當α>1時,輸出影像的對比度增強
- 當0<α<1時,輸出影像的對比度減小
- 當α<0時,原始影像暗區域變亮,亮區域變暗,圖像求補
如圖12-1所示,顯示了影像的灰度線性變換對應的效果圖,

二.影像灰度上移變換
該演算法將實作影像灰度值的上移,從而提升影像的亮度,
- DB=DA+50
具體實作代碼如下所示,由于影像的灰度值位于0至255區間之內,所以需要對灰度值進行溢位判斷,
# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取原始影像
img = cv2.imread('luo.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()
其輸出結果如圖12-2所示,影像的所有灰度值上移50,影像變得更白了,注意,純黑色對應的灰度值為0,純白色對應的灰度值為255,

三.影像對比度增強變換
該演算法將增強影像的對比度,Python實作代碼如下所示,
- DB=DA×1.5
# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取原始影像
img = cv2.imread('luo.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)
其輸出結果如圖12-3所示,影像的所有灰度值增強1.5倍,

四.影像對比度減弱變換
該演算法將減弱影像的對比度,Python實作代碼如下所示,
- DB=DA×0.8
# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取原始影像
img = cv2.imread('luo.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()
其輸出結果如圖12-4所示,影像的所有灰度值減弱,影像變得更暗,

五.影像灰度反色變換
反色變換又稱為線性灰度求補變換,它是對原影像的像素值進行反轉,即黑色變為白色,白色變為黑色的程序,
- DB=255-DA
其Python實作代碼如下所示:
# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取原始影像
img = cv2.imread('luo.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()
其輸出結果如圖12-5所示,影像處理前后的灰度值是互補的,

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

六.總結
本文主要講解影像灰度線性變換,包括影像灰度上移、影像對比度增強變換、影像對比度減弱變換和影像灰度反色變換,希望大家一定要自己實作文章中的代碼,更好地提升編程能力,
感謝在求學路上的同行者,不負遇見,勿忘初心,影像處理系列主要包括三部分,分別是:



祝大家新年快樂,虎年大吉,闔家幸福,萬事如意,小珞珞給大家拜年了,親情是真的很美,很治愈,希望小珞珞和他媽媽能開心每一天,全家人身體健康,小珞珞這小樣子可愛極了,愛你們喔!

(By:娜璋之家 Eastmount 2022-02-28 夜于武漢 https://blog.csdn.net/Eastmount )
參考文獻:
- [1] 阮秋琦. 數字影像處理學(第3版)[M]. 北京:電子工業出版社,2008.
- [2] 毛星云,冷雪飛. OpenCV3編程入門[M]. 北京:電子工業出版社,2015.
- [3] Eastmount. [數字影像處理] 三.MFC實作影像灰度、采樣和量化功能詳解[EB/OL]. (2015-05-28). https://blog.csdn.net/eastmount/article/details/46010637.
- [4] Eastmount. [Python影像處理] 十五.影像的灰度線性變換[EB/OL]. ( 2019-03-28). https://blog.csdn.net/Eastmount/article/details/88858696.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/434534.html
標籤:AI
