? ? 目前人工智能Artificial Intelligence主要分為兩大分支:
- 計算機視常見:Computer Vision,簡稱CV
? CV主要是研究如何讓機器看懂世界的一種技術,通過各種光學傳感器來代替人眼對目標物件進行識別,跟蹤和檢測,使機器能夠處理輸入的各種影像和視頻,
- 自然語言處理:Natural Language Processing,簡稱NLP
? NLP主要是研究如何機器讀懂世界的一種技術,最終執行如語言翻譯、智能客服等,
? ? 因為目前所從事的專案都是基于CV的,所以我來總結一下CV的相關知識,從上述簡介可以看CV是要讓機器看懂世界,那么最直觀的就是傳遞影像或視頻給機器,那么我們就需要了解影像和視頻的基本知識,如下所示:
影像基礎知識
? ? 說到影像,最直觀的就是一張靜態圖片,而影像又可以分為位圖影像和矢量影像,
位圖影像
? ? 位圖影像又稱點陣影像或柵格影像,是指由很多個點按照指定的顏色和一定的順序組成的矩形網路,當一張位圖持續放大到一定比例后,便可以很清楚看到每個矩形網格,如下所示:

常見的影像格式擴展名為:JPG、BMP、PNG、JPEG等
矢量影像
? ? 矢量圖也稱為面向物件的影像或繪圖影像,通常由點、直線或多邊形等基于數學物件的幾何圖表示影像,其最大的特點是放大影像后不會失真且和解析度無關,如下所示:

常見的矢量圖格式擴展名為:ai,cdr等,
影像處理的基本概念
- 像素:
組成影像的最基本單元
? ? 像素(pixel,簡寫為px)這個概念,也可以看成是Picture和Element兩個單詞的頭組成,如下所示:
pix~picture~ + el~element~ = pixel
- 像素尺寸
位圖影像長度和高度兩個方向上的像素數目
? ? 我們常說的圖片大小其實就是說這張影像的長和高兩個方向各有多少個像素點,如圖片大小為1920*1080,則意味著長度方向上有1920個像素點,高度方向上有1080個像素點,則總的像素點為:1920*1080=2073600,也就是我們常說的這個影像是200萬像素級別,
- 影像解析度
影像解析度PPI(Pixel Per Inch)指的是每英寸像素數,尺寸相同的情況下,解析度越高,像素點就越小,影像越清晰,
? ? 例1*1英寸的影像,50PPI,則像素總數為:50*50=2500
- 檔案大小
檔案所占用存盤空間的大小
常見影像檔案格式
- PSD
PhotoShop特有的影像檔案格式,可記錄圖層、通道、顏色模式,參考線及檔案資訊屬性,占用空間較大
- JPEG
一種有損壓縮檔案格式,設定了12個壓縮級別,它是將人眼很難察覺的冗余影像和彩色資料去除,因此影像占用存盤空間較小且影像品質受到很少影響,該格式支持RGB、灰度等顏色模式,但不支持Alpha通道和圖層,
- GIF
一種有損壓縮檔案格式,丟失的不是影像的像素,而是影像的色彩,常用于保存為網頁資料傳輸的影像檔案,缺點是不能存盤超過256色的影像,不支持圖層和Alpha通道
- PNG
該影像格式吸取了GIF和JPEG的優點,既有豐富的色彩和較高的壓縮比,又支持透明影像的制作,可邊下載邊顯示,但不支持影片,
- BMP
Windows中的標準影像格式,支持RGB、索引顏色、灰度和顏色模式,但不支持Alpha通道
色彩屬性
- 色相(Hue)
指色彩的種類和名稱,如紅、橙、黃.... 取值范圍 0°~360°,每個角度可以代表一種顏色,常以紅色為0度(360度);黃色為60度;綠色為120度;青色為180度;藍色為240度;品紅色為300度,而我們描述某一物體的顏色時,即是以色相進行描述的,

- 飽各度(Saturation)
常用于表達顏色的強度或純度,即用 0%(純灰色) 至 100%(完全飽和) 的值描述了相同色相下色彩純度的變化,數值越大,顏色中的灰色越少,顏色越鮮艷,呈現一種從灰度到純色的變化,一句話總結就是顏色中的灰色量含量的高低.

- 亮度(Luminance)
常用于表示顏色的相對明暗程度,其作用是控制色彩的明暗變化,同樣使用了 0%(黑色) 至 100%(白色) 的取值范圍,數值越小,色彩越暗,越接近于黑色;數值越大,色彩越亮,越接近于白色,一句話總結就是顏色中混合了多少白色或黑色,

- 對比度
指不同顏色之間的差異,對比度越大,兩種顏色之間的反差也就越大,反之顏色越相近,如提高一張灰度影像的對比度,則會使影像變得黑白鮮明,而降低對比度時,影像中不同部分的顏色則趨于相同,最侄訓使整張影像變為灰色,
色彩模式
- RGB色彩模式
? ? 色彩模式是指用資料表示顏色的一種表示方法,在計算機領域內Red、Grenn、Blue稱之為基色分量,

? ? 通過這三種基色分量依據不同的比例可以調和出不同的顏色,在計算機領域中,RGB的取值為0~255,共256(2^8^)個值,如下所示在Windows自定義顏色

通過RGB混合的方式,我們可計算出所表示的總顏色為256^3^=16777216,這即是大家常見的1600萬色,而每一種可以用8bit來表示,所以表示三種顏色需要占用3*8=24bit,而這個顏色已經超出人眼能夠識別的范圍,故又稱之為真彩色,
- CMYK色彩模式
? ? CMYK是模擬印刷油墨的基本四色表示,以純青色、洋紅色、黃色、黑色去調配顏色,這種方式是以列印紙上的油墨的光吸收特性為基礎的印刷模式,因此彩色印刷叫作四色印刷,
C:Cyan 青色
M:Magenta 品紅色
Y:Yellow 黃色
K:blacK 黑色

- 灰度模式
? ? 指用單一色調表示影像,一個像素的顏色可以用8bit來表示,因此灰度模式的范圍為0~255共256個灰度級別,最高為純黑、最低為純白,即是黑->灰->白的過渡,
灰度模式是不可逆的,一旦轉換就會丟失顏色資訊,
在RGB模式中,三個值相等的時候顯示的就是灰度色彩模式

- Lab模式
? ? 是光度分量和兩個色度分量組成,
L:代表亮度,范圍0~100%,記錄影像的細節,但不記錄顏色
A:從綠到紅的光譜變化,范圍在-120~120
B:從藍到黃的光譜變化,范圍-120~120

- 位圖模式
? ? 彩色影像去掉彩色資訊就變為灰度模式,那灰度模式去掉灰度資訊,就只剩下黑與白,這種情況下,我們稱之為位圖模式,

- 索引模式
? ? 根據影像中的像素來查找顏色,將查找的顏色定義為一個顏色表,用以存放并索引影像 中的顏色,索引影像最多只可包含256種顏色,因此容易出現失真的情況,
示例代碼
? ? 以上總結了這么多,下面我們來使用OpenCV動手實踐一下,示例代碼如下所示:
import cv2
import numpy as np
# 原始圖片
imgPath=r"F:\編程資料\編程工程\OpenCV學習筆記\04其他\01測驗圖片\TestImage.jpg"
# 保存為灰度圖片
saveImgAsGrayPath=r"F:\編程資料\編程工程\OpenCV學習筆記\04其他\01測驗圖片\SaveAsGrayImg.png"
# 保存為LAB模式圖片
saveImgAsLabPath=r"F:\編程資料\編程工程\OpenCV學習筆記\04其他\01測驗圖片\SaveAsLABImg.png"
# 保存為位圖圖片
SaveImgAsBitPath=r"F:\編程資料\編程工程\OpenCV學習筆記\04其他\01測驗圖片\SaveAsGrayBit.png"
# 以彩色模式讀入
img=cv2.imdecode(np.fromfile(imgPath,dtype=np.uint8),cv2.IMREAD_COLOR)
# 保存灰度影像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imencode(".jpg",gray)[1].tofile(saveImgAsGrayPath)
# 保存為LAB模式
lab=cv2.cvtColor(img,cv2.COLOR_BGR2LAB)
cv2.imencode(".jpg",lab)[1].tofile(saveImgAsLabPath)
# 轉換為位圖模式
binaryImg=cv2.imdecode(np.fromfile(saveImgAsGrayPath,dtype=np.uint8),cv2.IMREAD_GRAYSCALE)
_,binary=cv2.threshold(binaryImg,100,255,cv2.THRESH_BINARY)
cv2.imencode(".jpg",binary)[1].tofile(SaveImgAsBitPath)
最終生成的結果如下所示:

本文同步在微信訂閱號上發布,如各位小伙伴們喜歡我的文章,也可以關注我的微信訂閱號:woaitest,或掃描下面的二維碼添加關注:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/62230.html
標籤:其他
