色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

技術知識查漏補缺!這可能是最全的圖像相關知識總結

新機器視覺 ? 來源:新機器視覺 ? 2023-08-14 12:41 ? 次閱讀

導讀

圖像相關知識點匯總大全。

注:本文記錄筆者日常工作中接觸到的圖像相關知識,純個人技術隨筆,不作為講解用。

圖像的組成

圖像的通道與深度

深度:將計算機中存儲單個像素所用的bit位,稱為圖像的深度

例如:

28493772-39de-11ee-9e74-dac502259ad0.jpg

通道:描述一個像素點,如果是灰度圖,只須用一個數值來表示,就是單通道。如果一個像素點有RGB三種顏色來描述,就是三通道,如果用RGB+alpha來描述,就是4通道

285982f8-39de-11ee-9e74-dac502259ad0.png

曝光:接觸光的多少

2877e734-39de-11ee-9e74-dac502259ad0.png

圖片的內存大小:長* 寬* 一個像素所占內存的大小

一個像素所占內存的大小,稱為色深(depth,是指一個像素用多少位表示)。例如Nokia老S40機器顏色數為4096色,即為2^12, 則一個像素所占的內存空間為1.5個字節(一個字節8位,1.5個字節,即為12位)。新S40機器顏色數位65536色,即為2^16, 則一個像素所占內存大小為2個字節。

opencv中,RGB三個通道分別用8位表示,所以一個像素為24位(8*3=24),故一個像素占3個字節。

彩色圖像轉化為灰度圖像

人眼對綠色的敏感程度性最高,對藍色最低,所以可用加權平均法得到灰度圖像,例如:

2893f528-39de-11ee-9e74-dac502259ad0.png

圖像的色彩量化(減色處理)

將彩色圖像的值由256^3壓縮至4^3, 即將RGB的值只取32,96,160,224

28acd354-39de-11ee-9e74-dac502259ad0.png

圖像的卷積與池化:

卷積公式:Convolution formular

28c73d70-39de-11ee-9e74-dac502259ad0.png

卷積:在一個方框內,對每個像素值做“加權平均”

池化:最常見的有最大值,最小值,平均值池化(即在一個方框內,取最大值,最小值,平均值)

引申:

對于數列{a_n},{b_n},二者的卷積為(類似點積):

28d57962-39de-11ee-9e74-dac502259ad0.png

例如:

2個骰子,第一個骰子有8面:2面刻著1,1面刻著2,3面刻著3,2面刻著4.第二個骰子有6面,其中3面刻1,2面刻2,1面刻3.將2個骰子一起投一次,求點數之和為4的概率.

整理得到:

28e7d7ce-39de-11ee-9e74-dac502259ad0.jpg

本題用卷積,可以很快寫出來.

設第一個骰子投出n的概率為a_n,第2個骰子投出m的概率為b_m, 那么投出點數之和為4的概率為:

28f93ef6-39de-11ee-9e74-dac502259ad0.png

由于第2個骰子投出0的概率為0,所以b0用0代替.所以結果為:

290c9316-39de-11ee-9e74-dac502259ad0.png

(其實就是枚舉的思想,只不過是用卷積來建立數學模型)

色彩空間:

RGB色彩空間:

常用于圖像中,RGB3個通道,可能還要加一個alpha通道(表示透明程度),所以一個像素常用24bit或32bit來表示。

色深:用于表現顏色的二進制的位數。如我們要表示8種顏色,只需要3個二進制位,故色深為3. QBitmap的色深為1,故只能表示2種顏色,即黑與白。(通常表示維一個像素用多少位表示)

YUV色彩空間:

常用于視頻處理中,YCbCr是YUV的一個具體實現。

Y:代表亮度,Luminance或Luna

U,V:代表2個不同的顏色部分,通常為blue和Red,所以也稱CbCr(Chrominance或Chroma)

YUV:是對RGB重新編碼,將明度與色彩分開,因為人眼對明暗變化更明暗一些。同時也是為了兼容黑白電視。Y通道就是直接輸入黑白電視(灰度圖),UV通道信號主管色彩。

HSV顏色空間

H: Hue, 色相,色調, 顏色,取值范圍為[0,179]

S: Saturation, 飽和度,色彩純凈度(深藍,淺藍),取值范圍為[0,255]

V: Value, 明度,亮度(光照等明暗的程度)

H為色調(即哪一種顏色),H固定,S減小,相當于往顏色中添加白色;S增大,說明顏色越鮮艷。V減小,相當于往顏色中添加黑色,V為0,整個顏色呈現黑色

引申:

WebRTC:Web Real Time Communication,Web即時通信

FFmpeg:Fast Forward Motion Picture Experts Group,快進動態圖像專家組,是視頻處理最常用的開源軟件

AV:Audio& Video,音頻常見的編碼格式有mp3,aac, 視頻常見的編碼格式有h262,h264,h265

形態學操作(7種)

腐蝕:cv2.erode

膨脹:cv2.dilate

開運算:先腐蝕,再膨脹(去毛刺)

閉運算:先膨脹,再腐蝕

梯度運算:膨脹-腐蝕(得到輪廓)

禮帽(tophat):原圖像-開運算(得到毛刺)

黑帽(blackhat):閉運算-原圖像(小的輪廓)

圖像處理(9種)

圖像轉化:轉化為灰度圖,hsv圖

二值化:cv2.threshold

平滑/濾波與梯度算子:

291e7810-39de-11ee-9e74-dac502259ad0.jpg

4. 直方圖(2個):計算直方圖,直方圖均衡化

5. 幾何操作:縮放,剪切,移位,旋轉,鏡像
cv2.getAffineTransform, cv2.wrapAffine

6. 特效(6個)
圖像底板(255減法)
馬賽克:用一個值來替換方框中所有的值
毛玻璃:用方框中隨機一個值來替換方框中所有的值
圖片融合:cv2.addWeighted
浮雕:相鄰兩個像素相減(突出邊緣),再加上一個恒定值,例如150
油畫:

7. 圖片美化:
直方圖均衡化
修補(cv2.inpaint,要用到mask)
亮度增強
磨皮美白(雙邊濾波)

8. 畫線條,矩形,加文字

傅里葉變換的圖像應用:

高頻:像素值變化劇烈的地方,如邊界
低頻:像素值變化緩慢的地方,如一片大海

低通濾波器:只保留低頻,會使得圖像模糊
高通濾波器:只保留高頻,會使得圖像細節增強

通過傅里葉變換,可以將某一頻率圖像部分去除

直方圖均衡化:

直方圖特征:

直方圖表示的是所選圖片的灰度值分布的示意圖。X軸代表灰度值,y軸對應相應灰度值的像素點個數。

在RGB圖像中,直方圖是通過計算每個通道的灰度值得到的。

2930e43c-39de-11ee-9e74-dac502259ad0.png

一般正常的直方圖,是中間高,兩邊低。圖像中最左邊有高度,說明圖片上有陰影;最右側有高度,說明圖片有高光。

均衡化原理:

屬于圖像增強的一種技術(可以使圖像更亮一些,可以增強圖像對比度),適合處理過亮或過暗的圖像。將過于集中的灰度像素分散開。

利用累計概率實現,灰度值大的像素對應大的累計概率

新灰度值=累積概率(每個像素會有所不同)* 灰度最大值(這個是不變的)

圖像操作代碼示例:

水平方向翻轉

以8*8圖像,一維線性表示為例

294eb1e2-39de-11ee-9e74-dac502259ad0.jpg

經過觀察發現:

第一行:0+7+1= 8 = 8 * 1 =8 * (0+1)

第一行:8+15+1= 24= 8 * 3 =8 * (1+2)

第一行:16+23+1= 40 = 8 * 5 =8 * (2+3)

。。。

分析可得:每一行首尾兩個元素相加的結果為:width* (RowIdx+RowIdx+1)-1

所以,對于一張圖像的一維表示,對其進行水平翻轉的程序為:

295bffd2-39de-11ee-9e74-dac502259ad0.jpg

順時針方向翻轉

先轉置,再水平翻轉

296dcc4e-39de-11ee-9e74-dac502259ad0.png

圖像如果以二維表示,則轉置的操作十分簡單:

Array[i] [j]=Array[j] [i]

如果圖像以一維表示(如上圖),進行轉置操作,要先計算出行號和列號才行。

濾波:

圖像,也可以理解為各種色彩波的疊加。

298f3cf8-39de-11ee-9e74-dac502259ad0.jpg

常見的幾種濾波器:

方框濾波(box filter),中值濾波(median filter),均值濾波(mean filter),高斯濾波

用標準差為sigma的高斯濾波,進行2次濾波,等于用標準差為sqrt(2)* sigma的高斯濾波進行一次

二維高斯濾波可以轉化為2個一維高斯濾波

29afe066-39de-11ee-9e74-dac502259ad0.png

4. 用卷積進行銳化的一個公式(拉普拉斯高斯)

29d359ec-39de-11ee-9e74-dac502259ad0.jpg

思考:圖像可以利用卷積求取邊緣,而點云直接就能獲取物體的邊緣。

5. 利用卷積求導
patial derivative:偏導

29ecbdf6-39de-11ee-9e74-dac502259ad0.jpg

圖像的梯度算子:Sobel算子,Scharr算子,Laplacian算子

29fd346a-39de-11ee-9e74-dac502259ad0.png

6. 圖像梯度

2a46bc7a-39de-11ee-9e74-dac502259ad0.jpg

7. 求導操作對于有噪聲圖像十分敏感:因此常常先去噪,再求導

2a596bb8-39de-11ee-9e74-dac502259ad0.jpg

8. 圖像金字塔(2種):

2a68a970-39de-11ee-9e74-dac502259ad0.png

高斯濾波與其一階導,二階導

高斯濾波:低通濾波,圖像變平滑,便模糊

高斯一階導:高通濾波, Canny算子求邊緣

高斯二階導:高通濾波,LOG算子(用于求尺度)

一階導可以提取圖像灰度梯度的變化情況,二階導可以提取圖像的細節(如何理解??),同時響應圖像梯度變化情況。

2a7fb796-39de-11ee-9e74-dac502259ad0.png

引申:高斯函數在圖像中的應用

一維高斯函數:

2a925f86-39de-11ee-9e74-dac502259ad0.png

2aab0806-39de-11ee-9e74-dac502259ad0.png

不同均值,方差,振幅的高斯曲線對比:

2ac85ea6-39de-11ee-9e74-dac502259ad0.jpg

二維高斯函數的分布(x與y兩個維度的分布,都是一維的高斯分布,因此俯視圖來看,是一個橢圓):

2ae7707a-39de-11ee-9e74-dac502259ad0.png

圖像為:

2afd14fc-39de-11ee-9e74-dac502259ad0.jpg

高斯分布的曲線如上圖,越靠近中心,取值越大,越遠離中心,取值越小;現實意義是:越接近中心,影響力越大,越遠離中心,影響力越小。

這樣的特性,可用于權值分配:越接近中心,權值越大,越遠離中心,權值越小。

圖像的模糊:是一種計算“加權平均值”的過程

2b11b18c-39de-11ee-9e74-dac502259ad0.png

在數值上,這是一種“平滑化(smoothing)”,在圖像上,就會產生模糊效果,此時各個點的權值是一樣的,但顯然不合理,因為圖像都是連續的,越靠近的點關系越密切,越遠離的點越疏遠。因此,加權平均更合理,越靠近的點,權重越大,越遠離的點,權重越小。此時就可以用正態分布(即高斯分布)來分配權重。

高斯函數由3個參數確定:幅值(有多高),中心坐標,標準差(有多寬)

(在圖像鄰域內,還會有一個ksize,代表高斯核的大小,例如若ksize=3,則該高斯核為3*3的矩陣)

雙邊濾波Bilateral Filter: 做邊緣保存

用高斯濾波去噪,會將邊緣模糊掉,對高頻細節的保護并不明顯。

雙邊濾波:結合圖像的空間臨近度和像素值相似度的折衷方法。比高斯濾波多了一個高斯方差,在邊緣附近,離的較遠的像素不會過多的影響邊緣上的像素值

卷積的作用:

2b41a86a-39de-11ee-9e74-dac502259ad0.png

引申:

梯度與方向導數:

方向導數是一個數,代表著沿著某一個方向的變化量

梯度是一個向量

方向導數達到最大時,此時的方向就是梯度方向,此時的方向導數,即為梯度的模

梯度的理解:

可理解為斜度。即曲面沿著某一個方向的傾斜程度(其實是方向導數)

表示某一函數在該點處的方向導數沿著該方向(梯度方向)取得最大值,即該函數沿著梯度方向,變化最快(變化率最大)

在圖像領域中,梯度表示像素灰度值變化的速度

2b5145ae-39de-11ee-9e74-dac502259ad0.jpg

OpenCV相關:

OpenCV庫結構:

OpenCV文件夾結構(解壓之后,會有2個文件夾:source和build):

Souce文件夾下:

module/core:最核心的數據結構與基本運算

module/highgui:圖像的讀取,顯示,存儲等UI接口

module/imgproc:圖像處理的方法,如幾何變換,平滑。。。

feature2d:用于提取特征

nonfree:專利算法,如SIFT

objdetect:目標檢測,如人臉識別的Haar,LBP特征;基于HOG的行人,車輛等目標檢測

stitching:圖像拼接

ml:機器學習

video:視覺處理,如背景建模,運動物體跟蹤,前景檢測

build文件夾下:

doc/opencvrefman.pdf: 函數手冊

doc/opencv_tutorials.pdf:函數使用手冊

include文件夾:OpenCV的頭文件

x86與x64文件夾:針對32位和64位的dll和lib庫

python:python API

java:java API的JAR包

OpenCV的幾何變換

仿射變換:

仿射函數:最高次數為1的額多項式函數。常數項為0的仿射函數稱為線性函數。

從R^n到R^m的映射x-> Ax+b稱為仿射變換,其中A為一個m* n矩陣,b為一個m維向量。

線性變換(旋轉,縮放)+平移

2b916b20-39de-11ee-9e74-dac502259ad0.png

齊次坐標形式為

2ba47058-39de-11ee-9e74-dac502259ad0.png

順時針旋轉alpha角的仿射矩陣:

2bbd0866-39de-11ee-9e74-dac502259ad0.png

逆時針旋轉alpha角的仿射矩陣:

2bd39f0e-39de-11ee-9e74-dac502259ad0.png

縮放矩陣:

2be4552e-39de-11ee-9e74-dac502259ad0.png

以上都是以原點(0,0)為中心的。

若以任一點(x0,y0)為中心,逆時針旋轉alpha,則將(x0,y0)移動到原點,旋轉alpha后再移動回來。仿射矩陣為:

2c1ef814-39de-11ee-9e74-dac502259ad0.png

同樣,以(x0,y0)為中心,縮小2倍的仿射矩陣為:

2c328ae6-39de-11ee-9e74-dac502259ad0.png

如果Sx與Sy相等,可直接調用OpenCV函數getRotationMatrix2D,例如如獲得以(40,50)為中心,逆時針旋轉30度縮小2倍的仿射變換矩陣:

2c4302c2-39de-11ee-9e74-dac502259ad0.png

注意:返回的矩陣A是2*3,因為仿射矩陣最后一行都是0,0,1

計算仿射矩陣時,也可以通過src和dst兩個矩陣,如:

2c64603e-39de-11ee-9e74-dac502259ad0.png

得到仿射矩陣后,使用wrapAffine函數將該變換 作用到圖像上

投影變換:

2c77ba8a-39de-11ee-9e74-dac502259ad0.png

幾種變換的區別:

剛體變換:又叫等距變換,等于平移+旋轉,3個自由度(旋轉1個,平移2個)
剛體運動,保證了同一個向量在各個坐標系下的長度和夾角都不會發生變化。這種變換叫做歐式變換。一個歐式變換,由一個旋轉和一個平移兩部分組成。

相似變換:剛體變換+縮放

2c8ebfd2-39de-11ee-9e74-dac502259ad0.png

有4個自由度,即旋轉,x方向平移,y方向平移,縮放因子s
相似變換前后長度比,夾角保持不變(跟相似三角形類似)

3. 仿射變換:
通過一系列原子變換復合實現(5個):平移(tranlation),縮放(scale),旋轉(rotate),翻轉(flip),錯切(shear)。
其中錯切又分為水平錯切(水平軸上的邊不變)與垂直錯切(垂直軸上的邊不變)

2c9bc786-39de-11ee-9e74-dac502259ad0.jpg

其中變換矩陣的第三行必須是:0,0,1

投影變換(Projection Transformation)
又稱透視變換(Perspective Transformation),也叫射影變換,含有8個自由度(為什么是8個,而不是9個)

2cb051ec-39de-11ee-9e74-dac502259ad0.png

當投影矩陣的最后一行為(0,0,1)時,即為仿射變換。
仿射變換中,左上角的2 * 2 矩陣正交時,即為歐式變換(即為剛體變換),當左上角2 * 2矩陣的行列式為1時,為定向歐式變換。
所以投影矩陣包含仿射矩陣,仿射變換又包含歐式變換(剛體變換)
投影變換(Perspective Transformation)=單應性變換(homograph)+直射變換(collination)

引申:

單應矩陣:同一平面山的點在不同視角下的關系

2cbf75f0-39de-11ee-9e74-dac502259ad0.png

解析變換矩陣

2ccdf60c-39de-11ee-9e74-dac502259ad0.jpg

OpenCV的Mat類:

Matrix,位于core.hpp中

Mat m=Mat(2,3,CV_32FC(1)); //創建2*3 矩陣,F指float型,1是指單通道

也可以使用size類,注意:size的第一個參數為寬(即列數),第二個參數為高(行數),即如果創建2*3數組:
Mat m=Mat(Size(3,2),CV_32FC(1));
此時m.size()輸出為3*2,即寬 * 高,寬是3,高是2,即2行3列

如果要將二維矩陣的元素變為點的坐標,可以將

2ce5efd2-39de-11ee-9e74-dac502259ad0.jpg

4. Mat 的成員變量ptr指向第一行首地址
每一行的元素在存儲上都是連續的,但行與行之間可能含有間隔,可以用m.isContinuous()來判斷行與行之間是否由間隔。

5. Mat的成員變量step和data
data指向第一個數值的指針,類型為uchar
step[0]代表每一行所占的字節數(包括行與行之間的間隔)
step[1]代表每一個數值所占的字節數
例如:若要訪問一個int型單通道矩陣第r行第c列,可用

2d067e3c-39de-11ee-9e74-dac502259ad0.png

(int * )是因為m.data為uchar,所以要作類型轉換

OpenCV相機標定(Camera Calibration)

相機標定,簡單來說就是世界坐標系轉換到圖像坐標系的過程(世界坐標系--》相機坐標系--》圖像坐標系),也就是求最終的投影矩陣P的過程。

相機外參R,t:從世界坐標系轉換到相機坐標系。這一步是從三維點到三維點的轉換

相機內參:從相機坐標系到圖像坐標系,這一步是三維點到二維點的轉換

(這一部分其實是跟圖形學中正交變換和投影變換非常相關,放到圖形學知識中再寫)

常見的C++線性代數庫:

DCMTK:處理dicom圖像的庫

Eigen:開源的C++線性代數庫,opencv中常用。示例代碼如下:

#include Eigen::Matrix3dw=Eigen::Zero(); ... Eigen::JacobiSVDsvd(w,Eigen::ComputeFullU|Eigen::ComputeFullV); Eigen::Matrix3dU=svd.matrixU(); Eigen::Matrix3dV=svd.matrixV();

上面幾行代碼就將w矩陣進行svd分解,求解了U與V。

還有一種常見的C++線性代數庫:Armadillo(犰狳)

BLAS,CUBLAS與LAPACK

BLAS:Basic Linear Algebra Subprograms, 基礎線性代數子程序集

CUBALS:BLAS在GPU計算技術下的版本

LAPACK: Linear Algebra Package, 線性代數包( BLAS 是LAPACK的一部分 ), 美國國家基金資助的著名公開軟件,包含了求解科學與工程計算中最常見的數值線性代數問題:如求解線性方程組,線性最小二乘問題, 特征值問題,奇異值問題等.

大津法(otsu算法)

最大類間方差法。找到一個閾值,使得背景與前景之間的方差差距最大(二分類問題)

假設存在一個閾值threshold,將圖像像素分為兩類C1(小于threshold)和C2(大于threshold),這兩類像素各自的均值為m1,m2,圖像的全局均值為mg,同時像素被分為C1和C2的概率分別為p1,p2,則有:

2d1d1016-39de-11ee-9e74-dac502259ad0.png

同時,根據方差的概率,類間方差可計算得:

2d2b004a-39de-11ee-9e74-dac502259ad0.png

進一步化簡,可得:

2d3b6f20-39de-11ee-9e74-dac502259ad0.png

大津法就是找到一個閾值,使得sigma^2達到最大(在0-255遍歷每一個灰度值,計算p1,p2,m1,m2)

引申:能否用于決策樹???與2020年10月5日的LDA類似,見2020年8月24日

圖像的局部特征

角點:Harris算子,SuSAN算子,FAST算子

梯度特征點:SIFT,SURF,GLOH,ASIFT,PSIFT算子

邊緣特征(線型):Canny算子,Marr算子

紋理特征:灰度共生矩陣,小波Gabor算子

LBP特征:Local Binary Pattern局部二進制模式

原始的LBP算子被定義為3 * 3 窗口,以中心像素為閾值,相鄰的8個像素與閾值進行比較,大于則記為1,小于則標記為0,3* 3區域內的8個臨近點,可用8為二進制數表示,最終可表示0~255的十進制數,即LBP碼,最終用這個值來表示該區域的紋理信息

常常采用LBP特征譜的統計直方圖來作為特征向量,用于分類識別,如人臉分析,紋理分類。

Harris角點檢測

(缺一個實際計算的例子)

1 當窗口位于平坦區是,任意方向移動,都沒有灰度變化;當窗口位于邊緣時,沿邊緣方向移動,灰度無變化;當窗口位于角點時,沿任意方向移動,灰度都有明顯變化。

2 ,

2d4d53d4-39de-11ee-9e74-dac502259ad0.png

其中w(x, y)為權值矩陣(一般用高斯函數),u,v表示沿x方向和y方向移動的距離,I(x, y)表示圖像灰度

3, 根據泰勒展開

2d6a88fa-39de-11ee-9e74-dac502259ad0.png

所以E(u,v)可以寫成

2d783388-39de-11ee-9e74-dac502259ad0.png

其中,M矩陣為

2d89d908-39de-11ee-9e74-dac502259ad0.png

E(u, v)可表示成一個二次函數,

2d96dcca-39de-11ee-9e74-dac502259ad0.png

該二次函數本質上是一個橢圓(橢圓的標準方程:x^2 / a^2 + y^2 / b^2 = 1),橢圓的長短軸由M矩陣的特征值lamda1,lamda2決定,M矩陣可以變化為

2daa71b8-39de-11ee-9e74-dac502259ad0.png

當λ2 >> λ1或λ1 >>λ2時,為邊

當λ1和λ2都較大,且λ1和λ2相差不多時,為角點

當λ1和λ2都較小時,為平坦區

計算角點時,無需計算λ1和λ2,可以由以下公式近似計算:

2e0edbda-39de-11ee-9e74-dac502259ad0.png

alpha為一常數,通常取0.04~0.06

計算梯度時

2e27a606-39de-11ee-9e74-dac502259ad0.png

最終計算求得每個像素的R值。

行人檢測:HOG+SVM

HOG:Histogram of Oriented Gradient, 方向梯度直方圖

統計一定區域內的像素的梯度和其方向,生成描述子。

例如一個cell中8*8 像素,統計9個方向的梯度信息(9個bin),則計算出8 * 8像素的梯度和其方向,同時按照每360/9=40度統計梯度方向,制作成直方圖。最后每個cell對應一個9維的特征向量。

同時也可以將多個cell組成一個block,例如2 * 2 cell組成一個block,則一個block對應一個2* 2 *9 =36維特征。

實際應用中,通常取固定大小的滑動窗口來提取HOG特征,例如:窗口大小設置為64 * 128,每8 * 8 個像素組成一個cell,每2 * 2 個cell組成一個block,一共有(8-1)* (16-1)=105個block,則每個窗口的特征維度為105 * 36 =3780

行人重識別(ReID:Person Re-Identification)

利用CV技術判斷圖像或視頻序列中是否存在特定行人得技術。

數據集分為:訓練集,驗證集,Query,Gallery。訓練集與驗證集上訓練模型,然后利用模型對Query和Gallery中的圖片提取特征計算相似度,對于每個Query在Gallery中找出前N個與之相似的圖片。

2個大方向:特征提取,度量學習

存在的挑戰:攝像機低分辨率,遮擋,視角/姿勢變化,光照

人臉檢測:Haar + Adaboost

2e36c58c-39de-11ee-9e74-dac502259ad0.png

Haar模板:OpenCV中有14個模板,最早只有4個模板

2e4d2368-39de-11ee-9e74-dac502259ad0.jpg

計算方法:sum(白)-sum(黑),選擇不同類型的模板(模板大小,模板位置)可以得到不同的特征值。

積分圖:Integral Image, 又叫Summed Area Table。Harr特征的計算需要重復計算目標區域的像素值,使用積分圖可以大大減少計算量。

記點(x,y)處的像素值為I(x,y)則

2e5d74d4-39de-11ee-9e74-dac502259ad0.png

Adaboost:通過級聯方法(Cascade)將多個弱分類器(CART決策樹)變成一個強分類器:要計算每個所分類器的誤差率,要用到指數損失函數

2e847192-39de-11ee-9e74-dac502259ad0.png

OpenCV還支持LBP + Adaboost 和HOG+Adaboost的方法進行人臉識別

Canny邊緣檢測

用高斯一階偏導核對圖像進行濾波,求出梯度圖的幅值與方向

非極大值抑制:將“寬”的邊緣變為“窄”的邊緣

用高閾值先找到邊緣,用低閾值再找出與邊緣相連的邊緣(去除偽邊緣)

RANSAC:Random Sample Consensus

隨機采樣一致性:在一堆樣本點中,隨機取2個點做一條直線,同時設定一個閾值T,統計樣本點到該直線的距離小于T的點的個數(內點), 反復迭代取樣本點,做直線,找出內點最多的那條直線。

除此之外,還可以用RanSAC找匹配點。

霍夫變換:

直角坐標系中的一條直線y=ax+b,也可以寫成b=-ax+y,此時當(x,y)固定時,b=-ax+y也是一條直線,只不過是在參數空間(霍夫空間)中
即直角坐標系中的一條直線y=ax+b,對應霍夫空間中的一個點(a,b),同理霍夫空間上的一條直線b=-ax+y,對應于直角坐標系中的一個點(x,y)

直角坐標系兩點確定一條直線,對應于霍夫空間中兩條直線的交點;直角坐標系三點共線,對應于霍夫空間中三條直線的交點

由于y=ax+b無法表示斜率為無窮的情況(即垂直于x軸的直線),故考慮將笛卡爾坐標系換為極坐標系。

2e9d3b28-39de-11ee-9e74-dac502259ad0.png

此時,直角坐標系中的一個點(x0,y0)對應于霍夫空間中p-theta的一條曲線;直角坐標系中三點共線,即對應于霍夫空間p-theta中三條曲線的交點

4. 檢測一個圓
霍夫變換的思想為:找到一個共性。檢測直線,則斜率與截距為不變的(或p與theta)。檢測圓,則圓心與半徑是不變的。也是在參數空間(圓心---半徑)中找到多條曲線相交的點,此時即找到了圓。

Log變換(注意不是LOG算子)與Box-Cox變換

Log變換:用于穩定方差,可將傾斜分布,轉換為正態分布,可使圖像更亮(應為log函數對低值擴展更強)

Box-Cox變換:用于連續的變量不滿足正態分布的情況。

LOG算子和DOG算子:

LOG算子:Laplace Of Gaussian, 通過對圖像的二階導的零值來進行邊緣檢測。由于微分運算對噪聲比較敏感,所以LoG是先對圖像進行高斯平滑,再使用Laplace算子進行邊緣檢測(LoG算子可以求尺度)

DoG算子:Difference of Gaussian,高斯函數的差分,將圖像在不同sigma參數下的高斯濾波結果相比,得到差分圖。

因為DOG算子在計算上比較簡單,所以常用DOG算子來替代LOG算子。

二者相差k-1倍,但不影響極值點的檢測

2edd0e6a-39de-11ee-9e74-dac502259ad0.png

二階導與凹凸性

一階導的正負,代表函數值f(x)的增大或減小

二階導的正負,代表的是斜率(斜率即一階導)的增大或減小

凹凸的定義:

2ef3b6a6-39de-11ee-9e74-dac502259ad0.jpg

從二階導的正負也能判斷出凹凸性

二階導為正,說明斜率越來越大,即凹函數(注意看上面的圖像)

二階導為負,說明斜率越來越小,即凸函數

二階導為0,說明斜率的變化率為0,即保持同一斜率(變化率)

常見的插值法

2f0a21ca-39de-11ee-9e74-dac502259ad0.png

以上三種是最最常見的插值方法,除此之外,還有以下幾種插值:

2f247fca-39de-11ee-9e74-dac502259ad0.jpg

其中最常見的兩種多項式插值法為:

2f387eee-39de-11ee-9e74-dac502259ad0.png

樣條插值:每兩個點確定一個函數,每個函數就是一個樣條,函數不同,樣條就不同,所以定義中說“可變樣條”,然后把所有樣條分段結合成一個函數,就是最終的 插值函數。

引申:

圖片的放大與縮小———插值原理(最近鄰插值與雙線性插值)

例如一個3*3 的256灰度圖,像素矩陣(記為src圖)為:

2f4b58d4-39de-11ee-9e74-dac502259ad0.png

將其放大為4*4的圖像(記為dst圖):

2f587488-39de-11ee-9e74-dac502259ad0.png

最近鄰插值的公式為:

2f697670-39de-11ee-9e74-dac502259ad0.png

4*4 圖像中(0, 0)處的值為:(0 * 3/4, 0* 3/4)=(0,0)

即4*4 圖像中(0, 0)處的值,即為src途中(0,0)處的圖

4*4 圖像中(1, 0)處的值為:(1 * 3/4, 0* 3/4)=(0.75,0),為原來src圖中(0.75,0)處的值,此時會采用四舍五入的方法,即src圖中的(1,0)處

依此方法,4* 4 矩陣計算求得:

2f7958d8-39de-11ee-9e74-dac502259ad0.png

這種算法是最簡單的圖像縮放算法,效果也是最不好的:放大由馬賽克,縮小由失真(因為采用了四舍五入的方法)。這種方法不科學,因為當坐標為0.75時,不應該就簡單的取為1,而是利用源圖這個虛擬點四周的4個真實點按照一定的規律計算出來。此時就引入了雙線性插值。

雙線性插值:在x和y方向,分別做線性插值

2f8920d8-39de-11ee-9e74-dac502259ad0.jpg

已知Q11,Q12,Q21,Q22這4個點的坐標和這4個點的值,現給出P點坐標,求P點的值。此時就要用到雙線性插值(先求R1,R2的值,然后再求P點的值)

雙線性插值的公式為:

2f99e756-39de-11ee-9e74-dac502259ad0.png

例如dst圖中(1,1)處,由最近鄰插值得到的dst圖坐標為(0.75, 0.75), 該點是一個虛擬點,應該由其四周的4個點(0,0), (0,1), (1,0), (1,1)決定。

由于(0.75, 0.75)離(1, 1)要更近一些,那么(1,1)處所起的作用就更大一些。由公式的系數uv=0.75* 0.75可體現。而(0.75, 0.75)離(0, 0)要遠一些,那么(0,0)處所起的作用就更小一些。由公式的系數(1-u)(1-v)=0.25* 0.25可體現。

NLM去噪算法

Non Local Means, 非局部平均。

原理:假設同一幅圖像上,有很多相似的紋理,因此再有噪聲的區域,可以通過某種方式情況下,將相似的紋理區域來替換噪聲區域,從而達到較好的去噪效果,并且不太多的損失細節。

圖像增強算法

直方圖均衡化,拉普拉斯LOG,gamma 變換

圖形增強,常見于對圖像的亮度,對比度,飽和度,色調等進行調節,增加其清晰度,減少噪點。圖像增強往往是多個算法的組合,一般流程為:圖像去噪,增加清晰度(對比度),灰度化或者獲取圖像邊緣特征(對圖像進行卷積),二值化等等。圖像增強方法不同,應用領域不同,事件中需要靈活掌握多張方法。

圖像去噪:等同于低通濾波器(噪聲是高頻)
增加清晰度:為高通濾波器

圖像領域中,微分是銳化,積分是模糊

2fb96716-39de-11ee-9e74-dac502259ad0.png

圖像銳化:使灰度反差增強,使模糊圖像變得清晰

圖像模糊:圖像收到平均運算或積分運算。

微分運算, 能夠突出圖像細節,使圖像變得更加清晰,laplus是一種微分算子,它的應用可增強圖像中灰度突變的區域,減弱灰度的緩慢變化區域。

圖像增強:對數log變換

由于對數函數曲線在像素值較低的區域斜率大,在像素值較高的區域斜率小,所以經過對數變換,圖像較暗區域的對比度將有所提升,增強了圖像的暗部細節。

圖像增強:Gamma變換

2fe16838-39de-11ee-9e74-dac502259ad0.png

主要用于圖像的校正,增強圖像對比度,適用于灰度過高或灰度過低的圖片修正。對于對比度偏低,并且整體亮度偏高(相機過曝)情況下的圖像,增強效果明顯。

r值以1為分界,值越小,對低灰度部分的擴展作用就越強(此時類似于log變換);值越大,對圖像高灰度部分的擴展作用就越強(此時類似于指數變換)。通過不同的r值,就可以增強低灰度(或者高灰度)部分細節的作用。

2ff30f3e-39de-11ee-9e74-dac502259ad0.jpg

一種增強圖像對比度的方法:

大的越大,小的越小(可以寫一篇論文), 例如[10, 30]變為[-10, 50],可以用以下方法

求均值:(10+30)/2=20

求均值范圍[10-20, 30-20] 即為[-10,10]
乘系數,假設為2,即[-10, 10]* 2=[20, 20]

應用到原范圍:[10,30]+[-20, 20]=[-10,50]

圖像壓縮:

圖像壓縮:svd,傅里葉變換,基變換(使用小波基與傅里葉基,JEEG使用的是傅里葉基)

300b8cbc-39de-11ee-9e74-dac502259ad0.png

303cb166-39de-11ee-9e74-dac502259ad0.jpg

圖像的邊緣檢測:

LoG算子:Laplacian of Gaussian算子

先對圖形做高斯濾波,然后再求Laplacian二階導,最后檢測濾波結果的零交叉(Zero crossing)可以獲得圖像或物體的邊緣。

邊緣檢測最常見的幾種方法:Sobel算子,Laplacian算子,Canny算子等

Roberts算子(0的方向,即為邊的方向)

30550414-39de-11ee-9e74-dac502259ad0.png

2. Prewitt算子

30646f1c-39de-11ee-9e74-dac502259ad0.png

3. Sobel算子:在Prewitt算子上加了權重,距離近的像素權重高

3073d9d4-39de-11ee-9e74-dac502259ad0.png

4. Laplacian算子:二位微分算子,也是二階微分算子

30932fbe-39de-11ee-9e74-dac502259ad0.png

本質:做卷積,求差分

圖像配準算法(3類)

基于灰度和模板匹配算法:

MAD: Mean Absolute Differences 平均絕對差算法

SAD: Sum of Absolute Differences 絕對誤差和

SSD: Sum of Squred Differences , 誤差平方和,也叫差方和

MSD:Mean Squred Differences, 均方差算法

NCC:Normalized CrossCorrelation,歸一化互相關算法(或歸一化交叉相關算法),該算法利用了相似系數的計算,來計算兩張圖像的相似性。

SSDA:Sequential Similarity Detection Algorithm,序列相似性檢測算法:設定一個與之,累計絕對誤差和,該值超過閾值,則進行下一次匹配。

SATD: Sum of Absolute Transformed Difference, 該算法也經常用于視頻編碼中

基于特征的匹配算法:

Canny算法等

基于域變換的方法:

傅立葉---梅林變換

小波變換。

圖像修復:

面積比較小的,稱為Inpainting

面積大的叫做Image Completion

圖像超分:超級分辨率,Super Resolution

基于插值的重建:傳統方法

基于概率的重建:反投影,最大后驗概率

基于機器學習與深度學習的重建

圖像拼接(制作全景圖片)常用算法:

就是找關鍵點的算法:SIFT, SURF, ORB,SuperPoint

SIFT:Scale-Invariant Feature Transform

尺度不變特征轉換, 這是一種找關鍵點的方法。步驟如下:

構建多尺寸空間(DOG,高斯差分),檢測極值點

利用插值等方法,通過上一步得到的多個極值點,求出關鍵點

生成特征描述點:利用直方圖統計關鍵點鄰域范圍內的像素的梯度方向,求出關鍵點的主方向,構造描述子

提取尺寸不變區域--》歸一化尺寸--》旋轉歸一化--》特征描述子(最終是:位置+128維向量)

SURF:Speed Up Robust Features

加速穩健特征(也是找關鍵點)。大致算法與SIFT相同,但比SIFT高效,利用Hessian矩陣的行列式作特征點檢測,并用積分圖加速運算。

是SIFT的變種,效果沒有SIFT好,但速度更快。

ORB: Oriented FAST and Rotated BRIEF

基于FAST 和BRIEF特征描述子提出來,運行時間最快,比較常用與實際生產中

目標運動偵測算法:

背景差分法

光流法

幀差法

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 二進制
    +關注

    關注

    2

    文章

    795

    瀏覽量

    41691
  • 算法
    +關注

    關注

    23

    文章

    4622

    瀏覽量

    93063
  • 圖像
    +關注

    關注

    2

    文章

    1087

    瀏覽量

    40503

原文標題:技術知識查漏補缺!這可能是最全的圖像相關知識總結

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    通信連接器技術知識培訓教程

    通信連接器技術知識培訓教程  通信是一項系統工程,使用的各個部件的性能都會影響整個網絡的性能,其中通
    發表于 03-12 11:33 ?2860次閱讀

    集成電路芯片封裝技術知識詳解

    集成電路芯片封裝技術知識詳解本電子書對封裝介紹的非常詳細,所以和大家分享。因為太大,沒有上傳。請點擊下載。[此貼子已經被作者于2008-5-12 22:45:41編輯過]
    發表于 05-12 22:44

    dos技術知識的經典資料

    dos技術知識的經典資料 以上內容來于《我是網管》論壇[此貼子已經被作者于2008-6-17 11:27:51編輯過]
    發表于 06-17 11:19

    AutoCAD2000技術知識大全

    AutoCAD2000中文版技術大全,系統介紹AutoCAD應用程序的相關使用知識。點擊下載
    發表于 04-18 10:00

    補缺,學習嵌入式開發必備的硬件相關知識

    做嵌入式系統開發,經常要接觸硬件。做嵌入式開發對數字電路和模擬電路要有一定的了解。這樣才能深入的研究下去。下面我們簡單的介紹嵌入式開發中的一些硬件相關知識。電平(Level)
    發表于 05-07 08:00

    LED技術知識

    LED技術知識
    發表于 12-04 11:50 ?50次下載

    LCOS技術知識集錦

    LCOS技術知識集錦 LCOS光機原理 LCOS(Liquid Crystal on Silicon)屬于新型的反射式micro LCD投影技術,它采用涂有液晶硅的CMOS集成電路芯片作為反射式LCD的基片,用先進工
    發表于 05-09 08:51 ?2158次閱讀

    音箱技術知識

    你想成為音箱行業的高手嗎?那就看看音技術知識資料,希望對各位有所收獲,記給頂一下哦
    發表于 11-03 10:32 ?53次下載

    【安防知名培訓機構課件】視頻監控技術知識-接口

    【安防知名培訓機構課件】視頻監控技術知識-接口
    發表于 01-14 02:55 ?0次下載

    【安防知名培訓機構課件】視頻監控技術知識-成像技術

    【安防知名培訓機構課件】視頻監控技術知識-成像技術
    發表于 01-14 02:55 ?0次下載

    標準接口的基礎技術知識

    標準接口的基礎技術知識
    發表于 01-24 17:30 ?25次下載

    60個電工常見易錯的技術知識點要點!

    60個電工常見易錯的技術知識點要點!
    的頭像 發表于 07-12 09:14 ?5119次閱讀
    60個電工常見易錯的<b class='flag-5'>技術知識</b>點要點!

    三級網絡技術知識點匯總(全部)

    三級網絡技術知識點匯總(全部)
    發表于 10-20 10:30 ?0次下載

    OFDM技術知識

    電子發燒友網站提供《OFDM技術知識點.rar》資料免費下載
    發表于 11-18 14:25 ?1次下載
    OFDM<b class='flag-5'>技術知識</b>點

    模擬電子技術知識點問題總結概覽

    給大家分享模擬電子技術知識點問題總結
    的頭像 發表于 05-08 15:16 ?1191次閱讀
    模擬電子<b class='flag-5'>技術知識</b>點問題<b class='flag-5'>總結</b>概覽
    主站蜘蛛池模板: 国语对白刺激真实精品| 老熟女重囗味GRANNYBBW| 麻花传媒XK在线观看| 永久免费的无码中文字幕| 久久国内精品| a视频在线观看| 玩弄朋友娇妻呻吟交换电影| 黑人巨茎vide抽搐| 中国字字幕在线播放2019| 暖暖 免费 高清 日本视频大全| YELLOW视频在线观看大全| 熟女人妻AV五十路六十路| 韩剧甜性涩爱| 99热.com| 午夜国产福利| 和老外3p爽粗大免费视频| 2021国产精品视频一区| 老板揉搓秘书丰满大乳| 99免费在线观看| 日韩娇小性hd| 国产在线精品亚洲第一区| 在线观看国产高清免费不卡| 久久久无码精品亚洲欧美| japonensis护士| 无码人妻99久久密AV| 九色PORNY蝌蚪视频首页| 99久久久无码国产精品不卡按摩| 日韩亚洲欧洲在线rrrr片| 果冻传媒MV免费播放在线观看| 中字幕视频在线永久在线| 欧美乱码卡一卡二卡四卡免费| 国产精品久久大陆| 亚洲中文字幕AV在天堂| 嗯啊快拔出来我是你老师视频| 高清无码色大片中文| 亚洲色综合狠狠综合区| 欧美动物交ideos| 国产乱国产乱老熟300部视频| 印度学生xxxxx性14一16| 人妻免费久久久久久久了| 国产综合自拍 偷拍在线|