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

6 評論 8883 瀏覽 51 收藏 35 分鐘

做為一名5歲的AI產(chǎn)品汪,剛好利用春節(jié)(疫情)假期在家整理了一些CV的文章,發(fā)現(xiàn)網(wǎng)上的資料質(zhì)量參差不齊,內(nèi)容缺斤少兩,小白很難甄別/讀懂,想對CV有一個系統(tǒng)的認識很難,就自己做了一個系統(tǒng)總結(jié)(小白可以當教材看)。

本人并非CV領(lǐng)域?qū)I(yè)人士(產(chǎn)品經(jīng)理),但希望可以幫助小白對CV全流程和原理有一個系統(tǒng)的認識,也歡迎各位大牛幫忙糾正。

適讀人群:

  • 對AI感興趣的同學
  • 對AI產(chǎn)品經(jīng)理感興趣的同學
  • 互聯(lián)網(wǎng)產(chǎn)品經(jīng)理想轉(zhuǎn)AI產(chǎn)品經(jīng)理的同學
  • 對CV或者圖像處理有一定基礎(chǔ),想再系統(tǒng)復習的同學

讀完收獲:

  • 對CV全流程有一個了解,明白從一個圖像識別需求到輸出結(jié)果,CV都需要做些什么
  • AI產(chǎn)品經(jīng)理需要掌握的CV常識和專業(yè)名詞,終于知道算法工程師在說什么了
  • 熟悉CV的全流程,在數(shù)據(jù)收集、產(chǎn)品設(shè)計時就可以盡量規(guī)避問題,提高圖像識別準確率
  • 收藏了本文章,可以經(jīng)常拿出來復習,再方便不過啦

首先我把CV的處理流程分為4個階段:1圖像采集->2圖像編碼->3圖像預處理->4特征工程

  1. 圖像采集:是CV處理的數(shù)據(jù)輸入來源,根據(jù)需要識別的業(yè)務(wù)需求,對圖像的背景光線、噪音、距離、遮擋物等會有相關(guān)的要求。
  2. 圖像編碼:做為計算機視覺處理的前提,通過把圖像的二進制數(shù)據(jù)進行交換,轉(zhuǎn)換為OpenVC等算法模型可用的圖片編碼格式,常用的方法有模擬處理、脈沖調(diào)制、數(shù)字編碼、預測碼等方式。
  3. 圖像預處理:是為特征工程掃除障礙和無效信息,提高圖像識別準備率的核心主力了,因為在實際的業(yè)務(wù)場景中收集到的圖像數(shù)據(jù)是非常復雜多樣的,會有圖像質(zhì)量太差、大量無效數(shù)據(jù)、圖像變形、失真等情況,而這種圖像如果直接由特征工程去處理,輸出的結(jié)果可想而知。
  4. 特征工程:就是大家常說的AI模型,但可能運用的不只一種模型,根據(jù)業(yè)務(wù)的需求選擇對應(yīng)的算法模型,提前針對需要的輸出結(jié)果,進行特征提取、特征選擇、PCA降維等工作,再用大量已標注好的高質(zhì)量數(shù)據(jù)進行訓練,輸出可以滿足此階段業(yè)務(wù)識別需求的特征工程。

下圖是我對CV處理流程的理解:

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

接下來會對CV處理流程中圖像預處理和特征工程部分進行重點介紹。

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

一、什么是圖像預處理?

1.1灰度化是什么?

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

1.2什么是圖像幾何轉(zhuǎn)換?

1.2.1圖像的平移轉(zhuǎn)換

1.2.2圖像的鏡面變換

1.2.3圖像的轉(zhuǎn)置變換

1.2.4圖像的旋轉(zhuǎn)

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)控

三、參考文獻

一、圖像預處理是什么?

圖像預處理主要目的是消除圖像中無關(guān)的信息,恢復有用的真實信息,增強有關(guān)信息的可檢測性、最大限度地簡化數(shù)據(jù),從而改進特征提取、圖像分割、匹配和識別的可靠性。

一般的預處理流程為:1灰度化->2幾何變換->3圖像增強

1.1 灰度化是什么?

現(xiàn)在大部分的彩色圖像都是采用 RGB顏色模式,在進行圖像處理時,我們往往需要對RGB三個分量通道依次進行處理,花費時間和計算成本會相對較高。但實際上RGB并不能反映圖像的形態(tài)特征,只是從光學的原理上進行顏色的調(diào)配。

所以我們經(jīng)常要把彩色圖像弄成8位的灰度值圖像直接進行處理,可以通過直方圖,灰度變化,還有正交變換之類的進行處理,減少所需處理的數(shù)據(jù)量,從而達到提高整個應(yīng)用系統(tǒng)的處理速度的目的。

目的:為了減小圖像原始數(shù)據(jù)量,提升計算效率,因為圖像處理中不一定需要對彩色圖像的RGB三個分量都進行處理。

科普環(huán)節(jié),大牛請?zhí)^:

R:Red 紅色

G:Green 綠色

B:Blue 藍色

RGB圖像就是我日常見到的大多數(shù)彩色圖像,它只使用R、G、B三種顏色,每種顏色有0~255范圍內(nèi)的強度值。如果按照不同的比例混合可以組合成約1677萬種顏色,幾乎包含了人類視力所能感知的所有顏色,而每幅彩色圖像是由RGB三幅灰度圖像組合而成。

二值圖像(Binary Image):圖像中每個像素的灰度值僅可取0或1,即不是取黑,就是取白,二值圖像可理解為黑白圖像

灰度圖像(Gray Scale Image):圖像中每個像素可以由0-255的灰度值表示,具體表現(xiàn)為從全黑到全白中間有255個介于中間的灰色值可以取

下面用一張圖來感受一下灰度圖與彩色圖像之間的聯(lián)系與差別

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

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

1)分量法:將彩色圖像中的三分量RGB的亮度作為三個灰度圖像的灰度值,可根據(jù)應(yīng)用需要選取三種中的一種灰度圖像。

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

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

2)最大值法:將彩色圖像中的三分量亮度的最大值作為灰度圖的灰度值。

3)平均值法:將彩色圖像中的三分量亮度求平均得到一個灰度圖。

4)加權(quán)平均法:根據(jù)重要性及其它指標,將三個分量以不同的權(quán)值進行加權(quán)平均。由于人眼對綠色的敏感最高,對藍色敏感最低,因此,按下式對RGB三分量進行加權(quán)平均能得到較合理的灰度圖像。

1.2 什么是圖像幾何變換?

圖像幾何變換又稱為圖像空間變換,通過平移、轉(zhuǎn)置、鏡像、旋轉(zhuǎn)、縮放等幾何變換對采集的圖像進行處理,用于改正圖像采集系統(tǒng)的系統(tǒng)誤差和儀器位置(成像角度、透視關(guān)系乃至鏡頭自身原因)的隨機誤差。

這就給觀測者或是圖像識別程序帶來了困擾,通過適當?shù)膸缀巫儞Q可以最大程度地消除這些幾何失真所產(chǎn)生的負面影響,有利于我們在后續(xù)的處理和識別工作中將注意力集中子圖像內(nèi)容本身。更確切地說是圖像中的對象,而不是該對象的角度和位置等。

因此, 幾何變換常常作為其他圖像處理應(yīng)用的預處理步驟, 是圖像歸一化的核心工作之一。它將一幅圖像中的坐標位置映射到另一幅圖像中的新坐標位置. 我們學習幾何變換的關(guān)鍵就是要確定這種空間映射關(guān)系, 以及映射過程中的變換參數(shù)。

目的:減少因幾何失真而造成圖像識別的問題,通過圖像空間變換最大程度地消除幾何失真產(chǎn)生的負面影響。

下面會給大家介紹一下幾何變換常用的幾種方法的原理和Matlab實現(xiàn)方法:

  • 圖像的平移變換;
  • 圖像的鏡像變換;
  • 圖像的轉(zhuǎn)置變換;
  • 圖像的旋轉(zhuǎn)變換;
  • 圖像的縮放。

1.2.1 圖像的平移變換

在進行書寫matlab代碼之前,先來了解一下圖像平移的理論基礎(chǔ)。設(shè)圖像的高度為H,寬度為W,如下所示:

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

我們知道,圖像是由像素組成的,而像素的集合就相當于一個二維的矩陣,每一個像素都有一個“位置”,也就是像素都有一個坐標。假設(shè)原來的像素的位置坐標為(x0,y0),經(jīng)過平移量(△x,△y)后,坐標變?yōu)椋▁1,y1),如下所示:

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

用數(shù)學式子表示可以表示為:

x1 = x0 + △x

y1 = y0 + △y

用矩陣表示為:

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

本來使用二維矩陣就可以了的,但是為了適應(yīng)像素、拓展適應(yīng)性,這里使用三位的向量。

式子中,矩陣:

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

稱為平移變換矩陣(因子),△x和△y為平移量。

此外,我們也知道了,圖像的高度H其實也就是像素的行數(shù),對于坐標1≤X≤H;圖像的長度也就是像素的列數(shù),對應(yīng)坐標1≤Y≤W。

我們先來看一下效果,,效果如下所示:

然后下面分析一下關(guān)鍵的代碼:

讀入圖像之后,得到im,我們可以看到im是一個三維的變量,包括了像素的位置(高度(即垂直長度)和寬度(即水平長度)),像素的顏色。(注,24位真彩圖:也是用矩陣表示,圖像像素直接用RGB顏色顯示,而不是通過顏色索引表。圖像像素的顏色用三個變量表示即(R,G,B),每個變量從0~255變化,因此一個像素也就是8bit*3=24bit,一個像素用24bit表示可以有2^24種顏色。)我們可以看到會有unit8,就是8bit的原因。

然后我們獲取圖像的大小,用H,W,Z三個變量接收,其中H接收了圖片的高度(也就是垂直長度),W接收了圖片的寬度(水平長度),然后Z接收了圖片的顏色值。

然后我們將圖像轉(zhuǎn)換成雙精度類型 I,這是因為使用雙精度可以仿真在轉(zhuǎn)換過程中發(fā)生精度損失的問題,也是方便我們進行轉(zhuǎn)換。轉(zhuǎn)換之后,我們可以看到unit8的類型別我們轉(zhuǎn)換成了double類型。

接著,我們構(gòu)造一個圖像res矩陣,這個圖像首先進行歸一化,也就是讓里面的元素全部為1,對于圖像,就是一張白色的圖片了。這個圖像主要是用來“保存”我們進行位移后的圖像。

然后我們就設(shè)置平移量、構(gòu)造平移變換矩陣。這個矩陣我們根據(jù)前面的理論部分可以得到。

接著便是重點了,進行平移變換。我們來一句一句解讀這個循環(huán)。當x0=1,y0=1時,得到第一個像素的位置,也就是(x0,y0)這個像素,然后將這個像素位置進行緩存,也就是構(gòu)造一個矩陣temp,即理論中的:

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

然后進行位置轉(zhuǎn)換,也就是進行矩陣相乘,用變換矩陣乘以原像素矩陣,得到了變換后像素矩陣:

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

接著,我們需要把變換后的像素位置“提取”出來,用x1,y1進行存儲,為什么要獲取位置呢?

這是因為我們要判斷這個像素是否越界了,也就是進行平移之后,得到的這個像素位置是否還存在顯示區(qū)域里面,也就是我們的:

if(x <= H) & (y <= W) & (x >= 1) & (y >= 1)語句

當還在顯示區(qū)域里面時,我們要進行移位顯示:

res(x1,y1,:)= I(x0,y0,:);%進行圖像平移,顏色賦值

這個語句的含義是,把I中的RGB值(也就是顏色值)賦值給res,也就是說,前面矩陣相乘只是移動的像素位置,但是顏色沒有進行移動,這里進行圖像顏色的平移,當x0=1,y0=1時,把該點的位置圖像顏色進行移動過去。

當x0=1,y0=2時,移動第二點。我們可以看到,這里的代碼是:從左到右平移,也就是先進行寬度的平移;從上到下,進行高度的平移。當兩個循環(huán)完成之后,圖像也就像平移完成了。

最后的代碼就是顯示圖像了,其中axis on 的意思是打開左邊,方便我們進行查看平移后的位置。從上面的效果我們可以得到,delx表示的高度的平移量,delx為正值時往下平移,delx為負值時往上平移;而dely表示的寬度的平移量,正值往右平移,負值往左平移。

1.2.2 圖像的鏡像變換

圖像的鏡像變換分為水平鏡像和垂直鏡像,下面分別進行這兩種鏡像的介紹,首先說明一下,無論是水平鏡像還是垂直鏡像,鏡像后高度和寬度都不變。

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

H圖像的高度,關(guān)聯(lián)x W:圖像的寬度,關(guān)聯(lián)y。

水平鏡像操作:以原圖像的垂直中軸線為中心,將圖像分為左右兩部分進行對稱變換。

示意圖如下所示:

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

水平鏡像中,原圖中的(x0,y0)經(jīng)過水平鏡像后,坐標變成了(x0,W-y0),用數(shù)學公式表達就是:

x1 = x0,

y1 = W-y0;

寫成矩陣就是:

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

也就是說,水平鏡像變換矩陣(因子)為:

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

代碼效果如下所示:

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

垂直鏡像操作:以原圖像的水平中軸線為中心,將圖像分為上下兩部分進行對稱變換。

示意圖如下所示:

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

垂直鏡像中,原圖中的(x0,y0)經(jīng)過垂直鏡像后,坐標變成了(H-x0,y0),用數(shù)學公式表達就是:

x1 = H – x0

y1 = y0

寫成矩陣就是:

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

也就是說,垂直鏡像變換矩陣(因子)為:

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

實現(xiàn)的效果如下所示:

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

1.2.3 圖像的轉(zhuǎn)置變換

圖像的轉(zhuǎn)置就是將圖像像素的x坐標和y坐標互換。這樣將改變圖像的高度和寬度,轉(zhuǎn)置后圖像的高度和寬度也將互換。

圖像的轉(zhuǎn)置用數(shù)學公式描述就是:

x1 = y0

y1 = x0

寫出矩陣如下所示:

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

實現(xiàn)的效果如下所示:

1.2.4 圖像的旋轉(zhuǎn)

一般情況下,旋轉(zhuǎn)操作會有一個旋轉(zhuǎn)中心,這個旋轉(zhuǎn)中心一般為圖像的中心,旋轉(zhuǎn)之后圖像的大小一般會發(fā)生改變。圖像像素原來的坐標為(x0,y0),(順時針)選擇Θ角度后得到(x1,y1),用數(shù)學公式表達如下所示:

x1 = x0·cosΘ+ y0·sinΘ

y1 = -x0·sinΘ+ y0·cosΘ

用矩陣表示如下所示:

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

代碼實現(xiàn)的效果如下所示:

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

1.2.5 圖像的縮放

下面值來介紹一下圖像的縮放主要是根據(jù)函數(shù)imresize來實現(xiàn)的,我們先來看看代碼和效果圖,然后分析圖像的縮放函數(shù)。

效果圖像所示:

縮?。?/p>

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

等大:

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

放大:

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

縮放并且設(shè)置行列:

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

線性插值:

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

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

感謝原作者的無私奉獻,希望可以有更多大??梢苑窒沓龈玫奈恼聗

對原文進行了部分刪減和修改,轉(zhuǎn)載自:https://www.cnblogs.com/IClearner/p/6842334.html

現(xiàn)在大家對圖像幾何變換已經(jīng)有一些了解了吧,但是幾何變換不會改變圖像的像素值,只是在圖像平面上進行像素的重新安排。

一個完整的幾何變換需要兩部分運算:除了空間變換所需的運算外,還需要使用灰度插值算法。因為按照幾何變換關(guān)系進行計算,輸出圖像的像素可能被映射到輸入圖像的非整數(shù)坐標上。而像素做為最小顯示單位(矢量圖形不是由像素構(gòu)成的,矢量可以是一個點或一條線),我們要為輸出圖像找到最合適的整數(shù)像素點。

1.2.6 什么是灰度插值算法?

灰度插值算法,通常采用的方法有最近鄰插值、雙線性插值和雙三次插值。在講插值算法之前,我們先來看下圖像的縮放問題。

傳統(tǒng)的繪圖工具中,有一種叫做“放大尺”的繪圖工具,畫家常用它來放大圖畫。在計算機上,我們將不再需求用放大尺去放大或縮小圖像了,把這個工作交給程序來完成就可以了。

我們所說的圖像都是指點陣圖,也就是用一個像素矩陣來描述圖像的方法,對于另一種圖像:用函數(shù)來描述的圖像的矢量圖,不再本文討論之列。

圖像放大時,像素也相應(yīng)地增加,但這些增加的像素從何而來?

這時插值就派上用場了:插值就是在不生成像素的情況下增加圖像像素大小的一種方法,在周圍像素色彩的基礎(chǔ)上用數(shù)學公式計算丟失像素的色彩。

所以在放大圖像時,圖像看上去會比較平滑、干凈,但必須注意的是插值并不能增加圖像信息

目的:因為圖像空間變換不改變圖像的像素值,只是對圖像的像素值重新進行映射,在表示映射關(guān)系時,輸出圖像的像素可能被映射到輸入圖像的非整數(shù)坐標上,灰度插值算法就是為輸出圖像找到最合適的整數(shù)像素坐標。

在知道什么是插值后,讓我們來一起看一下常用的插值算法的原理。

(1)最近鄰插值法 Nearest Neighbour Interpolate

是最簡單的一種插值算法,也稱作零階插值,就是令變換后像素的灰度值等于距它最近的輸入像素的灰度值。也就是說照搬旁邊的像素這樣做結(jié)果,會產(chǎn)生明顯可見的鋸齒,在待求像素的四鄰像素中,將距離待求像素最近的鄰灰度值賦給待求像素。

設(shè)i+u, j+v(i, j為正整數(shù), u, v為大于零小于1的小數(shù),下同)為待求象素坐標,則待求象素灰度的值 f(i+u, j+v)

如下圖所示:

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

如果(i+u, j+v)落在A區(qū),即u<0.5, v<0.5,則將左上角象素的灰度值賦給待求象素。同理,落在B區(qū)則賦予右上角的象素灰度值,落在C區(qū)則賦予左下角象素的灰度值,落在D區(qū)則賦予右下角象素的灰度值。最鄰近元法計算量較小,但可能會造成插值生成的圖像灰度上的不連續(xù),在灰度變化的地方可能出現(xiàn)明顯的鋸齒狀。

最近鄰插值法實現(xiàn)的效果如下所示:

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

從效果圖上,可以看到明顯的鋸齒,這就是因為最近鄰插值法不斷在復制最近鄰像素灰度值的原因,假設(shè)A、B、C、D為四個不同的像素點,現(xiàn)在把輸入圖像擴大4倍:

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

輸出圖像就由原來的4個像素點變成了16像素點,而新增的12個像素點并不是圖像新的真實像素,而是復制圖像鄰近像素產(chǎn)生的,就很容易出現(xiàn)鋸齒這種圖像失真現(xiàn)象。

(2)雙線性插值Bilinear Interpolation

1)雙線性插值

假設(shè)源圖像大小為mxn,目標圖像為axb。那么兩幅圖像的邊長比分別為:m/a和n/b。注意,通常這個比例不是整數(shù),編程存儲的時候要用浮點型。目標圖像的第(i,j)個像素點(i行j列)可以通過邊長比對應(yīng)回源圖像。其對應(yīng)坐標為(i*m/a,j*n/b)。

顯然,這個對應(yīng)坐標一般來說不是整數(shù),而非整數(shù)的坐標是無法在圖像這種離散數(shù)據(jù)上使用的。雙線性插值通過尋找距離這個對應(yīng)坐標最近的四個像素點,來計算該點的值(灰度值或者RGB值)。如果你的對應(yīng)坐標是(2.5,4.5),那么最近的四個像素是(2,4)、(2,5)、(3,4),(3,5)。

若圖像為灰度圖像,那么(i,j)點的灰度值可以通過一下公式計算:

f(i,j)=w1*p1+w2*p2+w3*p3+w4*p4;

其中,pi(i=1,2,3,4)為最近的四個像素點,wi(i=1,2,3,4)為各點相應(yīng)權(quán)值。關(guān)于權(quán)值的計算,在維基百科和百度百科上寫的很明白。

2)存在的問題

這部分的前提是,你已經(jīng)明白什么是雙線性插值并且在給定源圖像和目標圖像尺寸的情況下,可以用筆計算出目標圖像某個像素點的值。

當然,最好的情況是你已經(jīng)用某種語言實現(xiàn)了網(wǎng)上一大堆博客上原創(chuàng)或轉(zhuǎn)載的雙線性插值算法。然后發(fā)現(xiàn)計算出來的結(jié)果和matlab、openCV對應(yīng)的resize()函數(shù)得到的結(jié)果完全不一樣。

那這個究竟是怎么回事呢?

其實答案很簡單,就是坐標系的選擇問題,或者說源圖像和目標圖像之間的對應(yīng)問題。

按照網(wǎng)上一些博客上寫的,源圖像和目標圖像的原點(0,0)均選擇左上角,然后根據(jù)插值公式計算目標圖像每點像素。

假設(shè)你需要將一幅5×5的圖像縮小成3×3,那么源圖像和目標圖像各個像素之間的對應(yīng)關(guān)系如下:

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

只畫了一行,用做示意,從圖中可以很明顯的看到,如果選擇右上角為原點(0,0),那么最右邊和最下邊的像素實際上并沒有參與計算,而且目標圖像的每個像素點計算出的灰度值也相對于源圖像偏左偏上。

那么,讓坐標加1或者選擇右下角為原點怎么樣呢?很不幸,還是一樣的效果,不過這次得到的圖像將偏右偏下。

最好的方法就是,兩個圖像的幾何中心重合,并且目標圖像的每個像素之間都是等間隔的,并且都和兩邊有一定的邊距,這也是matlab和openCV的做法。如下圖:

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

如果你不懂我上面說的什么,沒關(guān)系,只要在計算對應(yīng)坐標的時候改為以下公式即可:

int x=(i+0.5)*m/a-0.5

int y=(j+0.5)*n/b-0.5

instead of

int x=i*m/a

int y=j*n/b

利用上述公式,將得到正確的雙線性插值結(jié)果

雙線性內(nèi)插法實現(xiàn)的效果如下所示:

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

雙線性內(nèi)插法的計算比最鄰近點法復雜,計算量較大但沒有灰度不連續(xù)的缺點,結(jié)果基本令人滿意。它具有低通濾波性質(zhì),使高頻分量受損,圖像輪廓可能會有一點模糊。

(3)雙三次插值Bicubic interpolation

雙三次插值是一種更加復雜的插值方式,它能創(chuàng)造出比雙線性插值更平滑的圖像邊緣。雙三次插值方法通常運用在一部分圖像處理軟件、打印機驅(qū)動程序和數(shù)碼相機中,對原圖像或原圖像的某些區(qū)域進行放大。Adobe Photoshop CS 更為用戶提供了兩種不同的雙三次插值方法:雙三次插值平滑化和雙三次插值銳化。

在數(shù)值分析這個數(shù)學分支中,雙三次插值是二維空間中最常用的插值方法。在這種方法中,函數(shù)f在點 (x,y) 的值可以通過矩形網(wǎng)格中最近的十六個采樣點的加權(quán)平均得到,在這里需要使用兩個多項式插值三次函數(shù),每個方向使用一個。

雙三次插值又叫雙立方插值,用于在圖像中“插值”(Interpolating)或增加“像素”(Pixel)數(shù)量/密度的一種方法。通常利用插值技術(shù)增加圖形數(shù)據(jù),以便在它打印或其他形式輸出的時候,能夠增大打印面積以及(或者)分辨率。

有不同的插值技術(shù)可供選用。雙立方插值通常能產(chǎn)生效果最好,最精確的插補圖形,但它速度也幾乎是最慢的?!半p線性插值”(Bilinear interpolation)的速度則要快一些,但沒有前者精確。

在商業(yè)性圖像編輯軟件中,經(jīng)常采用的是速度最快,但也是最不準確的“最近相鄰”(Nearest Neighbor)插值。其他一些插值技術(shù)通常只在高檔或單獨應(yīng)用的程序中出現(xiàn)。

顯然,無論技術(shù)多么高級,插補過的數(shù)據(jù)肯定沒有原始數(shù)據(jù)準確。這意味著對一個圖形文件進行插值處理后,雖然文件長度增加了(數(shù)據(jù)量增大),但不會有原先那幅圖銳利,可能會在圖形質(zhì)量上打折扣。

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

這公式是什么?我是誰?我在干嘛……

這部分確實還沒整明白,先把結(jié)果告訴大家,原理后續(xù)再繼續(xù)更新……

雙三次曲線插值法實現(xiàn)的效果如下所示:

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

雙三次曲線插值方法計算量較大,但處理圖像效果是最好的。這種算法是一很常見的算法,普遍用在圖像編輯軟件、打印機驅(qū)動和數(shù)碼相機上。

現(xiàn)在有許多數(shù)碼相機廠商將插值算法用在了數(shù)碼相機上,并將通過算法得到的分辨率值大肆宣傳。固然他們比雙三次插值算法等先進很多,但是事實圖像的細節(jié)不能憑空造出來的。因為插值分辨率是數(shù)碼相機通過自 身的內(nèi)置軟件來增加圖像素,從而達到大分辨率效果。

啊哈,對于小白來說這些內(nèi)容已經(jīng)很燒腦了,大家看完之后要盡量動手嘗試一下哦,下一篇會繼續(xù)為大家更新圖像增強和圖像恢復的部分。

注:文章部分內(nèi)容和圖片來自于互聯(lián)網(wǎng),在參考文獻中會注明出處,如有侵權(quán)等問題,請及時聯(lián)系我刪除,謝謝大佬們的支持和無私奉獻~

第二篇連載已更新,已經(jīng)完成的圖像預處理的所有內(nèi)容,喜歡小伙伴可以繼續(xù)閱讀哈~

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

 

作者:賈濤,微信公眾號:賈產(chǎn)品(ID:JIAPRODUCT),互聯(lián)網(wǎng)愛好者。

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

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

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 能加個v嗎

    來自河北 回復
    1. 當然可以,微信號:ai459926247

      來自河南 回復
  2. 微信交流

    來自廣東 回復
    1. 歡迎歡迎

      來自上海 回復
    2. 769710589

      來自廣東 回復
  3. 來自廣東 回復