MLX90640 紅外熱成像儀測溫模塊開發(fā)筆記(五)
MLX90640 紅外熱成像儀測溫模塊開發(fā)筆記(五)陣列插值-由 32*24 像素到 512*384 像素?

MLX90640 的 32*24=768 像素雖然比以往的 8*8 或者 16*8 像素提高了很多,但若直接用這些像素還是不能很好的形成熱像圖,為了使用這些像素點(diǎn)平滑成像就需要對其進(jìn)行插值,使用更多的像素來繪制圖像。
看了一些別人的算法,感覺主要就是多項(xiàng)式插值,僅是插值方法的組合方式不同。?
算法依據(jù)?
比較有代表性的是杭州電子科技大學(xué)楊風(fēng)健等《基于 MLX90620 的低成本紅外熱成像系統(tǒng)設(shè)計(jì)》,使用三次多項(xiàng)式+雙線性插值,將原 16*4 像素?cái)U(kuò)展為 256*64 像素。雙線性插值的本質(zhì)就是一次函數(shù)(一次多項(xiàng)式)。該文章得到的結(jié)論是:?
(1) 雙線性插值法計(jì)算量小、速度快,但對比度低、細(xì)節(jié)模糊。?
(2) 三次多項(xiàng)式插值,圖像效果較清晰,對比度較高,但計(jì)算量較大。?
(3) 先雙線性插值再三次多項(xiàng)式插值,效果優(yōu)于上兩種單一插值方法。?
(4) 先三次多項(xiàng)式插值再雙線性插值,高低溫分布更加明顯,圖像效果更接趨于真實(shí)。同時(shí),該文章還使用了一種對圖像質(zhì)量的評估方法---熵&平均梯度?
熵,熱力學(xué)中表征物質(zhì)狀態(tài)的參量之一,用符號 S 表示,其物理意義是體系混亂程度的度量。用于圖像評價(jià)表示圖像表達(dá)信息量的多少。圖像熵越高信息量越大。?
平均梯度,指圖像的邊界或影線兩側(cè)附近灰度有明顯差異,即灰度變化率大,這種變化率的大小可用來表示圖像清晰度。它反映了圖像微小細(xì)節(jié)反差變化的速率,即圖像多維方向上密度變化的速率,表征圖像的相對清晰程度。值越大表示圖像越清晰。
插值實(shí)現(xiàn)?
每行或者列的首個像素在前面插值 2 個點(diǎn)?
1~n-1 像素,每個像素后面插值 3 個點(diǎn)最后一個像素,在后面插值 1 個點(diǎn)?
n+2+(n-1)*3+1=n+2+n*3-1*3+1=4n+2-3+1=4n,即:像素變?yōu)樵瓉淼?4 倍?
上面的處理方法,首個像素之前插入 2 個點(diǎn),最后一個像素之后插入 1 個點(diǎn),下次插值
時(shí),應(yīng)首個之前插值 1 個點(diǎn),末個像素之后插值 2 個點(diǎn),以達(dá)到圖像平衡。?
每次插值后像素為插值前的 4 倍,經(jīng)過兩次插值,即可將 32*24 改變?yōu)?512*384 像素。下面是已經(jīng)實(shí)際使用的插值算法,不過是用 Pascal(Delphi)寫的,有興趣的可以改為
C 語言的,語句對應(yīng)直接改就行,語言本來就是相通的嘛。?
?

//這是一維數(shù)組插值算法?
//SourceDatas:TDoubles;插值前的一維數(shù)組?
//Dir:Integer;在哪個方向和末尾插入 2 個值(0:前面;1:末尾)?
//times:Integer 多項(xiàng)式的項(xiàng)數(shù),一次多項(xiàng)式是 2 項(xiàng),二次多項(xiàng)式是 3 項(xiàng)?
//返回值:插值后的一維數(shù)組(數(shù)量是插值前*4) function PolynomialInterpolationArr(?
SourceDatas:TDoubles; Dir:Integer;?
times:Integer):TDoubles;//一維數(shù)組插值?
var?
? ? i,j,k:Integer;?
? ? arrCount:Integer;?