圖像處理中平滑和銳化操作是什么?
平滑處理(smoothing)也稱模糊處理(bluring),主要用于消除圖像中的噪聲部分,平滑處理常用的用途是用來減少圖像上的噪點或失真,平滑主要使用圖像濾波。在這里,我個人認為可以把圖像平滑和圖像濾波聯(lián)系起來,因為圖像平滑常用的方法就是圖像濾波器。 在OpenCV3中常用的圖像濾波器有以下幾種:
1.方框濾波——BoxBlur函數(shù)
2.均值濾波(鄰域平均濾波)——Blur函數(shù)
3.高斯濾波——GaussianBlur函數(shù)
4.中值濾波——medianBlur函數(shù)
5.雙邊濾波——bilateralFilter函數(shù)
圖像銳化操作是為了突出顯示圖像的邊界和其他細節(jié)圖像銳化實現(xiàn)的方法是通過各種算子和濾波器實現(xiàn)的——Canny算子、Sobel算子、Laplacian算子以及Scharr濾波器。
HOG算法原理描述
方向梯度直方圖(Histogram of Oriented Gradient, HOG)特征是一種在計算機視覺和圖像處理中用來進行物體檢測的特征描述子。它通過計算和統(tǒng)計圖像局部區(qū)域的梯度方向直方圖來構成特征。在深度學習取得成功之前,Hog特征結合SVM分類器被廣泛應用于圖像識別中,在行人檢測中獲得了較大的成功。
HOG特征原理:
HOG的核心思想是所檢測的局部物體外形能夠被光強梯度或邊緣方向的分布所描述。通過將整幅圖像分割成小的連接區(qū)域(稱為cells),每個cell生成一個方向梯度直方圖或者cell中pixel的邊緣方向,這些直方圖的組合可表示出(所檢測目標的目標)描述子。為改善準確率,局部直方圖可以通過計算圖像中一個較大區(qū)域(稱為block)的光強作為measure被對比標準化,然后用這個值(measure)歸一化這個block中的所有cells。這個歸一化過程完成了更好的照射/陰影不變性。 與其他描述子相比,HOG得到的描述子保持了幾何和光學轉化不變性(除非物體方向改變)。因此HOG描述子尤其適合人的檢測。
HOG特征提取方法就是將一個image:
1.灰度化(將圖像看做一個x,y,z(灰度)的三維圖像)
2.劃分成小cells(2*2)
3.計算每個cell中每個pixel的gradient(即orientation)
4.統(tǒng)計每個cell的梯度直方圖(不同梯度的個數(shù)),即可形成每個cell的descriptor。
HOG特征檢測步驟

顏色空間歸一化——–>梯度計算————->梯度方向直方圖———->重疊塊直方圖歸一化———–>HOG特征。
圖像哈希算法
1.均值哈希算法:
第一步,縮小尺寸。最快速的去除高頻和細節(jié),將圖片縮小到8x8的尺寸,總共64個像素。摒棄不同尺寸、比例帶來的圖片差異。
第二步,簡化色彩。將縮小后的圖片,轉為64級灰度。也就是說,所有像素點總共只有64種顏色。
第三步,計算平均值。計算所有64個像素的灰度平均值。
第四步,比較像素的灰度。將每個像素的灰度,與平均值進行比較。大于或等于平均值,記為1;小于平均值,記為0。
第五步,計算哈希值。將上一步的比較結果,組合在一起,就構成了一個64位的整數(shù),這就是這張圖片的指紋。組合的次序并不重要,只要保證所有圖片都采用同樣次序就行了。
如果圖片放大或縮小,或改變縱橫比,結果值也不會改變。增加或減少亮度或對比度,或改變顏色,對hash值都不會太大的影響。最大的優(yōu)點:計算速度快!
如果想比較兩張圖片,為每張圖片構造hash值并且計算不同位的個數(shù)。如果不相同的數(shù)據(jù)位不超過5,就說明兩張圖片很相似;如果大于10,就說明這是兩張不同的圖片。
2.感知哈希算法:
第一步,縮小尺寸。最快速的去除高頻和細節(jié),將圖片縮小到8x8的尺寸,總共64個像素。摒棄不同尺寸、比例帶來的圖片差異。
第二步,簡化色彩。將縮小后的圖片,轉為64級灰度。也就是說,所有像素點總共只有64種顏色。
第三步,計算DCT(離散余弦變換)。DCT是把圖片分解頻率聚集和梯狀形,雖然JPEG使用8 * 8的DCT變換,在這里使用32 * 32的DCT變換。
第四步,縮小DCT。雖然DCT的結果是32 * 32大小的矩陣,但我們只要保留左上角的8*8的矩陣,這部分呈現(xiàn)了圖片中的最低頻率。
第五步,計算平均值。計算所有64個值的平均值。
第六步,進一步減小DCT。這是最主要的一步,根據(jù)8 * 8的DCT矩陣,設置0或1的64位的hash值,大于等于DCT均值的設為”1”,小于DCT均值的設為“0”。結果并不能告訴我們真實性的低頻率,只能粗略地告訴我們相對于平均值頻率的相對比例。只要圖片的整體結構保持不變,hash結果值就不變。能夠避免伽馬校正或顏色直方圖被調整帶來的影響。
第七步,計算哈希值。將64bit設置成64位的長整型,組合的次序并不重要,只要保證所有圖片都采用同樣次序就行了。將32 * 32的DCT轉換成32 * 32的圖像。
將上一步的比較結果,組合在一起,就構成了一個64位的整數(shù),這就是這張圖片的指紋。組合的次序并不重要,只要保證所有圖片都采用同樣次序就行了(例如,自左到右、自頂向下、big-endian)。
得到指紋以后,就可以對比不同的圖片,看看64位中有多少位是不一樣的。在理論上,這等同于計算漢明距離。如果不相同的數(shù)據(jù)位不超過5,就說明兩張圖片很相似;如果大于10,就說明這是兩張不同的圖片。
3.差異哈希算法
第一步,縮小尺寸,縮放到9 * 8尺寸。
第二步,轉換灰度值,轉換到0-255之間。
第三步,差異值計算,差異值是通過計算每行相鄰像素的強度對比得出的。我們的圖片為9 * 8的分辨率,那么就有8行,每行9個像素。差異值是每行分別計算的,也就是第二行的第一個像素不會與第一行的任何像素比較。每一行有9個像素,那么就會產生8個差異值,這也是為何我們選擇9作為寬度,因為8bit剛好可以組成一個byte,方便轉換為16進制值。
如果前一個像素的顏色強度大于第二個像素,那么差異值就設置為True(也就是1),如果不大于第二個像素,就設置為False(也就是0)。
第四步,轉化為hash值,將差異值數(shù)組中每一個值看做一個bit,每8個bit組成為一個16進制值,將16進制值連接起來轉換為字符串,就得出了最后的dHash值。
第五步,計算漢明距離,如果不相同的數(shù)據(jù)位不超過5,就說明兩張圖片很相似;如果大于10,就說明這是兩張不同的圖片。
介紹一下圖像的高頻、低頻部分
圖像的頻率:灰度值變化劇烈程度的指標,是灰度在平面空間上的梯度。
(1)什么是低頻?
低頻就是顏色緩慢地變化,也就是灰度緩慢地變化,就代表著那是連續(xù)漸變的一塊區(qū)域,這部分就是低頻. 對于一幅圖像來說,除去高頻的就是低頻了,也就是邊緣以內的內容為低頻,而邊緣內的內容就是圖像的大部分信息,即圖像的大致概貌和輪廓,是圖像的近似信息。
(2)什么是高頻?
反過來, 高頻就是頻率變化快.圖像中什么時候灰度變化快?就是相鄰區(qū)域之間灰度相差很大,這就是變化得快.圖像中,一個影像與背景的邊緣部位,通常會有明顯的差別,也就是說變化那條邊線那里,灰度變化很快,也即是變化頻率高的部位.因此,圖像邊緣的灰度值變化快,就對應著頻率高,即高頻顯示圖像邊緣。圖像的細節(jié)處也是屬于灰度值急劇變化的區(qū)域,正是因為灰度值的急劇變化,才會出現(xiàn)細節(jié)。
另外噪聲(即噪點)也是這樣,在一個像素所在的位置,之所以是噪點,就是因為它與正常的點顏色不一樣了,也就是說該像素點灰度值明顯不一樣了,,也就是灰度有快速地變化了,所以是高頻部分,因此有噪聲在高頻這么一說。
圖像補全的方法
Region Filling and Object Removal by Exemplar-Based Image Inpainting
算法的流程大致如下:
1)對待補全區(qū)域邊界的像素依次計算補全的優(yōu)先度(priority),這個優(yōu)先度主要考慮2個因素。一個是周圍像素可信度高的位置要優(yōu)先補,另一個是位于圖像梯度變化劇烈的位置要優(yōu)先補。綜合二者得到所有優(yōu)先度之后,挑選優(yōu)先度最高的像素來補
2)對于上一步找到的待補全像素,考慮它周圍的一個小patch(比如3*3)。在圖像已知部分搜索所有的patch,找到最相似的patch
3)用找到的best match來補全未知部分,并更新相關數(shù)值
但是我們也不難發(fā)現(xiàn)這個方法存在的問題:如果圖像已知部分找不到相似的patch,那算法將無法進行;這個方法只適用于補全背景以低頻信息和重復性紋理為主的圖像;搜索相似的patch計算復雜度非常高,算法運行效率低。
Scene Completion Using Millions of Photographs
算法的大致流程如下:
1)從Flickr上下載兩百萬圖片構建數(shù)據(jù)庫,以”landscape””city””park”等關鍵詞搜索戶外場景的圖片。
2)對于一張待補全圖像,從數(shù)據(jù)庫中挑選200個場景最相似的圖片,這里使用gist scene descriptor和圖像下采樣到4*4作為匹配的特征向量。
3)將補全區(qū)域邊界外80個pixel的區(qū)域作為context。對于每一張匹配的圖像,搜索所有的平移空間和3個尺度的scale空間,根據(jù)context部分的匹配誤差,選擇最佳的補全位置;之后利用graph-cut算法求解最佳的融合邊界。
4)利用標準的泊松融合處理融合邊界。
5)將前幾步的匹配cost和graph-cut的cost加起來,返回cost最小的20的結果供用戶挑選。
Context Encoders: Feature Learning by Inpainting
文章提出的網絡結構如下,包括3個部分:Encoder, Channel-wise fully-connected layer, Decoder。Encoder的結構直接借鑒了AlexNet前5層的卷積層結構,具體結構如下。輸入的crop尺寸是227í227,卷積之后得到的feature map結構是256層6 í 6。所有的weight都隨機初始化。
Channel-wise fully-connected layer是對普通fc層的一種改進。之所以加入fc層是為了使feature map每一層的信息可以在內部交流。但傳統(tǒng)的fc層參數(shù)太多,因此作者提出可以在fc中去掉feature map層間的信息交流,從而減少參數(shù)規(guī)模。在fc之后會接一個stride為1的卷積層,來實現(xiàn)層間的信息交流。
Decoder的目的是將壓縮的feature map一步步放大,恢復到原始圖片的尺寸。文章提出采用5個up-convolutional層,每層后接一個RELU。上采樣的結構如下。