MLX90640 紅外熱成像儀測溫模塊開發筆記(五)陣列插值-由 32*24 像素到 512*384 像素
穩控科技MLX90640 紅外熱成像儀測溫模塊
MLX90640 的 32*24=768 像素雖然比以往的 8*8 或者 16*8 像素提高了很多,但若直接用這些像素還是不能很好的形成熱像圖,為了使用這些像素點平滑成像就需要對其進行插值,使用更多的像素來繪制圖像。
看了一些別人的算法,感覺主要就是多項式插值,僅是插值方法的組合方式不同。
算法依據
比較有代表性的是杭州電子科技大學楊風健等《基于 MLX90620 的低成本紅外熱成像系統設計》,使用三次多項式+雙線性插值,將原 16*4 像素擴展為 256*64 像素。雙線性插值的本質就是一次函數(一次多項式)。該文章得到的結論是:
(1) 雙線性插值法計算量小、速度快,但對比度低、細節模糊。
(2) 三次多項式插值,圖像效果較清晰,對比度較高,但計算量較大。
(3) 先雙線性插值再三次多項式插值,效果優于上兩種單一插值方法。
(4) 先三次多項式插值再雙線性插值,高低溫分布更加明顯,圖像效果更接趨于真實。同時,該文章還使用了一種對圖像質量的評估方法---熵&平均梯度
熵,熱力學中表征物質狀態的參量之一,用符號 S 表示,其物理意義是體系混亂程度的度量。用于圖像評價表示圖像表達信息量的多少。圖像熵越高信息量越大。
平均梯度,指圖像的邊界或影線兩側附近灰度有明顯差異,即灰度變化率大,這種變化率的大小可用來表示圖像清晰度。它反映了圖像微小細節反差變化的速率,即圖像多維方向上密度變化的速率,表征圖像的相對清晰程度。值越大表示圖像越清晰。
插值實現
每行或者列的首個像素在前面插值 2 個點
1~n-1 像素,每個像素后面插值 3 個點最后一個像素,在后面插值 1 個點
n+2+(n-1)*3+1=n+2+n*3-1*3+1=4n+2-3+1=4n,即:像素變為原來的 4 倍
上面的處理方法,首個像素之前插入 2 個點,最后一個像素之后插入 1 個點,下次插值
時,應首個之前插值 1 個點,末個像素之后插值 2 個點,以達到圖像平衡。
每次插值后像素為插值前的 4 倍,經過兩次插值,即可將 32*24 改變為 512*384 像素。下面是已經實際使用的插值算法,不過是用 Pascal(Delphi)寫的,有興趣的可以改為
C 語言的,語句對應直接改就行,語言本來就是相通的嘛。
//這是一維數組插值算法
//SourceDatas:TDoubles;插值前的一維數組
//Dir:Integer;在哪個方向和末尾插入 2 個值(0:前面;1:末尾)
//times:Integer 多項式的項數,一次多項式是 2 項,二次多項式是 3 項
//返回值:插值后的一維數組(數量是插值前*4) function PolynomialInterpolationArr(
SourceDatas:TDoubles; Dir:Integer;
times:Integer):TDoubles;//一維數組插值
var
i,j,k:Integer;
arrCount:Integer;
審核編輯:湯梓紅
-
紅外熱成像儀
+關注
關注
1文章
112瀏覽量
14930 -
測溫模塊
+關注
關注
0文章
11瀏覽量
2861 -
MLX90640
+關注
關注
2文章
22瀏覽量
1248
發布評論請先 登錄
相關推薦
評論