1.幾何變換可以看成
圖像中物體(或像素)空間位置改變,或者說是像素的移動
仿射變換和透視變換更直觀的叫法可以叫做“平面變換”和“空間變換”或者“二維坐標變換”和“三維坐標變換”.
圖形學的范疇當中,
縮放和旋轉屬於線性變換,
平移變換、旋轉變換屬於剛體變換,
剛體變換和線性變換又屬於仿射變換,
而仿射變換也可以看成投影變換的一種
投影變換定義的是一個可視空間,決定了哪些物體顯示,哪些物體不顯示,以及物體如何顯示。
01.變換的介紹
剛性變換、仿射變換、透視變換和非線形變換等
剛體變換(Rigid Transformation),剛體變換主要是針對旋轉和平移進行的一種變換。
仿射變換(Affine Transformation),仿射變換主要是針對平移、旋轉、縮放、剪切等進行的一種變換
投影變換(Projective Transformation),它可以看為由,的、旋轉、縮放、剪切等變換的組合
非線性變換:如果第一幅圖像中的一條直線經過變換后映射到第二幅圖像上不再是直線,一般用於圖像畸變的配准中
A、剛體變換:平移、旋轉、鏡像(即反轉)。
B、仿射變換:平移、旋轉、鏡像(即反轉),縮放。
C、投影變換:平移、旋轉、鏡像(即反轉),縮放,投影。
D、非線性變換:平移、旋轉、鏡像(即反轉),投影,扭曲。
仿射變換(Affine Transformation)
仿射變換可以通過一系列的原子變換的復合來實現,
包括:平移(Translation)、縮放(Scale)、翻轉(Flip)、旋轉(Rotation)和剪切(Shear)
02.轉換矩陣 ;在數學上,可以使用矩陣來描述這種變換
2.形態學
二值圖形形態學
形態學運算包括:腐蝕運算、膨脹運算、開運算、閉運算、形態學梯度、頂帽運算、黑帽運算
腐蝕 (Erosion)
膨脹 (Dilation)
擴展到灰度圖像
3.顏色模型
RGB格式像素點,會有Red、Green、Blue三個基本像素分量組成
RGB顏色空間與RGB三色中色調、飽和度、亮度
色調、飽和度、對比度和亮度
色調是決定一個像素點中的顏色更偏向於哪一方(RGB)
飽和度在顏色空間中是起到一個控制RGB組合色的顏色深度 鮮艷程度,也稱作純度
度決定顏色空間中顏色的明暗程度
HSV顏色模型
色調H(Hue) 飽和度 S(Saturation) 明度V(Value)
平滑和銳化
opencv 改變圖像的對比度和亮度
YUV
YUV的采樣格式 YUV的存儲格式
人體眼睛對亮度分量(Y)敏感,而對色度分量(U和V)不敏感的原理
YUV的存儲格式分為打包格式(packet formats)
和平面格式(planar formats
4.圖像數據通道
01.圖像數據通道-邏輯表達
代表含義
N - Batch N 表示這批圖像有幾張,
C - Channel C 表示通道數
H - Height H 表示圖像在豎直方向有多少像素,
W - Width W 表示水平方向像素數,
NCHW, CHW 又稱“channels_first”是nvidia cudnn庫原生支持的數據模式;
在GPU中,常使用NCHW格式計算卷積
NCHW 則必須等所有通道輸入准備好才能得到最終輸出結果,需要占用較大的臨時空間。
NCHW 則是 Nvidia cuDNN 默認格式
GPU內存帶寬較大並且並行性強的特點,其訪存與計算的控制邏輯相對簡單
PyTorch:NCHW
NHWC, HWC 又稱“channels_last”,是CPU指令比較適合的方式
N代表數量, C代表channel,H代表高度,W代表寬度 NCHW 其實代表的是[W H C N]
OpenCV在設計時是在CPU上運算的,所以默認 HWC 格式
02.圖像數據通道-物理存儲
邏輯表達上是幾維的數據,
在計算機中存儲時都是按照1D來存儲的。
NCHW和NHWC格式數據的存儲形式
假定N=1,那么NCHW和NHWC數據格式可以很直接的這樣表
5.Python opencv2
cv2.imread
默認加載類型是cv2.IMREAD_COLOR:cv2.IMREAD_COLOR=1:讀入一副彩色圖像,將圖像轉化為三通道BGR彩色圖像
輸出: 圖片讀出來的格式是BGR,不是我們最常見的RGB格式
cv2.cvtColor
cv2.COLOR_BGR2RGB 將BGR格式轉換成RGB格式
cv2.COLOR_BGR2GRAY 將BGR格式轉換成灰度圖片
cv2.warpPerspective() 叫做透視變換。
cv2.warpPerspective()用於解決cv2.warpAffine()不能處理視場和圖像不平行的問題。
warpPolar函數用於實現圖像的極坐標變換
cv2.warpAffine()不能處理視場和圖像不平行的問題
cv2.warpAffine 采用2x3變換矩陣,
cv2.warpPerspective 采用3x3變換矩陣作為輸入
cv2.addWeighted
addWeighted()函數是進行線性加權的
圖像混合(融合,可以設置圖片的透明度
像素深度是指存儲每個像素所需要的比特數
參考
圖解NCHW與NHWC數據格式 https://my.oschina.net/u/4350128/blog/4672943