日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

数字图像处理与Python实现笔记之彩色图像处理初步

發布時間:2024/10/8 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数字图像处理与Python实现笔记之彩色图像处理初步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數字圖像處理與Python實現筆記之彩色圖像處理初步

  • 摘要
  • 緒論
  • 1 數字圖像處理基礎知識
  • 2 彩色圖像處理初步
    • 2.1 彩色圖像的顏色空間
      • 2.1.1 RGB顏色空間
      • 2.1.2 HSI顏色空間
      • 2.1.3 RGB和HSI顏色空間的轉換
    • 2.2 偽彩色圖像處理
      • 2.2.1 強度分層
      • 2.2.2 灰度值到彩色變換
    • 2.3 基于彩色的圖像分割
      • 2.3.1 HSI顏色空間中的分割
      • 2.3.2 RGB顏色空間中的分割
    • 2.4 彩色圖像的灰度化
    • 2.5 小結
  • 參考資料

摘要

  • 簡要介紹數字圖像處理涉及的一些基本概念、基本運算、基本類型,以及如何通過Python對數字圖像進行讀取和簡單操作。
  • 以彩色圖像為例對數字圖像處理的基本操作進行介紹,熟悉數字圖像處理的基本過程,主要包括顏色空間的基本概念、偽彩色圖像處理操作,彩色圖像處理簡單操作。
  • 瞄準在空間域中對圖像進行增強,介紹空間濾波的機理、基本概念以及使用的基本技術。本章內容包括空間濾波基本概念、基于空間濾波的圖像平滑處理、基于空間濾波的銳化操作以及混合空間增強。
  • 從頻域角度入手對圖像處理及增強方法展開介紹。因為頻域濾波所需的數學知識較多,所以本章采取由淺入深的策略,首先介紹一維傅里葉變換,其次介紹二維傅里葉變換和快速傅里葉變換,最后介紹圖像頻域濾波中出現的各種技術,其大體可分為低通濾波和高通濾波兩大類。
  • 從全局特征提取和局部特征提取兩方面入手,分別介紹顏色特征、紋理特征、形狀特征、邊緣特征、點特征的提取方法。本章內容是目前機器視覺和圖像處理領域的學者關注較多的內容,通過穿插較多的實例,幫助讀者理解圖像特征提取的基本技術。
  • 瞄準如何減少圖像傳輸及存儲數據大小,介紹主要使用的壓縮技術,包括有損壓縮和無損壓縮等,并使用JPEG壓縮技術串講全章知識點。
  • 介紹圖像的小波域表示及多分辨率表示。
  • 緒論

    • 人工智能是引領未來發展的戰略性技術,是新一輪科技革命和產業變革的重要驅動力量,將深刻地改變人類社會生活。

    • 促進人工智能和實體經濟的深度融合,構建數據驅動、人機協同、跨界融合、共創分享的智能經濟形態,更是推動質量變革、效率變革、動力變革的重要途經。

    • 進年來,我國人工智能新技術、新產品、新業態持續涌現,與農業、制造業、服務業等行業的融合步伐明顯加快,在技術創新、應用推廣、產業發展等方面成效初顯。

    • 人工智能技術并不是一個新生事物,它在最近幾年引起全球性關注并得到飛速發展的主要原因,在于它的三個基本要素(算法、數據、算力)的迅猛發展,其中又以數據和算力的發展尤為重要。

    • 物聯網技術的蓬勃發展使得數據累計的難度越來越低,而芯片算力的不斷提升,使得過去只能通過云計算才能完成的人工智能運算,現在可以下沉到最普通的設備上完成。

    • 物聯網技術為機器帶來感知能力,而人工智能則通過計算算力為機器帶來了決策能力,正如感知和大腦對自然生命進化所起到的必然性作用。

    1 數字圖像處理基礎知識

    https://hulin.blog.csdn.net/article/details/107570020

    2 彩色圖像處理初步

    • 對于灰度圖像而言,其每個像素的亮度用一個數值表示即可。而彩色圖像的每個像素包含了顏色信息,每個像素的光強度和色度需用三個數值描述。
    • 研究彩色圖像的主要原因:第一,彩色圖像符合人類視覺特點,人類可以辨別幾千種顏色色調和亮度,但卻只能辨別幾十種灰度層次。第二,彩色可以更好的表達圖像的特征,可根據圖像的顏色特征簡化目標物的區分與識別。

    2.1 彩色圖像的顏色空間

    • 彩色圖像的顏色空間也稱為顏色模型和彩色系統,用于對顏色進行描述和說明。常用的顏色空間包括RGB顏色空間和HSI顏色空間。

    2.1.1 RGB顏色空間

    • 白光通過玻璃棱鏡會出現紫色到紅色的連續彩色光譜,光由多種色譜構成。

    • 人眼中有大量對紅、綠、藍顏色敏感的追狀體細胞,因此常用RGB顏色空間表達彩色圖像信息。這3種原色的混合色基本覆蓋了人類的色彩空間,從而滿足了人類的色彩體驗。

    • RGB圖像由三個圖像分量組成,分別是R通道圖像、G通道圖像和B通道圖像。

    import skimage.data as data import matplotlib.pyplot as pltimage = data.coffee() # 載入RGB圖像plt.subplot(2,2,1) plt.title('RGB image') plt.axis('off') # 不顯示坐標軸 plt.imshow(image) # 顯示RGB彩色圖像# R 通道圖像 imageR = image[:, :, 0] plt.subplot(2,2,2) plt.title('R image') plt.axis('off') # 不顯示坐標軸 plt.imshow(imageR, cmap='gray')# G 通道圖像 imageG = image[:, :, 1] plt.subplot(2,2,3) plt.title('G image') plt.axis('off') # 不顯示坐標軸 plt.imshow(imageG, cmap='gray')# B 通道圖像 imageB = image[:, :, 2] plt.subplot(2,2,4) plt.title('B image') plt.axis('off') # 不顯示坐標軸 plt.imshow(imageB, cmap='gray')plt.tight_layout() plt.savefig('im.png')

    2.1.2 HSI顏色空間

    • HSI顏色空間接近人類視覺感知顏色的方式,包含三個分量分別是:色調(Hue,H),飽和度(Saturation,S),亮度(Intensity,I)

    • HSI顏色空間圓柱體的橫截面稱為色環,色環更加清晰的展示了色調和飽和度兩個參數

    • 色調H由角度表示,其顏色表示最接近哪個光譜波長。

    • 飽和度S由色環的圓心到顏色點的半徑表示,距離越長表示飽和度越高,顏色越鮮明。

    • 亮度I由顏色點到圓柱底部的距離表示。

    • 圓柱體底部圓心表示黑色,頂部圓心表示白色。

    2.1.3 RGB和HSI顏色空間的轉換

    • RGB轉到HSI顏色空間:將圖像的R、G、B分量分別進行歸一化處理
    • 在RGB顏色空間中,位于空間位置(x,y)的像素點的顏色用該像素點的R分量R(x,y)、G分量G(x,y)以及B分量B(x,y)3個數值表示。在HSI顏色空間中,位于空間位置(x,y)的像素點的H分量、S分量、I分量可由下式計算得出。

    from skimage import data, io from matplotlib import pyplot as plt import math import numpy as np import sys# 定義RGB圖像轉換為HSI圖像的函數 def RGB_to_HSI(r, g, b):r = r / 255g = g / 255b = b / 255num = 0.5 * ((r - g) + (r - b))den = ((r - g) * (r - g) + (r - b) * (g - b)) ** 0.5if b <= g:if den == 0:den = sys.float_info.minh = math.acos(num / den)elif b > g:if den == 0:den = sys.float_info.minh = (2 * math.pi) - math.acos(num / den)s = 1 - (3 * min(r, g, b) / (r + g + b))i = (r + g + b) / 3return int(h), int(s * 100), int(i * 255)# image = io.imread('flower.jpg') image = data.coffee() hsi_image = np.zeros(image.shape, dtype='uint8') for ii in range(image.shape[0]):for jj in range(image.shape[1]):r, g, b = image[ii, jj, :]h, s, i = RGB_to_HSI(r, g, b)hsi_image[ii, jj, :] = (h, s, i)# 顯示RGB原圖像 plt.subplot(2, 4, 1) plt.imshow(image) plt.axis('off') plt.title('RGB')# 顯示RGB原圖像R分量 plt.subplot(2, 4, 2) plt.imshow(image[:, :, 0]) plt.axis('off') plt.title('RGB-R')# 顯示RGB原圖像G分量 plt.subplot(2, 4, 3) plt.imshow(image[:, :, 1]) plt.axis('off') plt.title('RGB-G')# 顯示RGB原圖像B分量 plt.subplot(2, 4, 4) plt.imshow(image[:, :, 2]) plt.axis('off') plt.title('RGB-B')# 顯示HSI原圖像 plt.subplot(2, 4, 5) plt.imshow(hsi_image) plt.axis('off') plt.title('HSI')# 顯示HSI圖像H分量 plt.subplot(2, 4, 6) plt.imshow(hsi_image[:, :, 0]) plt.axis('off') plt.title('HSI-H')# 顯示HSI圖像S分量 plt.subplot(2, 4, 7) plt.imshow(hsi_image[:, :, 1]) plt.axis('off') plt.title('HSI-S')# 顯示HSI圖像I分量 plt.subplot(2, 4, 8) plt.imshow(hsi_image[:, :, 2]) plt.axis('off') plt.title('HSI-I')plt.show()

    • HSI轉到RGB顏色空間

    在HSI顏色空間中,假設圖像的S分量的值在[0,1]區間內,位于空間位置(x,y)的像素點的顏色用該像素點的顏色用該像素點的H分量、S分量、I分量3個數值表示。

    2.2 偽彩色圖像處理

    • 彩色圖像處理可以分為全彩色圖像處理和偽彩色圖像處理。
    • 全彩色圖像由全彩色傳感器獲取,如數碼相機和彩色掃描儀。
    • 全彩色圖像處理方法分為兩大類:① 分別處理每一分量圖像,然后將處理后的分量圖像合成彩色圖像。② 直接對彩色像素進行處理。
    • 偽彩色圖像處理根據一定的規則對灰度值賦以彩色,將灰度圖像轉化為給定彩色分布的圖像。主要包括強度分層技術和灰度值到彩色變換技術。

    2.2.1 強度分層

    • 強度分層也稱為灰度分層或灰度分割。將灰度圖像按照灰度值范圍劃分為不同的層級,然后給每個層級賦予不同的顏色,從而增強不同層級的對比度。強度分層技術將灰度圖像轉換為偽彩色圖像,且偽彩色圖像的顏色種類數目與強度分層的數目一致。

    • 灰度圖像

    • 強度分層圖像

    2.2.2 灰度值到彩色變換

    • 首先對任何像素的灰度值進行3個獨立的變換,然后將3個變換的結果分別作為偽彩色圖像的紅、綠、藍通道的亮度值。
    • 與強度分層技術相比,灰度值到彩色變換更通用。
    • 繪制灰度值到彩色變換的映射關系的代碼如下。
    from skimage import data, color from matplotlib import pyplot as plt import numpy as npL = 255# 定義灰度值到彩色變換 def getR(gray):if gray < L / 2:return 0elif gray > L / 4 * 3:return Lelse:return 4 * gray - 2 * Ldef getG(gray):if gray < L / 4:return 4 * grayelif gray > L / 4 * 3:return 4 * L - 4 * grayreturn Ldef getB(gray):if gray < L / 4:return Lelif gray > L / 2:return 0else:return 2 * L - 4 * gray# 設置字體格式 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['font.size'] = 15 plt.rcParams['axes.unicode_minus'] = False x = [0, 64, 127, 191, 255]# 繪制灰度圖像到R通道的映射關系 plt.figure() R = [] for i in x:R.append(getR(i)) plt.plot(x, R, 'r', label='紅色變換') plt.legend(loc='best')# 繪制灰度圖像到R通道的映射關系 plt.figure() G = [] for i in x:G.append(getG(i)) plt.plot(x, G, 'g', label='綠色變換') plt.legend(loc='best')# 繪制灰度圖像到B通道的映射關系 plt.figure() B = [] for i in x:B.append(getB(i)) plt.plot(x, B, 'b', marker='o', markersize='5', label='綠色變換') plt.legend(loc='best')# 繪制灰度圖像到RGB的映射關系 plt.figure() plt.plot(x, R, 'r') plt.plot(x, G, 'g') plt.plot(x, B, 'b', marker='o', markersize='5')plt.show()

    • 灰度圖像按以上映射關系轉換為彩色圖像的代碼如下。
    from skimage import data, color from matplotlib import pyplot as plt import numpy as npL = 255# 定義灰度值到彩色變換 def getR(gray):if gray < L / 2:return 0elif gray > L / 4 * 3:return Lelse:return 4 * gray - 2 * Ldef getG(gray):if gray < L / 4:return 4 * grayelif gray > L / 4 * 3:return 4 * L - 4 * grayreturn Ldef getB(gray):if gray < L / 4:return Lelif gray > L / 2:return 0else:return 2 * L - 4 * grayimg = data.coffee() gray_img = color.rgb2gray(img) * 255 color_img = np.zeros(img.shape, dtype='uint8') for i in range(img.shape[0]):for j in range(img.shape[1]):r, g, b = getR(gray_img[i, j]), getG(gray_img[i, j]), getB(gray_img[i, j])color_img[i, j, :] = (r, g, b)plt.figure() plt.axis('off') plt.imshow(gray_img)plt.figure() plt.axis('off') plt.imshow(color_img)plt.show()

    2.3 基于彩色的圖像分割

    • 圖像分割是把圖像分成各具特性的區域并提取出感興趣區域的技術和過程。
    • 基于彩色的圖像分割是在顏色空間中進行圖像分割
    • 基于彩色的圖像分割首先觀察原始彩色圖像的各個分量圖像,利用分量圖像中感興趣區域的特征對感興趣區域進行提取,并弱化背景區域。

    2.3.1 HSI顏色空間中的分割

    • HSI顏色空間是面向顏色處理的,用色調H飽和度S描述色彩,用亮度I描述光的強度。
    • HSI模型有兩個特點:I 分量與圖像的彩色信息無關,H 分量和S 分量與人感受顏色的方式是緊密相連的。
    from skimage import data, color, io from matplotlib import pyplot as plt import numpy as np import math import sys# RGB to HSI def rgb2hsi(r, g, b):r = r / 255g = g / 255b = b / 255num = 0.5 * ((r - g) + (r - b))den = ((r - g) * (r - g) + (r - b) * (g - b)) ** 0.5if b <= g:if den == 0:den = sys.float_info.minh = math.acos(num / den)elif b > g:if den == 0:den = sys.float_info.minh = (2 * math.pi) - math.acos(num / den)s = 1 - 3 * min(r, g, b) / (r + g + b)i = (r + b + g) / 3return int(h), int(s * 100), int(i * 255)image = io.imread(r'Red-Flower.jpg') hsi_image = np.zeros(image.shape, dtype='uint8') for i in range(image.shape[0]):for j in range(image.shape[1]):r, g, b = image[i, j, :]h, s, i = rgb2hsi(r, g, b)hsi_image[i, j, :] = (h, s, i)H = hsi_image[:, :, 0] S = hsi_image[:, :, 1] I = hsi_image[:, :, 2]# 生成二值飽和度模板 S_template = np.zeros(S.shape, dtype='uint8') for i in range(S.shape[0]):for j in range(S.shape[1]):if S[i, j] > 0.3 * S.max():S_template[i, j] = 1# 色調圖像與二值飽和度模板相乘可得到分割結果 F = np.zeros(H.shape, dtype='uint8') for i in range(F.shape[0]):for j in range(F.shape[1]):F[i, j] = H[i, j] * S_template[i, j]# 顯示結果 plt.figure() plt.axis('off') plt.imshow(image) # 顯示原始RGB圖像plt.figure() plt.axis('off') plt.imshow(H, cmap='gray') # 顯示H分量plt.figure() plt.axis('off') plt.imshow(S, cmap='gray') # 顯示S分量plt.figure() plt.axis('off') plt.imshow(I, cmap='gray') # 顯示I分量plt.figure() plt.axis('off') plt.imshow(S_template, cmap='gray') # 顯示二值飽和度模板plt.figure() plt.axis('off') plt.imshow(F, cmap='gray') # 顯示分割結果plt.show()
    • HSI顏色空間中圖像分割的結果

    2.3.2 RGB顏色空間中的分割

    • RGB顏色空間中的分割算法是最直接的,得到的分割效果較好。
    from skimage import data, color, io from matplotlib import pyplot as plt import numpy as np import mathimage = io.imread(r'Red-Flower.jpg') r = image[:, :, 0] g = image[:, :, 1] b = image[:, :, 2] # RGB顏色空間中的分割 # 選擇樣本區域 r_template = r[128:255, 85:169] # 計算該區域的彩色點的平均向量a的紅色分量 r_template_u = np.mean(r_template) # 計算樣本點紅色分量的標準差 r_template_d = 0.0 for i in range(r_template.shape[0]):for j in range(r_template.shape[1]):r_template_d = r_template_d + (r_template[i, j] - r_template_u) * (r_template[i, j] - r_template_u)r_template_d = math.sqrt(r_template_d / r_template.shape[0] / r_template.shape[1]) # 尋找符合條件的點,r_cut為紅色分割圖像 r_cut = np.zeros(r.shape, dtype='uint8') for i in range(r.shape[0]):for j in range(r.shape[1]):if r[i, j] >= (r_template_u - 1.25 * r_template_d) and r[i, j] <= (r_template_u + 1.25 * r_template_d):r_cut[i, j] = 1 # image_cut為根據紅色分割后的RGB圖像 image_cut = np.zeros(image.shape, dtype='uint8') for i in range(r.shape[0]):for j in range(r.shape[1]):if r_cut[i, j] == 1:image_cut[i, j, :] = image[i, j, :]plt.figure() plt.axis('off') plt.imshow(image) # 顯示原始圖像plt.figure() plt.axis('off') plt.imshow(r) # 顯示R圖像plt.figure() plt.axis('off') plt.imshow(g) # 顯示G圖像plt.figure() plt.axis('off') plt.imshow(b) # 顯示B圖像plt.figure() plt.axis('off') plt.imshow(r_cut) # 顯示紅色分割圖像圖像plt.figure() plt.axis('off') plt.imshow(image_cut) # 顯示分割后的RGB圖像plt.show()
    • 與原始RGB圖像相比,分割后的RGB圖像中綠葉基本被去除,只保留了原始圖像中的紅色花朵。

    • 基于彩色的圖像分割主要利用分量圖像中感興趣區域的顏色特征對感興趣區域進行顏色提取,并弱化背景區域

    • 原始RGB圖像

    • R分量圖像

    • G分量圖像

    • B分量圖像

    • 紅色分割圖像圖像

    • 顯示分割后的RGB圖像

    2.4 彩色圖像的灰度化

    • 灰度圖像能以較少的數據表征圖像的大部分特征,因此在某些算法的預處理階段,需要進行彩色圖像灰度化,提高后續算法的效率。將彩色圖像轉換為灰度圖像的過程稱為彩色圖像灰度化。

    • 在RGB模型中,位于空間位置(x,y)的像素點的顏色用該像素點的R分量、G分量、B分量表示。灰度圖像每個像素用一個灰度值(又稱強度值、亮度值)表示即可。

    • 對RGB圖像進行灰度化處理的常用方法有:最大值灰度化方法、平均值灰度化方法、加權平均灰度化方法。

    • 最大值灰度化方法。將彩色圖像中像素的R分量、G分量和B分量3個數值的最大值作為灰度圖像的灰度值。

    • 平均灰度化方法。對彩色圖像中像素的R分量、G分量和B分量3個數值求平均值作為灰度值。

    • 加權平均灰度化方法。由于人眼對綠色的敏感度最高,對藍色的敏感度最低,因此可以根據重要性對三個分量進行加權平均,得到較合理的灰度值。

    from skimage import data import matplotlib.pyplot as plt import numpy as np# 載入RGB圖像 image=data.coffee() # 初始化灰度圖像 max_gray=np.zeros(image.shape[0:2],dtype='uint8') ave_gray=np.zeros(image.shape[0:2],dtype='uint8') weight_gray=np.zeros(image.shape[0:2],dtype='uint8') for ii in range(image.shape[0]):for jj in range(image.shape[1]):r,g,b=image[ii,jj,:]# 最大值灰度化方法max_gray[ii,jj]=max(r,g,b)# 平均值灰度化方法ave_gray[ii,jj]=(r/3+g/3+b/3)# 加權平均灰度化方法weight_gray[ii,jj]=0.30*r+0.59*g+0.11*b# 顯示結果 plt.subplot(2,2,1) plt.axis('off') plt.title('image') plt.imshow(image) # 顯示原始圖像plt.subplot(2,2,2) plt.axis('off') plt.title('image max_gray') plt.imshow(max_gray,cmap='gray') # 顯示最大值灰度化圖像plt.subplot(2,2,3) plt.axis('off') plt.title('image ave_gray') plt.imshow(ave_gray,cmap='gray') # 顯示平均值灰度化圖像plt.subplot(2,2,4) plt.axis('off') plt.title('image weight_gray') plt.imshow(weight_gray,cmap='gray') # 顯示加權平均灰度化圖像plt.tight_layout() plt.savefig('im.png')

    2.5 小結

    • 本章首先對彩色圖像進行簡要介紹,說明了彩色圖像處理的重要意義。
    • 講述了彩色圖像的顏色空間,RGB顏色空間和HSI顏色空間以及兩種顏色空間的轉換。
    • 講述了偽彩色圖像處理,重點討論了強度分層技術和灰度值到彩色圖像變換技術。
    • 基于彩色的圖像分割,主要討論了基于HSI和RGB的彩色分割。
    • 講述了彩色圖像的灰度化,利用最大值灰度化方法、平均值灰度化方法、加權平均值灰度化方法對RGB圖像進行灰度化處理。

    參考資料

  • 岳亞偉《數字圖像處理與Python實現》人民郵電出版社
  • 總結

    以上是生活随笔為你收集整理的数字图像处理与Python实现笔记之彩色图像处理初步的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。