在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > MLX90640 紅外熱成像儀測溫模塊開發(fā)筆記(四)

            MLX90640 紅外熱成像儀測溫模塊開發(fā)筆記(四)

            發(fā)布人:河北穩(wěn)控科技 時間:2022-07-22 來源:工程師 發(fā)布文章

            MLX90640 紅外熱成像儀測溫模塊開發(fā)筆記(四)損壞和不良像素的處理 

            如前“開發(fā)筆記(一)”所說,MLX90640 可能存在不超過 4 個像素的損壞或者不良像素,在溫度計算過程完成后,這些不良像素點會得到錯誤的溫度數(shù)據(jù),對于處理這些不良數(shù)據(jù) MLX 也給出了推薦方法和具體的函數(shù)。(其實就是找相鄰的正常的溫度數(shù)據(jù)取平均來代替不良數(shù)據(jù)) 

             紅外成像儀效果圖去二維碼.png


            前面開發(fā)筆記(一)的內容中所說的 API 庫,里面缺少了對不良像素點的處理函數(shù),在這里補上。 

            int CheckAdjacentPixels(uint16_t pix1, uint16_t pix2)

            {

            int pixPosDif;


            pixPosDif = pix1 - pix2;

            if(pixPosDif > -34 && pixPosDif < -30)

            {

            return -6;

            }

            if(pixPosDif > -2 && pixPosDif < 2)

            {

            return -6;

            }

            if(pixPosDif > 30 && pixPosDif < 34)

            {

            return -6;

            }


            return 0;

            }


            float GetMedian(float *values, int n)

            {

            float temp;


            for(int i=0; i<n-1; i++)

            {

            for(int j=i+1; j<n; j++)

            {

            if(values[j] < values[i])

            {

            temp = values[i]; values[i] = values[j]; values[j] = temp;


            }

            }


            if(n%2==0)

            {

            return ((values[n/2] + values[n/2 - 1]) / 2.0);


             

            }

            else

            {


            }

             





            return values[n/2];

             


            }


            int IsPixelBad(uint16_t pixel,paramsMLX90640 *params)

            {

            for(int i=0; i<5; i++)

            {

            if(pixel == params->outlierPixels[i] || pixel == params->brokenPixels[i])

            {

            return 1;

            }

            }


            return 0;

            }

            void MLX90640_BadPixelsCorrection(uint16_t *pixels, float *to, int mode, paramsMLX90640

            *params)

            {

            float ap[4]; uint8_t pix; uint8_t line; uint8_t column;


            pix = 0;

            while(pixels[pix] != 0xFFFF)

            {

            line = pixels[pix]>>5;

            column = pixels[pix] - (line<<5);


            if(mode == 1)

            {

            if(line == 0)

            {

            if(column == 0)

            {

            to[pixels[pix]] = to[33];

            }

            else if(column == 31)

            {

             


            }

            else

            {


            }

            }

             

            to[pixels[pix]] = to[62];





            to[pixels[pix]] = (to[pixels[pix]+31] + to[pixels[pix]+33])/2.0;

             

            else if(line == 23)

            {

            if(column == 0)

            {

            to[pixels[pix]] = to[705];

            }

            else if(column == 31)

            {

             


            }

            else

            {


            }

            }

             

            to[pixels[pix]] = to[734];





            to[pixels[pix]] = (to[pixels[pix]-33] + to[pixels[pix]-31])/2.0;

             

            else if(column == 0)

            {

            to[pixels[pix]] = (to[pixels[pix]-31] + to[pixels[pix]+33])/2.0;

            }

            else if(column == 31)

            {

             


            }

            else

            {

             

            to[pixels[pix]] = (to[pixels[pix]-33] + to[pixels[pix]+31])/2.0;





            ap[0] = to[pixels[pix]-33];

            ap[1] = to[pixels[pix]-31]; ap[2] = to[pixels[pix]+31]; ap[3] = to[pixels[pix]+33];

            to[pixels[pix]] = GetMedian(ap,4);



            }

            else

            {

             

            }





            if(column == 0)

            {

             

            to[pixels[pix]] = to[pixels[pix]+1];

            }

            else if(column == 1 || column == 30)

            {

            to[pixels[pix]] = (to[pixels[pix]-1]+to[pixels[pix]+1])/2.0;

            }

            else if(column == 31)

            {

             


            }

            else

            {


            0)

             

            to[pixels[pix]] = to[pixels[pix]-1];





            if(IsPixelBad(pixels[pix]-2,params) == 0 && IsPixelBad(pixels[pix]+2,params) ==


            {

            ap[0] = to[pixels[pix]+1] - to[pixels[pix]+2]; ap[1] = to[pixels[pix]-1] - to[pixels[pix]-2];

            if(fabs(ap[0]) > fabs(ap[1]))

            {

             









            }

            else

            {

             


            }

            else

            {


            }

             

            to[pixels[pix]] = to[pixels[pix]-1] + ap[1];





            to[pixels[pix]] = to[pixels[pix]+1] + ap[0];

             

            to[pixels[pix]] = (to[pixels[pix]-1]+to[pixels[pix]+1])/2.0;

            }

            }

            }

            pix = pix + 1;

            }

            }

            用法很簡單,在開發(fā)筆記(三)MLX90640_CalculateTo(Frame, MLXPars, 0.95, Tr, Temp);之后添加兩行即可。如下(斜體是添加的內容):

            ……

            MLX90640_CalculateTo(Frame, MLXPars, 0.95, Tr, Temp); MLX90640_BadPixelsCorrection(MLXPars.brokenPixels, Temp, 1, MLXPars); MLX90640_BadPixelsCorrection(MLXPars.outlierPixels, Temp, 1, MLXPars);

            ……

            /*

            經(jīng)過上面的處理后,Temp 中的損壞和不良像素點已經(jīng)處理,Temp 數(shù)組中是處理完成后的

            768 個溫度值。

            */


            紅外成像儀效果圖2.png成果展示。

            *博客內容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。




            相關推薦

            技術專區(qū)

            關閉