操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    本文分享自華為云社區《[從零到壹] 四十三.圖像增強及運算篇之圖像點運算和圖像灰度化處理》,作者:。

    一.圖像點運算概念

    圖像點運算(Point )指對于一幅輸入圖像,將產生一幅輸出圖像,輸出圖像的每個像素點的灰度值由輸入像素點決定。點運算實際上是灰度到灰度的映射過程,通過映射變換來達到增強或者減弱圖像的灰度。還可以對圖像進行求灰度直方圖、線性變換、非線性變換以及圖像骨架的提取。它與相鄰的像素之間沒有運算關系,是一種簡單和有效的圖像處理方法[1]。

    圖像的灰度變換可以通過有選擇的突出圖像感興趣的特征或者抑制圖像中不需要的特征,從而改善圖像的質量,凸顯圖像的細節,提高圖像的對比度。它也能有效地改變圖像的直方圖分布,使圖像的像素值分布更為均勻[2-3]。它在實際中有很多的應用:

    設輸入圖像為A(x,y),輸出圖像為B(x,y),則點運算可以表示為:

    圖像點運算與幾何運算存在差別,不會改變圖像內像素點之間的空間位置關系。同時與局部(領域)運算也存在差別,輸入像素和輸出像素一一對應。

    二.圖像灰度化處理

    圖像灰度化是將一幅彩色圖像轉換為灰度化圖像的過程。彩色圖像通常包括R、G、B三個分量,分別顯示出紅綠藍等各種顏色,灰度化就是使彩色圖像的R、G、B三個分量相等的過程。灰度圖像中每個像素僅具有一種樣本顏色,其灰度是位于黑色與白色之間的多級色彩深度,灰度值大的像素點比較亮,反之比較暗,像素值最大為255(表示白色),像素值最小為0(表示黑色)。

    假設某點的顏色由RGB(R,G,B)組成,常見灰度處理算法如表11-1所示:

    表11-1中Gray表示灰度處理之后的顏色,然后將原始RGB(R,G,B)顏色均勻地替換成新顏色RGB(Gray,Gray,Gray),從而將彩色圖片轉化為灰度圖像。一種常見的方法是將RGB三個分量求和再取平均值,但更為準確的方法是設置不同的權重,將RGB分量按不同的比例進行灰度劃分。比如人類的眼睛感官藍色的敏感度最低,敏感最高的是綠色,因此將RGB按照0.299、0.587、0.144比例加權平均能得到較合理的灰度圖像圖像灰度化是什么意思,如公式11-2所示[4-6]。

    在日常生活中,我們看到的大多數彩色圖像都是RGB類型,但是在圖像處理過程中,常常需要用到灰度圖像、二值圖像、HSV、HSI等顏色,提供了()函數實現這些功能。其函數原型如下所示:

    該函數的作用是將一個圖像從一個顏色空間轉換到另一個顏色空間,其中,RGB是指Red、Green和Blue,一副圖像由這三個通道()構成;Gray表示只有灰度值一個通道;HSV包含Hue(色調)、(飽和度)和Value(亮度)三個通道。

    在中,常見的顏色空間轉換標識包括、、、、、等。下面是調用()函數將圖像進行灰度化處理的代碼。

    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    #讀取原始圖片
    src = cv2.imread('luo.png')
    #圖像灰度化處理
    grayImage = cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
    #顯示圖像
    cv2.imshow("src", src)
    cv2.imshow("result", grayImage)
    #等待顯示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    灰度圖像二值化處理_圖像灰度化是什么意思_怎樣將灰度圖像二值化

    復制代碼

    輸出結果如圖11-1所示,左邊是彩色的“小珞珞”原圖圖像灰度化是什么意思,右邊是將彩色圖像進行灰度化處理之后的灰度圖。其中,灰度圖將一個像素點的三個顏色變量設置為相等(R=G=B),此時該值稱為灰度值。

    同樣,可以調用如下核心代碼將彩色圖像轉換為HSV顏色空間,其輸出結果如圖11-2所示。

    下面代碼對比了九種常見的顏色空間,包括BGR、RGB、GRAY、HSV、YCrCb、HLS、XYZ、LAB和YUV,并循環顯示處理后的圖像。

    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    import matplotlib.pyplot as plt
    #讀取原始圖像
    img_BGR = cv2.imread('luo.png')
    img_RGB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2RGB)     #BGR轉換為RGB
    img_GRAY = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY)   #灰度化處理
    img_HSV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HSV)     #BGR轉HSV
    img_YCrCb = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YCrCb) #BGR轉YCrCb
    img_HLS = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HLS)     #BGR轉HLS
    img_XYZ = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2XYZ)     #BGR轉XYZ
    img_LAB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2LAB)     #BGR轉LAB
    img_YUV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YUV)     #BGR轉YUV
    #調用matplotlib顯示處理結果
    titles = ['BGR', 'RGB', 'GRAY', 'HSV', 'YCrCb', 'HLS', 'XYZ', 'LAB', 'YUV']  
    images = [img_BGR, img_RGB, img_GRAY, img_HSV, img_YCrCb,
              img_HLS, img_XYZ, img_LAB, img_YUV]  
    for i in range(9):  
       plt.subplot(3, 3, i+1), plt.imshow(images[i], 'gray')  
    

    怎樣將灰度圖像二值化_灰度圖像二值化處理_圖像灰度化是什么意思

    plt.title(titles[i]) plt.xticks([]),plt.yticks([]) plt.show() 復制代碼

    其運行結果如圖11-3所示:

    三.基于像素操作的圖像灰度化處理

    前面講述了調用中()函數實現圖像灰度化的處理,接下來講解基于像素操作的圖像灰度化處理方法,主要是最大值灰度處理、平均灰度處理和加權平均灰度處理方法。

    1.最大值灰度處理方法

    該方法的灰度值等于彩色圖像R、G、B三個分量中的最大值,公式如下:

    其方法灰度化處理后的灰度圖亮度很高,實現代碼如下。

    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    import matplotlib.pyplot as plt
    #讀取原始圖像
    img = cv2.imread('luo.png')
    #獲取圖像高度和寬度
    height = img.shape[0]
    width = img.shape[1]
    #創建一幅圖像
    grayimg = np.zeros((height, width, 3), np.uint8)
    #圖像最大值灰度處理
    for i in range(height):
    

    灰度圖像二值化處理_怎樣將灰度圖像二值化_圖像灰度化是什么意思

    for j in range(width): #獲取圖像R G B最大值 gray = max(img[i,j][0], img[i,j][1], img[i,j][2]) #灰度圖像素賦值 gray=max(R,G,B) grayimg[i,j] = np.uint8(gray) #顯示圖像 cv2.imshow("src", img) cv2.imshow("gray", grayimg) #等待顯示 cv2.waitKey(0) cv2.destroyAllWindows() 復制代碼

    其輸出結果如圖11-4所示,其處理效果的灰度偏亮。

    2.平均灰度處理方法

    該方法的灰度值等于彩色圖像R、G、B三個分量灰度值的求和平均值,其計算公式如公式(11-4)所示:

    平均灰度處理方法實現代碼如下。

    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    import matplotlib.pyplot as plt
    #讀取原始圖像
    img = cv2.imread('luo.png')
    #獲取圖像高度和寬度
    height = img.shape[0]
    

    圖像灰度化是什么意思_怎樣將灰度圖像二值化_灰度圖像二值化處理

    width = img.shape[1] #創建一幅圖像 grayimg = np.zeros((height, width, 3), np.uint8) #圖像平均灰度處理方法 for i in range(height): for j in range(width): #灰度值為RGB三個分量的平均值 gray = (int(img[i,j][0]) + int(img[i,j][1]) + int(img[i,j][2])) / 3 grayimg[i,j] = np.uint8(gray) #顯示圖像 cv2.imshow("src", img) cv2.imshow("gray", grayimg) #等待顯示 cv2.waitKey(0) cv2.destroyAllWindows() 復制代碼

    其輸出結果如圖11-5所示:

    3.加權平均灰度處理方法

    該方法根據色彩重要性,將三個分量以不同的權值進行加權平均。由于人眼對綠色的敏感最高,對藍色敏感最低,因此,按下式對RGB三分量進行加權平均能得到較合理的灰度圖像。

    加權平均灰度處理方法實現代碼如下所示:

    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    

    圖像灰度化是什么意思_灰度圖像二值化處理_怎樣將灰度圖像二值化

    import matplotlib.pyplot as plt #讀取原始圖像 img = cv2.imread('luo.png') #獲取圖像高度和寬度 height = img.shape[0] width = img.shape[1] #創建一幅圖像 grayimg = np.zeros((height, width, 3), np.uint8) #圖像平均灰度處理方法 for i in range(height): for j in range(width): #灰度加權平均法 gray = 0.30 * img[i,j][0] + 0.59 * img[i,j][1] + 0.11 * img[i,j][2] grayimg[i,j] = np.uint8(gray) #顯示圖像 cv2.imshow("src", img) cv2.imshow("gray", grayimg) #等待顯示 cv2.waitKey(0) cv2.destroyAllWindows() 復制代碼

    其輸出結果如圖11-6所示:

    四.總結

    本文主要講解圖像點運算的灰度化處理,詳細介紹常用的灰度化處理方法,并分享了圖像顏色空間相互轉換,以及三種灰度轉換算法的實現。通過灰度處理,我們能有效將彩色圖像轉換為灰度圖,為后續的邊緣提取等處理提供支撐,也可能實現圖像處理軟件最簡單的彩色圖轉黑白的效果,希望對您有所幫助。

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

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有