產(chǎn)品講技術 | 帶你看懂什么是計算機視覺(二)

0 評論 2515 瀏覽 19 收藏 32 分鐘

上一篇《產(chǎn)品講技術|帶你看懂什么是計算機視覺(一)》主要講了CV主流程的概念和圖像預處理的灰度化以及圖像幾何轉換,本篇會把圖像預處理的部分進行完結,主要涉及圖像增強、圖像恢復、圖像分割/邊緣檢測。

文章大綱:(粗體部分是本篇文章分享的內(nèi)容)

一、什么是圖像預處理?

1.1 灰度化是什么?

1.1.1 彩色圖像實現(xiàn)灰度化的常用方法

1.2 什么是圖像幾何轉換?

  • 1.2.1圖像的平移轉換
  • 1.2.2圖像的鏡面變換
  • 1.2.3圖像的轉置變換
  • 1.2.4圖像的旋轉
  • 1.2.5圖像的縮放
  • 1.2.6什么是灰度插值算法?

1.3 什么是圖像增強?

  • 1.3.1 圖像去噪
  • 1.3.2 銳化
  • 1.3.3 低照度增強
  • 1.3.4 去霧
  • 1.3.5 去運動模糊
  • 1.3.6 超分辨率重建

1.4 什么是圖像恢復?

  • 1.4.1 圖像增強和圖像恢復的區(qū)別
  • 1.4.2 圖像恢復的處理流程

1.5 什么是圖像分割/邊緣檢測

二、什么是特征工程?

2.1 算法和模型的區(qū)別

2.2 特征使用方案

2.3 特征獲取方案

2.4 特征處理

  • 2.4.1 特征清洗
  • 2.4.2 特征預處理

2.5 特征監(jiān)控

三、參考文獻

1.3 什么是圖像增強?

圖像增強是增強圖像中的有用信息,它可以是一個失真的過程,其目的是要改善圖像的視覺效果,針對給定圖像的應用場合。

有目的地強調(diào)圖像的整體或局部特性,將原來不清晰的圖像變得清晰或強調(diào)某些感興趣的特征,擴大圖像中不同物體特征之間的差別,抑制不感興趣的特征,使之改善圖像質(zhì)量、豐富信息量,加強圖像判讀和識別效果,滿足某些特殊分析的需要。

目的:圖像增強是知道圖像真實值的,從主觀上,根據(jù)預先的目標通過改善圖像的視覺效果,使圖像更適合于人或者機器分析處理,一般來說要先進行圖像恢復后,再進行圖像增強,二者處理順序不可倒置。

圖像增強在日常生活中的常見應用場景:

1. 圖像問題背景(Background)

曝光不足或過度的照片-需要增強處理

2. 圖像有霧-需要 增強處理

3. 車牌識別系統(tǒng)

4. 車牌識別預處理-車牌圖像需要增強處理

5. 人臉識別預處理-人臉圖像需要增強處理

6. 指紋識別預處理-指紋圖像需要增強處理

圖像增強算法的主要方向:

  1. 圖像去噪
  2. 銳化
  3. 低照度增強
  4. 去霧
  5. 去運動模糊
  6. 超分辨率重建

1.3.1 圖像去噪

第一次見到這個名詞的時候一臉懵逼,圖像還要去噪?那不是音頻才需要去噪嗎?趕緊上網(wǎng)查了查資料,在圖像拍攝、壓縮、傳輸?shù)冗^程中真的因為噪聲而影響圖像質(zhì)量。

噪聲是圖象干擾的重要原因,圖像去噪是指減少數(shù)字圖像中噪聲的過程?,F(xiàn)實中的數(shù)字圖像在數(shù)字化和傳輸過程中常受到成像設備與外部環(huán)境噪聲干擾等影響,稱為含噪圖像或噪聲圖像。

圖像常見噪聲有四種:高斯噪聲,泊松噪聲,乘性噪聲,椒鹽噪聲

讓我們實際去對比一下圖像在各種噪聲影響下是什么樣子的。

原圖:

1. 高斯噪聲(下圖)

高斯噪聲是指它的概率密度函數(shù)服從高斯分布(即正態(tài)分布)的一類噪聲。如果一個噪聲,它的幅度分布服從高斯分布,而它的功率譜密度又是均勻分布的,則稱它為高斯白噪聲。高斯白噪聲的二階矩不相關,一階矩為常數(shù),是指先后信號在時間上的相關性。

產(chǎn)生原因:

  1. 圖像傳感器在拍攝時市場不夠明亮、亮度不夠均勻;
  2. 電路各元器件自身噪聲和相互影響;
  3. 圖像傳感器長期工作,溫度過高。

2. 泊松噪聲(下圖)

泊松噪聲,就是符合泊松分布的噪聲模型,泊松分布適合于描述單位時間內(nèi)隨機事件發(fā)生的次數(shù)的概率分布。如某一服務設施在一定時間內(nèi)受到的服務請求的次數(shù),電話交換機接到呼叫的次數(shù)、汽車站臺的候客人數(shù)、機器出現(xiàn)的故障數(shù)、自然災害發(fā)生的次數(shù)、DNA序列的變異數(shù)、放射性原子核的衰變數(shù)等等。

3. 乘性噪聲(下圖)

乘性噪聲一般由信道不理想引起,它們與信號的關系是相乘,信號在它在,信號不在他也就不在。

4. 椒鹽噪聲(下圖)

椒鹽噪聲,椒鹽噪聲又稱脈沖噪聲,它隨機改變一些像素值,是由圖像傳感器,傳輸信道,解碼處理等產(chǎn)生的黑白相間的亮暗點噪聲。椒鹽噪聲往往由圖像切割引起。

在做圖像去噪時,一般來說會針對被不同性質(zhì)的噪聲污染的圖像應該采用不同的濾波方法,圖像濾波方法的選擇取決于噪聲和圖像的關系。

圖像增強一般可以分為空域濾波法和頻域濾波法。空域濾波法是直接對圖像的像素進行處理。頻域濾波法是指將圖像進行變換后(如傅里葉變換、小波變換等),在變換域中對圖像的變換系數(shù)進行濾波處理,處理完畢后再進行逆變換,獲得濾波后的圖像。

在圖像處理中,我們會頻繁用到這三個概念,這里給大家科普一下:

1)什么是時域

時域是描述數(shù)學函數(shù)或物理信號對時間的關系。例如一個信號的時域波形可以表達信號隨著時間的變化。

2)什么是頻域

頻域(頻率域)——自變量是頻率,即橫軸是頻率,縱軸是該頻率信號的幅度,也就是通常說的頻譜圖。頻譜圖描述了信號的頻率結構及頻率與該頻率信號幅度的關系。

3)什么是空間域

空間域又稱圖像空間(image space)。由圖像像元組成的空間。在圖像空間中以長度(距離)為自變量直接對像元值進行處理稱為空間域處理。

圖像去噪具體的算法和代碼這里就不再詳細介紹了,感興趣的小伙伴可以參閱《【技術綜述】一文道盡傳統(tǒng)圖像降噪方法》。

1.3.2 銳化

數(shù)字圖像銳化:拉開像素之間的差異從而增加畫面中細節(jié)的可辨識度。(很容易和圖像對比度混淆,銳化可以理解為增加局部差異,增加對比度可以理解為拉開整體差異)

目前主流中所用銳化可以分為兩大類:全局銳化&局部銳化。

(1)全局銳化原理

理論上銳化是濾波算法(通俗說就是模糊濾鏡)的逆應用,來看看下面的公式:

濾波結果 = 去掉了畫面細節(jié)的輸入圖像畫面細節(jié) = 輸入圖像 – 濾波結果銳化輸出 = 輸入圖像 + 畫面細節(jié) x 銳化強度

所以說有多少濾波算法就有多少種銳化算法,每種算法都有它較適用的情況。

下面是看圖說話時間(圖片中的素材引用自斯坦福大學的一篇講座Sheet)

說到這里不得不提一點補充內(nèi)容:濾波降噪

成像技術從銀鹽進化到數(shù)字CMOS以后不得不面對電子信號噪波的問題

輸入圖像 = 真實信號 + 信號噪波

濾波算法就是為了過濾信號噪波而產(chǎn)生的,大家一定都意識到了,銳化的過程在增強了畫面細節(jié)的同時,也放大了信號噪波。所以圖形學的大神們自然而然的想到了下面的解決方法:

(2)局部銳化

簡而言之,銳化圖像的核心目的就是突出形體更容易被視覺識別。因此我們只要更多將銳化操作使用在形態(tài)的邊緣處,拿人像來做個例子就是諸如頭發(fā)絲,眉毛,睫毛,臉部輪廓等等地方(這下滿足數(shù)毛黨的惡趣味了)

在PS中有個神奇的濾鏡叫高反差保留就是專門用來干Edge Dectection的(時下很流行的照片邊插畫的核心算法就是這個),有興趣的同學可以跟著鏈接繼續(xù)擴展閱讀一下 Spatial Filters 學名Laplician of Gaussian(LoG)

下面請看實戰(zhàn)圖(這次選的能算喜聞樂見的照片了沒?)

這種方法簡而言之就是只銳化有必要銳化的部分,很大程度上降低了噪波被放大的情況。目前優(yōu)秀的銳化濾鏡從根本上就是優(yōu)化算法以達到銳化真實信號而屏蔽噪波的目的。

1.3.3 低照度增強

低照度增強是圖像增強中的一種簡單、有效的度圖像增強方法,僅用了幾次簡單的圖層混合操作,沒有復雜的公式和計算過程,就可以達到較好的效果,同時對逆光拍攝的圖像,也有較好的增強效果。

當時在查閱相關資料時,無意中看到一個使用Photoshop拉亮低照度圖像的方法,按照教程介紹,自己使用Photoshop操作一遍,覺得效果還可以。對,做圖像算法還是要掌握一點Photoshop用法的,因為有時候圖像算法就是把Photoshop上面的處理圖像步驟程序化一下,比如后面介紹的圖像倒影算法。

低照度圖像增強算法基本可以分2步:

  1. 將綠色通道反色后作為系數(shù)值,分別與各個通道相乘,得到新圖層;
  2. 將新圖層與原圖做一次濾色混合,f(a, b) = 1 – (1 – a)*(1 – b);

代碼效果圖:

如果修改其中一些參數(shù),還可以得到增強更明顯的圖像,當然,隨之噪點也會變得明顯,如下圖:

如果想更深一步了解低照度增強算法可以參閱《SSE圖像算法優(yōu)化系列二十》

1.3.4 去霧

圖像去霧的目的是消除霧霾環(huán)境對圖像質(zhì)量的影響,增加圖像的可視度,提高圖像識別準確率。

提到去霧算法,最經(jīng)典的何凱明博士的暗通道去霧算法了,獲得了CVPR 09的Best Paper Award。

附上原論文地址:《Single Image Haze Removal Using Dark Channel Prior》

基于暗通道先驗的去霧算法實際上是一種統(tǒng)計意義上的算法,作者總結了大量的室外無霧的圖像,發(fā)現(xiàn)了在無霧圖像中局部區(qū)域存在一些像素,這些像素中至少有一個顏色通道的亮度值非常非常低(低亮度值區(qū)域不包括天空區(qū)域)。雖然這種算法非常好,也不需要什么額外的參數(shù),但是當圖像趨于白色,這種去霧算法就存在缺陷。詳細的原理在原論文中已經(jīng)說明的很好了,下面直接給大家展示代碼和效果圖。

代碼效果圖:

1.3.5 去運動模糊

首先運動模糊是指由于相機和物體之間的相對運動造成的模糊,又稱為動態(tài)模糊。而動態(tài)模糊分為去動態(tài)模糊和加動態(tài)模糊,加動態(tài)模糊主要應用于電影和動畫中為人物、汽車增加明顯的運動模糊痕跡等。

關于去運動模糊,推薦一篇很好的實踐博客《DeblurGAN實現(xiàn)運動圖像的去模糊化(tensorflow實現(xiàn))》,包含了實際代碼和所需的訓練數(shù)據(jù)集,可以讓大家很好的體驗一下算法模型訓練的過程是什么樣子的。

去運動模糊實際效果圖:

1.3.6 超分辨率重構

超分辨率重構也在很多論文叫超分辨率重建,是指利用計算機將一幅低分辨率圖像(low resolution,LR)或圖像序列進行處理,恢復出高分辨率圖像(high resolution,HR)的一種圖像處理技術。HR意味著圖像具有高像素密度,可以提供更多的細節(jié),這些細節(jié)往往在應用中起到關鍵作用。

超分辨率(Super-resolution)概念理解:

  • 百科:超分辨率(Super-Resolution)通過硬件或軟件的方法提高原有圖像的分辨率,通過一系列低分辨率的圖像來得到一幅高分辨率的圖像過程就是超分辨率重建。
  • wiki:超分辨率成像(SR-imaging)是提高成像系統(tǒng)分辨率的一類技術。光學SR技術可以超越系統(tǒng)的衍射極限,而幾何SR則可以提高數(shù)字成像傳感器的分辨率。超分辨率成像技術廣泛應用于圖像處理和超分辨顯微術中。

形象理解:給定圖像的像素越高,表示圖像質(zhì)量越接近于原始圖像。如果把低像素的圖片放大到一定程度,圖片會變得非常模糊,類似于馬賽克的情況。效果如下圖所示:

單圖像超分辨率重構(SR)可以從一張較小的圖像生成一張高分辨率的圖像。顯然,這種恢復的結果是不唯一的??梢赃@樣直觀地理解:遠遠看到一個模糊的身影,看不清臉,既可以認為對面走來的是個男生,也可以認為這是個女生。那么,當我想象對面人的長相時,會如何腦補呢?

這就依賴于我們的先驗知識。假如我認為,一個穿著裙子的人肯定是個女生,而對面那個人穿著裙子,所以我認為那是個女生,腦補了一張女神臉。然而,如果我知道穿裙子的人不一定是女生,還可能是女裝大佬。迎面走來那個人瘦瘦高高,所以我認為十有八九是個男孩子,就會腦補一個……

也就是說,不同的先驗知識,會指向不同的結果。我們的任務,就是學習這些先驗知識。目前效果最好的辦法都是基于樣本的(example-based),所以可能會根據(jù)不同的業(yè)務目標,提前訓練具有針對性的識別模型。

想更深一步了解的小伙伴,推薦參閱《深度學習在圖像超分辨率重建中的應用》

1.4 什么是圖像恢復?

圖像增強不考慮圖像是如何退化的,而是試圖采用各種技術來增強圖像的視覺效果。因此,圖像增強可以不顧增強后的圖像是否失真,只要看得舒服就行。而圖像恢復就完全不同,需知道圖像退化的機制和過程等先驗知識,據(jù)此找出一種相應的逆處理方法,從而得到復原的圖像。如果圖像已退化,應先作復原處理,再作增強處理。二者的目的都是為了改善圖像的質(zhì)量。

1.4.1圖像增強和圖像恢復的區(qū)別

圖像增強:image enhancement

圖像恢復:image restoration and reconstruction

相同:都是屬于數(shù)字圖像處理范疇,有著共同的目的,使之產(chǎn)生期望結果的最佳估計。

不同:

  • 圖像恢復:大部分是一個客觀過程,不知道圖像真實值,通過面向退化模型,采用相反的過程進行處理以恢復出原圖像,使之盡可能接近圖像真實值的方法。
  • 圖像增強:主要是一個主觀過程,知道圖像的真實值,為了達到視覺上的某些特定要求,進行有目的性的整體或者局部增強,減少無效特征,加強圖像判讀和識別效果的方法。

在圖象成像的過程中,圖象系統(tǒng)中存在著許多退化源,科普幾個在圖像恢復中常用的名詞:

  1. 點退化:只影響一幅圖象中某些個別點的灰度的退化因素。
  2. 空間退化:可以使一幅圖象中的一個空間區(qū)域變得模糊起來的退化因素。
  3. 卷積(Convolution使圖象發(fā)生退化的原因很多,但這些退化現(xiàn)象都可用卷積來描述,說到卷積最熟悉的就是卷積神經(jīng)網(wǎng)絡CNN,在泛函分析中,卷積、旋積或摺積是通過兩個函數(shù)f 和g 生成第三個函數(shù)的一種數(shù)學算子,表征函數(shù)f 與g經(jīng)過翻轉和平移的重疊部分函數(shù)值乘積對重疊長度的積分。
  4. 反卷積(Deconvolution)圖象的復原過程就可以看成是一個反卷積的問題,在數(shù)學中,反卷積是一種基于算法的過程,用于反轉卷積對記錄數(shù)據(jù)的影響。反卷積的概念廣泛用于信號處理和圖像處理技術。

卷積和反卷積更深一步請參閱《一文搞懂CNN中的卷積和反卷積》

圖像恢復還有明確規(guī)定的質(zhì)量準則,處理的圖像一定要是最接近原始景物的圖像,因為如果是已經(jīng)經(jīng)過其它圖像處理過的圖片,對圖像恢復的結果會產(chǎn)生很大的影響,可能造成圖像恢復的圖像和真實圖像存在很大的差別。

1.4.2 圖像恢復的處理流程

分析退化原因->建立退化模型->反向推演->恢復圖像

圖像恢復算法具體原理請參閱《數(shù)字圖像復原技術綜述》

1.5 什么是圖像分割/邊緣檢測?

圖像分割:將圖像劃分成若干個互不相交的小區(qū)域的過程,所謂小區(qū)域是某種意義下具有共同屬性的像素的連通集合,將圖像目標分割出來,針對的是目標對象。圖像分割的最終結果是將圖像分解成一些具有某種特征的單元,成為圖像的基元,相對于整幅圖像來說,這種圖像基元更容易被快速處理。

圖像分割的特征:分割出來的各個區(qū)域對某種性質(zhì)例如灰度,紋理而言具有相似性,區(qū)域內(nèi)部是連通的且沒有過多小孔。

邊緣檢測:通過對圖像的梯度度化將圖像中的梯度變化明顯的地方檢測出來,針對的是圖像的邊緣信息。

邊緣檢測是空間域圖像分割的一種方法,屬于包含關系,邊緣檢測后的圖像是二值圖像,對二值圖像可以運用形態(tài)學操作來分割目標,所以邊緣檢測是圖像分割的一個前提,但分割不一定非要用邊緣檢測。

二值圖像:就是將圖像上的像素點的灰度值設置為0或255,也就是將整個圖像呈現(xiàn)出明顯的只有黑和白的視覺效果。即圖像上的每一個像素只有兩種可能的取值或灰度等級狀態(tài),人們經(jīng)常用黑白、B&W、單色圖像表示二值圖像。

二值圖像處理與分析在機器視覺與機器人視覺中非常重要,涉及到非常多的圖像處理相關的知識,常見的二值圖像分析包括輪廓分析、對象測量、輪廓匹配與識別、形態(tài)學處理與分割、各種形狀檢測與擬合、投影與邏輯操作、輪廓特征提取與編碼等。

提到圖像分割,主要包含兩個方面:

  1. 非語義分割
  2. 語義分割

由于篇幅有限,這里就主要講解非語義分割,因為非語義分割在圖像分割中所占比重更高,目前算法也非常多,算法也比較成熟。

非語義分割和語義分割的區(qū)別:

  • 相同點:都要分割出圖像中物體的邊緣
  • 不同點:非語義分割只提取物體的邊緣,但是不關注目標的類別,但是語義分割不僅要提取到邊緣像素級別,還要知道這個目標是什么,主要是目標分類,如果需要指定到個體,還需要用到實例分割算法(好難過,怎么這么多東西要看)。
  • 關系:非語義分割是一種圖像基礎處理技術,而語義分割是一種機器視覺技術,難度也更大

給大家舉個例子:

這是一張經(jīng)過語義圖像分割FCN算法處理的效果圖,圖像中不同的顏色代表不同的類別。


  • 非語義分割:可以區(qū)分出不同的物體,知道存在3種物體,但不知道每種對應的是什么
  • 語義分割:可以區(qū)分出不同的物體,知道粉色的是人、綠色是自行車、黑色是圖像背景
  • 實例分割:可以區(qū)分出不同的物體,知道粉色分別是人物A/B/C/D,綠色分別是自行車1/自行車2/自行車3/自行車4,黑色是圖像背景

語義分割目前的算法主要有以下幾種:

  • 閾值分割
  • 區(qū)域分割
  • 聚類分割
  • 邊緣分割
  • 直方圖
  • 水平集

下面對每一種算法的原理進行展開介紹:

(1)閾值分割

閾值分割是圖像分割中應用最多的一類,該算法思想比較簡單,給定輸入圖像一個特定閾值,如果這個閾值可以是灰度值,也可以是梯度值,如果大于這個閾值,則設定為前景像素值,如果小于這個閾值則設定為背景像素值。

閾值設置為100對圖像進行分割:

(2)區(qū)域分割

區(qū)域分割算法中比較有代表性的算法有兩種:區(qū)域生長和區(qū)域分裂合并。

區(qū)域生長算法的核心思想是給定子區(qū)域一個種子像素,作為生長的起點,然后將種子像素周圍鄰域中與種子像素有相同或相似性質(zhì)的像素(可以根據(jù)預先設定的規(guī)則,比如基于灰度差)合并到種子所在的區(qū)域中。

區(qū)域分裂合并基本上就是區(qū)域生長的逆過程,從整個圖像出發(fā),不斷分裂得到各個子區(qū)域,然后再把前景區(qū)域合并,實現(xiàn)目標提取。

(3)聚類分割

聚類是一個應用非常廣泛的無監(jiān)督學習算法,該算法在圖像分割領域也有較多的應用。聚類的核心思想就是利用樣本的相似性,把相似的像素點聚合成同一個子區(qū)域。

(4)邊緣分割

這是圖像分割中較為成熟,而且較為常用的一類算法。邊緣分割主要利用圖像在邊緣處灰度級會發(fā)生突變來對圖像進行分割。常用的方法是利用差分求圖像梯度,而在物體邊緣處,梯度幅值會較大,所以可以利用梯度閾值進行分割,得到物體的邊緣。

對于階躍狀邊緣,其位置對應一階導數(shù)的極值點,對應二階導數(shù)的過零點(零交叉點)。因此常用微分算子進行邊緣檢測。常用的一階微分算子有Roberts算子、Prewitt算子和Sobel算子,二階微分算子有Laplace算子和Kirsh算子等。

由于邊緣和噪聲都是灰度不連續(xù)點,在頻域均為高頻分量,直接采用微分運算難以克服噪聲的影響。因此用微分算子檢測邊緣前要對圖像進行平滑濾波。LoG算子和Canny算子是具有平滑功能的二階和一階微分算子,邊緣檢測效果較好,因此Canny算子也是應用較多的一種邊緣分割算法。

(5)直方圖

與前面提到的算法不同,直方圖圖像分割算法利用統(tǒng)計信息對圖像進行分割。通過統(tǒng)計圖像中的像素,得到圖像的灰度直方圖,然后在直方圖的波峰和波谷是用于定位圖像中的簇。

(6)水平集

水平集方法最初由Osher和Sethian提出,目的是用于界面追蹤。在90年代末期被廣泛應用在各種圖像領域。這一方法能夠在隱式有效的應對曲線/曲面演化問題?;舅枷胧怯靡粋€符號函數(shù)表示演化中的輪廓(曲線或曲面),其中符號函數(shù)的零水平面對應于實際的輪廓。

這樣對應于輪廓運動方程,可以容易的導出隱式曲線/曲面的相似曲線流,當應用在零水平面上將會反映輪廓自身的演化。

水平集方法具有許多優(yōu)點:它是隱式的,參數(shù)自由的,提供了一種估計演化中的幾何性質(zhì)的直接方法,能夠改變拓撲結構并且是本質(zhì)的。

恭喜大家已經(jīng)看完圖像預處理的所有內(nèi)容,應該對圖像處理有一個大概的了解了吧,下一篇是重磅的特征工程的介紹,小伙伴們記得收藏和點贊哦~

 

作者:賈濤,微信公眾號:賈產(chǎn)品(ID:JIAPRODUCT),互聯(lián)網(wǎng)愛好者。想把自己工作實踐中的心得體會分享給大家,專注于產(chǎn)品講技術、產(chǎn)品心得、產(chǎn)品面經(jīng)、產(chǎn)品職業(yè)規(guī)劃知識分享。

本文由 @賈濤 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉載。

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!