Author Topic: Yet another cheap thermal imager incoming.. Seek Thermal  (Read 1071577 times)

0 Members and 10 Guests are viewing this topic.

Offline miguelvp

  • Super Contributor
  • ***
  • Posts: 5550
  • Country: us
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #475 on: October 27, 2014, 10:28:30 am »
I was able to remove most of the dead pixels with this simple (C#) code:

Cool, I'm trying to incorporate it but it's late so tomorrow :)
 

Offline mikeselectricstuffTopic starter

  • Super Contributor
  • ***
  • Posts: 14001
  • Country: gb
    • Mike's Electric Stuff
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #476 on: October 27, 2014, 11:27:30 am »
For the record this is what the sensor looks like after running for about 10 mins
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 

Offline arius

  • Newbie
  • Posts: 3
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #477 on: October 27, 2014, 11:39:39 am »
If someone want use this camera outside USA - I use chrome extension APK Downloader http://apps.evozi.com/apk-downloader/ - I can download Seek Thermal apk directly from the store without using VPN.
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1003
  • Country: si
    • Frenki.net
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #478 on: October 27, 2014, 12:39:45 pm »
@miguelvp:
I've improved code quite a bit so that details don't get lost because of noise reduction...
Code: [Select]
//must include: using System.Linq;
            //set level of the noise reduction:
            int noiseReduction = 25; //smaller number means less noise but also less details, 25 seems to be a good value
            //get image
            Bitmap sourceImg = new Bitmap(@"C:\temp\thermo\seek.png");
            Color centerPixel;
            int avgVal;
            int[] arrColor = new int[4];

            //loop trough pixels
            for (int x = 0; x < sourceImg.Width-2; x++)
            {
                for (int y = 0; y < sourceImg.Height-2; y++)
                {
                    arrColor[0] = sourceImg.GetPixel(x, y + 1).R;
                    arrColor[1] = sourceImg.GetPixel(x + 2, y + 1).R;
                    arrColor[2] = sourceImg.GetPixel(x + 1, y).R;
                    arrColor[3] = sourceImg.GetPixel(x + 1, y + 2).R;

                    //get average value, but exclude neighbour dead pixels from average:
                    avgVal = (arrColor.Sum() - (arrColor.Min() + arrColor.Max())) / 2;

                    centerPixel = sourceImg.GetPixel(x + 1, y + 1);
                    if (Math.Abs(avgVal - centerPixel.R) > noiseReduction) //if pixel is too different use average color from near pixels
                    {
                        sourceImg.SetPixel(x + 1, y + 1, Color.FromArgb(avgVal, avgVal, avgVal));
                    }
                }
            }
sourceImg.Save(Application.StartupPath + "\\clear.png");
« Last Edit: October 27, 2014, 08:16:49 pm by frenky »
 

Offline eneuro

  • Super Contributor
  • ***
  • Posts: 1528
  • Country: 00
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #479 on: October 27, 2014, 12:58:39 pm »
It works on a standard USB 2.0 port but you have to install the winusb driver with Zadig
Nice  :-+
However, I want connect Seek Thermal not on Window$ but Linux-I hope maybe someone will make it available like other classic USB video cameres, but thermal source ;)
If not I will try to DIY it myself, but I will have this cam next year, so meybe even they release some kind of thermal module like Flir's Lepton to embbend in own projects.

On another note, brute force approach to add the Iron palette directly to the code, I know I could have just make it so it will read a file with the palette but meh. Notepad++ helped me
I used libPNG to generate automatic code to include into C source file, so make it available using JNI in Android application, or generate output for OpenCV, and of course optimize it for speed  ;)
This is automatic generated using mentioned iron256.lut.png posted above, so now I can easy add any other LUTs as C source code, but I think that this FLIR's like iron pallette is very good looking, so I have implemented only this one for the moment in seek_thermal_lut_iron256.c simply C source file
Code: [Select]
#ifndef _SEEK_THERMAL_LUT_IRON256_C_
#define _SEEK_THERMAL_LUT_IRON256_C_

void seek_thermal_lut_iron256_get(unsigned int idx, unsigned char *pr, unsigned char *pg, unsigned char *pb ) {
static unsigned char *lutr= NULL;
static unsigned char *lutg= NULL;
static unsigned char *lutb= NULL;


if(lutr==NULL || lutg==NULL || lutb==NULL ) {
lutr=(unsigned char*)malloc(sizeof(unsigned char)*256);
lutg=(unsigned char*)malloc(sizeof(unsigned char)*256);
lutb=(unsigned char*)malloc(sizeof(unsigned char)*256);

lutr[0]= 0; lutg[0]= 0; lutb[0]= 0; 
lutr[1]= 0; lutg[1]= 0; lutb[1]= 7; 
lutr[2]= 0; lutg[2]= 0; lutb[2]= 24; 
lutr[3]= 0; lutg[3]= 0; lutb[3]= 38; 
lutr[4]= 0; lutg[4]= 0; lutb[4]= 46; 
lutr[5]= 0; lutg[5]= 0; lutb[5]= 52; 
lutr[6]= 0; lutg[6]= 0; lutb[6]= 59; 
lutr[7]= 0; lutg[7]= 0; lutb[7]= 66; 
lutr[8]= 0; lutg[8]= 0; lutb[8]= 73; 
lutr[9]= 0; lutg[9]= 0; lutb[9]= 80; 
lutr[10]= 1; lutg[10]= 0; lutb[10]= 85; 
lutr[11]= 2; lutg[11]= 0; lutb[11]= 89; 
lutr[12]= 3; lutg[12]= 0; lutb[12]= 93; 
lutr[13]= 4; lutg[13]= 0; lutb[13]= 97; 
lutr[14]= 5; lutg[14]= 0; lutb[14]= 101; 
lutr[15]= 6; lutg[15]= 0; lutb[15]= 104; 
lutr[16]= 8; lutg[16]= 0; lutb[16]= 108; 
lutr[17]= 10; lutg[17]= 0; lutb[17]= 112; 
lutr[18]= 11; lutg[18]= 0; lutb[18]= 116; 
lutr[19]= 13; lutg[19]= 0; lutb[19]= 118; 
lutr[20]= 15; lutg[20]= 0; lutb[20]= 119; 
lutr[21]= 17; lutg[21]= 0; lutb[21]= 121; 
lutr[22]= 20; lutg[22]= 0; lutb[22]= 123; 
lutr[23]= 24; lutg[23]= 0; lutb[23]= 126; 
lutr[24]= 27; lutg[24]= 0; lutb[24]= 128; 
lutr[25]= 30; lutg[25]= 0; lutb[25]= 130; 
lutr[26]= 33; lutg[26]= 0; lutb[26]= 133; 
lutr[27]= 36; lutg[27]= 0; lutb[27]= 135; 
lutr[28]= 40; lutg[28]= 0; lutb[28]= 136; 
lutr[29]= 43; lutg[29]= 0; lutb[29]= 138; 
lutr[30]= 47; lutg[30]= 0; lutb[30]= 139; 
lutr[31]= 50; lutg[31]= 0; lutb[31]= 141; 
lutr[32]= 53; lutg[32]= 0; lutb[32]= 142; 
lutr[33]= 56; lutg[33]= 0; lutb[33]= 144; 
lutr[34]= 59; lutg[34]= 0; lutb[34]= 145; 
lutr[35]= 62; lutg[35]= 0; lutb[35]= 146; 
lutr[36]= 64; lutg[36]= 0; lutb[36]= 148; 
lutr[37]= 66; lutg[37]= 0; lutb[37]= 149; 
lutr[38]= 69; lutg[38]= 0; lutb[38]= 150; 
lutr[39]= 72; lutg[39]= 0; lutb[39]= 150; 
lutr[40]= 75; lutg[40]= 0; lutb[40]= 150; 
lutr[41]= 78; lutg[41]= 0; lutb[41]= 151; 
lutr[42]= 81; lutg[42]= 0; lutb[42]= 151; 
lutr[43]= 83; lutg[43]= 0; lutb[43]= 152; 
lutr[44]= 87; lutg[44]= 0; lutb[44]= 152; 
lutr[45]= 90; lutg[45]= 0; lutb[45]= 153; 
lutr[46]= 93; lutg[46]= 0; lutb[46]= 154; 
lutr[47]= 96; lutg[47]= 0; lutb[47]= 155; 
lutr[48]= 99; lutg[48]= 0; lutb[48]= 155; 
lutr[49]= 102; lutg[49]= 0; lutb[49]= 155; 
lutr[50]= 105; lutg[50]= 0; lutb[50]= 155; 
lutr[51]= 108; lutg[51]= 0; lutb[51]= 156; 
lutr[52]= 111; lutg[52]= 0; lutb[52]= 156; 
lutr[53]= 113; lutg[53]= 0; lutb[53]= 157; 
lutr[54]= 115; lutg[54]= 0; lutb[54]= 157; 
lutr[55]= 119; lutg[55]= 0; lutb[55]= 157; 
lutr[56]= 122; lutg[56]= 0; lutb[56]= 157; 
lutr[57]= 125; lutg[57]= 0; lutb[57]= 157; 
lutr[58]= 128; lutg[58]= 0; lutb[58]= 157; 
lutr[59]= 130; lutg[59]= 0; lutb[59]= 157; 
lutr[60]= 133; lutg[60]= 0; lutb[60]= 157; 
lutr[61]= 136; lutg[61]= 0; lutb[61]= 157; 
lutr[62]= 138; lutg[62]= 0; lutb[62]= 157; 
lutr[63]= 141; lutg[63]= 0; lutb[63]= 157; 
lutr[64]= 144; lutg[64]= 0; lutb[64]= 156; 
lutr[65]= 147; lutg[65]= 0; lutb[65]= 156; 
lutr[66]= 150; lutg[66]= 0; lutb[66]= 155; 
lutr[67]= 153; lutg[67]= 0; lutb[67]= 155; 
lutr[68]= 155; lutg[68]= 0; lutb[68]= 155; 
lutr[69]= 157; lutg[69]= 0; lutb[69]= 155; 
lutr[70]= 160; lutg[70]= 0; lutb[70]= 155; 
lutr[71]= 162; lutg[71]= 0; lutb[71]= 155; 
lutr[72]= 164; lutg[72]= 0; lutb[72]= 155; 
lutr[73]= 167; lutg[73]= 0; lutb[73]= 154; 
lutr[74]= 169; lutg[74]= 0; lutb[74]= 154; 
lutr[75]= 171; lutg[75]= 0; lutb[75]= 153; 
lutr[76]= 172; lutg[76]= 0; lutb[76]= 153; 
lutr[77]= 174; lutg[77]= 1; lutb[77]= 152; 
lutr[78]= 176; lutg[78]= 1; lutb[78]= 152; 
lutr[79]= 177; lutg[79]= 1; lutb[79]= 151; 
lutr[80]= 179; lutg[80]= 1; lutb[80]= 151; 
lutr[81]= 181; lutg[81]= 2; lutb[81]= 150; 
lutr[82]= 183; lutg[82]= 2; lutb[82]= 149; 
lutr[83]= 184; lutg[83]= 3; lutb[83]= 149; 
lutr[84]= 185; lutg[84]= 4; lutb[84]= 149; 
lutr[85]= 187; lutg[85]= 5; lutb[85]= 148; 
lutr[86]= 188; lutg[86]= 5; lutb[86]= 147; 
lutr[87]= 190; lutg[87]= 5; lutb[87]= 146; 
lutr[88]= 191; lutg[88]= 6; lutb[88]= 146; 
lutr[89]= 192; lutg[89]= 7; lutb[89]= 145; 
lutr[90]= 193; lutg[90]= 8; lutb[90]= 144; 
lutr[91]= 194; lutg[91]= 9; lutb[91]= 143; 
lutr[92]= 195; lutg[92]= 11; lutb[92]= 142; 
lutr[93]= 196; lutg[93]= 12; lutb[93]= 141; 
lutr[94]= 197; lutg[94]= 13; lutb[94]= 140; 
lutr[95]= 199; lutg[95]= 14; lutb[95]= 138; 
lutr[96]= 200; lutg[96]= 16; lutb[96]= 136; 
lutr[97]= 201; lutg[97]= 18; lutb[97]= 134; 
lutr[98]= 202; lutg[98]= 19; lutb[98]= 133; 
lutr[99]= 203; lutg[99]= 20; lutb[99]= 131; 
lutr[100]= 205; lutg[100]= 22; lutb[100]= 129; 
lutr[101]= 206; lutg[101]= 23; lutb[101]= 127; 
lutr[102]= 207; lutg[102]= 25; lutb[102]= 124; 
lutr[103]= 208; lutg[103]= 26; lutb[103]= 121; 
lutr[104]= 209; lutg[104]= 27; lutb[104]= 119; 
lutr[105]= 210; lutg[105]= 29; lutb[105]= 116; 
lutr[106]= 211; lutg[106]= 31; lutb[106]= 114; 
lutr[107]= 212; lutg[107]= 33; lutb[107]= 112; 
lutr[108]= 213; lutg[108]= 34; lutb[108]= 108; 
lutr[109]= 214; lutg[109]= 36; lutb[109]= 104; 
lutr[110]= 215; lutg[110]= 38; lutb[110]= 101; 
lutr[111]= 216; lutg[111]= 40; lutb[111]= 98; 
lutr[112]= 217; lutg[112]= 42; lutb[112]= 95; 
lutr[113]= 218; lutg[113]= 45; lutb[113]= 92; 
lutr[114]= 219; lutg[114]= 47; lutb[114]= 87; 
lutr[115]= 220; lutg[115]= 48; lutb[115]= 82; 
lutr[116]= 221; lutg[116]= 49; lutb[116]= 77; 
lutr[117]= 222; lutg[117]= 51; lutb[117]= 71; 
lutr[118]= 223; lutg[118]= 53; lutb[118]= 65; 
lutr[119]= 224; lutg[119]= 55; lutb[119]= 60; 
lutr[120]= 224; lutg[120]= 56; lutb[120]= 54; 
lutr[121]= 225; lutg[121]= 58; lutb[121]= 49; 
lutr[122]= 226; lutg[122]= 60; lutb[122]= 43; 
lutr[123]= 227; lutg[123]= 62; lutb[123]= 37; 
lutr[124]= 228; lutg[124]= 63; lutb[124]= 32; 
lutr[125]= 228; lutg[125]= 65; lutb[125]= 28; 
lutr[126]= 229; lutg[126]= 67; lutb[126]= 26; 
lutr[127]= 230; lutg[127]= 69; lutb[127]= 24; 
lutr[128]= 230; lutg[128]= 71; lutb[128]= 21; 
lutr[129]= 231; lutg[129]= 73; lutb[129]= 19; 
lutr[130]= 232; lutg[130]= 75; lutb[130]= 17; 
lutr[131]= 232; lutg[131]= 76; lutb[131]= 15; 
lutr[132]= 233; lutg[132]= 77; lutb[132]= 13; 
lutr[133]= 234; lutg[133]= 78; lutb[133]= 12; 
lutr[134]= 235; lutg[134]= 80; lutb[134]= 11; 
lutr[135]= 235; lutg[135]= 82; lutb[135]= 10; 
lutr[136]= 235; lutg[136]= 84; lutb[136]= 9; 
lutr[137]= 236; lutg[137]= 86; lutb[137]= 8; 
lutr[138]= 236; lutg[138]= 88; lutb[138]= 8; 
lutr[139]= 237; lutg[139]= 90; lutb[139]= 7; 
lutr[140]= 237; lutg[140]= 91; lutb[140]= 6; 
lutr[141]= 238; lutg[141]= 92; lutb[141]= 5; 
lutr[142]= 238; lutg[142]= 94; lutb[142]= 5; 
lutr[143]= 239; lutg[143]= 95; lutb[143]= 4; 
lutr[144]= 239; lutg[144]= 97; lutb[144]= 4; 
lutr[145]= 240; lutg[145]= 99; lutb[145]= 3; 
lutr[146]= 240; lutg[146]= 101; lutb[146]= 3; 
lutr[147]= 241; lutg[147]= 102; lutb[147]= 3; 
lutr[148]= 241; lutg[148]= 103; lutb[148]= 3; 
lutr[149]= 241; lutg[149]= 105; lutb[149]= 2; 
lutr[150]= 241; lutg[150]= 106; lutb[150]= 2; 
lutr[151]= 241; lutg[151]= 108; lutb[151]= 1; 
lutr[152]= 242; lutg[152]= 109; lutb[152]= 1; 
lutr[153]= 242; lutg[153]= 111; lutb[153]= 1; 
lutr[154]= 243; lutg[154]= 113; lutb[154]= 1; 
lutr[155]= 243; lutg[155]= 114; lutb[155]= 1; 
lutr[156]= 244; lutg[156]= 116; lutb[156]= 0; 
lutr[157]= 244; lutg[157]= 117; lutb[157]= 0; 
lutr[158]= 244; lutg[158]= 119; lutb[158]= 0; 
lutr[159]= 244; lutg[159]= 121; lutb[159]= 0; 
lutr[160]= 245; lutg[160]= 124; lutb[160]= 0; 
lutr[161]= 245; lutg[161]= 126; lutb[161]= 0; 
lutr[162]= 246; lutg[162]= 128; lutb[162]= 0; 
lutr[163]= 246; lutg[163]= 130; lutb[163]= 0; 
lutr[164]= 247; lutg[164]= 131; lutb[164]= 0; 
lutr[165]= 247; lutg[165]= 133; lutb[165]= 0; 
lutr[166]= 248; lutg[166]= 135; lutb[166]= 0; 
lutr[167]= 248; lutg[167]= 136; lutb[167]= 0; 
lutr[168]= 248; lutg[168]= 137; lutb[168]= 0; 
lutr[169]= 248; lutg[169]= 139; lutb[169]= 0; 
lutr[170]= 248; lutg[170]= 140; lutb[170]= 0; 
lutr[171]= 249; lutg[171]= 142; lutb[171]= 0; 
lutr[172]= 249; lutg[172]= 143; lutb[172]= 0; 
lutr[173]= 249; lutg[173]= 144; lutb[173]= 0; 
lutr[174]= 249; lutg[174]= 146; lutb[174]= 0; 
lutr[175]= 250; lutg[175]= 148; lutb[175]= 0; 
lutr[176]= 250; lutg[176]= 150; lutb[176]= 0; 
lutr[177]= 251; lutg[177]= 152; lutb[177]= 0; 
lutr[178]= 251; lutg[178]= 155; lutb[178]= 0; 
lutr[179]= 252; lutg[179]= 157; lutb[179]= 0; 
lutr[180]= 252; lutg[180]= 159; lutb[180]= 0; 
lutr[181]= 253; lutg[181]= 161; lutb[181]= 0; 
lutr[182]= 253; lutg[182]= 163; lutb[182]= 0; 
lutr[183]= 253; lutg[183]= 166; lutb[183]= 0; 
lutr[184]= 253; lutg[184]= 168; lutb[184]= 0; 
lutr[185]= 253; lutg[185]= 170; lutb[185]= 0; 
lutr[186]= 253; lutg[186]= 172; lutb[186]= 0; 
lutr[187]= 253; lutg[187]= 174; lutb[187]= 0; 
lutr[188]= 254; lutg[188]= 175; lutb[188]= 0; 
lutr[189]= 254; lutg[189]= 177; lutb[189]= 0; 
lutr[190]= 254; lutg[190]= 178; lutb[190]= 0; 
lutr[191]= 254; lutg[191]= 180; lutb[191]= 0; 
lutr[192]= 254; lutg[192]= 183; lutb[192]= 0; 
lutr[193]= 254; lutg[193]= 185; lutb[193]= 0; 
lutr[194]= 254; lutg[194]= 186; lutb[194]= 0; 
lutr[195]= 254; lutg[195]= 188; lutb[195]= 0; 
lutr[196]= 254; lutg[196]= 189; lutb[196]= 0; 
lutr[197]= 254; lutg[197]= 191; lutb[197]= 0; 
lutr[198]= 254; lutg[198]= 193; lutb[198]= 0; 
lutr[199]= 254; lutg[199]= 195; lutb[199]= 0; 
lutr[200]= 254; lutg[200]= 197; lutb[200]= 0; 
lutr[201]= 254; lutg[201]= 199; lutb[201]= 0; 
lutr[202]= 254; lutg[202]= 200; lutb[202]= 0; 
lutr[203]= 254; lutg[203]= 202; lutb[203]= 1; 
lutr[204]= 254; lutg[204]= 203; lutb[204]= 1; 
lutr[205]= 254; lutg[205]= 204; lutb[205]= 2; 
lutr[206]= 254; lutg[206]= 206; lutb[206]= 3; 
lutr[207]= 254; lutg[207]= 207; lutb[207]= 4; 
lutr[208]= 254; lutg[208]= 209; lutb[208]= 6; 
lutr[209]= 254; lutg[209]= 211; lutb[209]= 8; 
lutr[210]= 254; lutg[210]= 213; lutb[210]= 10; 
lutr[211]= 254; lutg[211]= 215; lutb[211]= 11; 
lutr[212]= 254; lutg[212]= 216; lutb[212]= 12; 
lutr[213]= 255; lutg[213]= 218; lutb[213]= 14; 
lutr[214]= 255; lutg[214]= 219; lutb[214]= 16; 
lutr[215]= 255; lutg[215]= 220; lutb[215]= 19; 
lutr[216]= 255; lutg[216]= 221; lutb[216]= 23; 
lutr[217]= 255; lutg[217]= 222; lutb[217]= 27; 
lutr[218]= 255; lutg[218]= 224; lutb[218]= 31; 
lutr[219]= 255; lutg[219]= 225; lutb[219]= 35; 
lutr[220]= 255; lutg[220]= 227; lutb[220]= 38; 
lutr[221]= 255; lutg[221]= 228; lutb[221]= 42; 
lutr[222]= 255; lutg[222]= 229; lutb[222]= 48; 
lutr[223]= 255; lutg[223]= 230; lutb[223]= 53; 
lutr[224]= 255; lutg[224]= 231; lutb[224]= 60; 
lutr[225]= 255; lutg[225]= 233; lutb[225]= 65; 
lutr[226]= 255; lutg[226]= 234; lutb[226]= 71; 
lutr[227]= 255; lutg[227]= 235; lutb[227]= 77; 
lutr[228]= 255; lutg[228]= 237; lutb[228]= 83; 
lutr[229]= 255; lutg[229]= 238; lutb[229]= 89; 
lutr[230]= 255; lutg[230]= 239; lutb[230]= 96; 
lutr[231]= 255; lutg[231]= 239; lutb[231]= 102; 
lutr[232]= 255; lutg[232]= 240; lutb[232]= 109; 
lutr[233]= 255; lutg[233]= 241; lutb[233]= 115; 
lutr[234]= 255; lutg[234]= 241; lutb[234]= 124; 
lutr[235]= 255; lutg[235]= 242; lutb[235]= 132; 
lutr[236]= 255; lutg[236]= 243; lutb[236]= 139; 
lutr[237]= 255; lutg[237]= 244; lutb[237]= 146; 
lutr[238]= 255; lutg[238]= 244; lutb[238]= 153; 
lutr[239]= 255; lutg[239]= 245; lutb[239]= 160; 
lutr[240]= 255; lutg[240]= 245; lutb[240]= 168; 
lutr[241]= 255; lutg[241]= 246; lutb[241]= 175; 
lutr[242]= 255; lutg[242]= 247; lutb[242]= 181; 
lutr[243]= 255; lutg[243]= 248; lutb[243]= 187; 
lutr[244]= 255; lutg[244]= 248; lutb[244]= 193; 
lutr[245]= 255; lutg[245]= 249; lutb[245]= 198; 
lutr[246]= 255; lutg[246]= 249; lutb[246]= 204; 
lutr[247]= 255; lutg[247]= 250; lutb[247]= 210; 
lutr[248]= 255; lutg[248]= 251; lutb[248]= 216; 
lutr[249]= 255; lutg[249]= 252; lutb[249]= 222; 
lutr[250]= 255; lutg[250]= 253; lutb[250]= 227; 
lutr[251]= 255; lutg[251]= 253; lutb[251]= 232; 
lutr[252]= 255; lutg[252]= 254; lutb[252]= 237; 
lutr[253]= 255; lutg[253]= 254; lutb[253]= 243; 
lutr[254]= 255; lutg[254]= 255; lutb[254]= 247; 
lutr[255]= 255; lutg[255]= 255; lutb[255]= 249; 

}

(*pr)= lutr[idx];
(*pg)= lutg[idx];
(*pb)= lutb[idx];
}


unsigned int seek_thermal_lut_iron256_size() {
return 256;
}

#endif //_SEEK_THERMAL_LUT_IRON256_C_

Maybe Seek Thermal will provide some developers tools for accessing this device raw sensor image  from Window$ and Linux  soon ;)
« Last Edit: October 27, 2014, 01:03:49 pm by eneuro »
12oV4dWZCAia7vXBzQzBF9wAt1U3JWZkpk
“Let the future tell the truth, and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I have really worked, is mine”  - Nikola Tesla
-||-|-
 

Offline efahrenholz

  • Regular Contributor
  • *
  • !
  • Posts: 188
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #480 on: October 27, 2014, 05:05:50 pm »
I suspect seek's SDK will be very basic. As in, what you can do in the app will be what you can do in the SDK. They may deliver the uncolored data in an array, but don't hold your breath. I definitely wouldn't expect unprocessed data. They have to maintain the 9hz to make their camera ITAR safe.
 

Offline sgstair

  • Newbie
  • Posts: 7
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #481 on: October 27, 2014, 07:42:07 pm »
@miguelvp, @frenky
May I incorporate your posted code into my library (with attribution) under the MIT license?
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1003
  • Country: si
    • Frenki.net
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #482 on: October 27, 2014, 07:45:00 pm »
Sure, no problem...
 

Offline miguelvp

  • Super Contributor
  • ***
  • Posts: 5550
  • Country: us
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #483 on: October 27, 2014, 08:05:09 pm »
Sure thing, but I have more to come, double the resolution and frenky's noise reduction.


 

Offline Sensor Geek

  • Contributor
  • Posts: 15
  • Country: us
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #484 on: October 27, 2014, 08:45:44 pm »
Just noticed that Seek removed their phone number from the website. Noting here for reference:

Seek Thermal
6489 Calle Real # E
Santa Barbara, CA 93117
844.733.4328

I have a 2nd order pending (under #10000 from 2nd week of Oct) that I wanted to cancel due to the issue I have with the first one, but the ordering system switches into "processing" mode the minute you order and does not allow you to cancel on the site. Emails are not returned and the phone number above allows only voicemail to be left and cuts you off after a few seconds.

This is a real tragedy and I think it's fair to warn off people that are thinking about this device. Sure, they're a startup and it's a new product, and I get that bugs are to be expected, especially for a low-end device like this. I also expected that it would come close to the advertised capabilities (not even) and that the company would put someone on the phones or email system to handle inquiries. Instead we get stone-walled by the company which shipped a camera that takes images packed with noise (not readily seen on the site's images and videos), what seems like an image that doesn't come close to Flir's 80x60 product (even without MSX), large numbers of dead pixels and this gradient that wrecks whatever usefulness it might have had even with the other flaws.

The first one I'm willing to eat the cost and maybe if I crack the case it's fixable. That's fine, it was a gamble and they sent me one more thing for my "maybe fixable" drawer. The 2nd unit I simply don't want at all and there doesn't seem to be a way to canc the order. Frustrating at best, and totally avoidable had they simply communicated with their customers.

Edit: Oct 31 2014: Seek has cancelled my 2nd order at my request. Unknown if it was due to my request by email or phone.
« Last Edit: November 01, 2014, 03:35:01 am by Sensor Geek »
 

Offline mikeselectricstuffTopic starter

  • Super Contributor
  • ***
  • Posts: 14001
  • Country: gb
    • Mike's Electric Stuff
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #485 on: October 27, 2014, 09:09:24 pm »
If you got the order in fairly early, and it arrives soon-ish chances are you can flip it on ebay for a profit. Looking at their FB page seems the order numbers are well over 10K
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 

Offline miguelvp

  • Super Contributor
  • ***
  • Posts: 5550
  • Country: us
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #486 on: October 27, 2014, 09:12:03 pm »
Not happy with this code,I want to combine both into a single loop since pretty much we are doing the same thing.

I left the part of my code that does the edges and then let a modified version of frenky's code to cleanup the rest.
Made the bitmap twice as big and it just does pixel replication (each pixel is really 2x2)
Change the number of buffers drawn to just 1.

I wan't to read a key now to capture the after lens reference image by facing the camera down while you press the key so we can get rid of that noise too. I want to get to something similar or better than this:

 

Offline Sensor Geek

  • Contributor
  • Posts: 15
  • Country: us
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #487 on: October 27, 2014, 09:18:08 pm »
If you got the order in fairly early, and it arrives soon-ish chances are you can flip it on ebay for a profit. Looking at their FB page seems the order numbers are well over 10K

True enough. I'd be more inclined to ship it off to you gratis.
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1003
  • Country: si
    • Frenki.net
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #488 on: October 27, 2014, 09:19:31 pm »
The 2nd unit I simply don't want at all and there doesn't seem to be a way to canc the order.
I would be very happy to buy it from you if it's android version and you would be willing to ship it to Europe?
I will cover shipping costs...

I would love to try some super resolution algorithms on raw data to get really great images out of it...
« Last Edit: October 27, 2014, 09:21:26 pm by frenky »
 

Offline Fraser

  • Super Contributor
  • ***
  • Posts: 13382
  • Country: gb
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #489 on: October 27, 2014, 09:19:56 pm »
@Sensor Geek,

Panic slowly ;)

I suggest you email SEEK formally advising them that you wish to cancel your order and provide the reason as 'not fit for purpose'. State that you wish to receive a refund within 5 days. I hope that you paid with a Credit Card. If so, you can always obtain a refund on your payment through them and they will pursue SEEK for their money. You already have a camera so can state that it is not as described and unfit for purpose. You could likely recover the money for the first camera as well.

I am happy to take delivery of my SEEK order as I don't think this duck is dead yet  ;D

I do have to agree with you though...the images that I have seen to date from users are disappointing and the camera is displaying some serious noise issues combined with unexpected numbers of dead pixels and appalling thermal gradient after a FFC event.

The SEEK appears to be very much a work in progress and I can accept that but what I cannot accept is a company that will not communicate with owners asking for help or comment on the issues. Somewhat worrying if they are already hunkering down with their tin hats on.

Surely not another Mu mess in the making ? At least they produced a physical product though.

No response to my email either but then its only been a day. Nil response will be most unfortunate.

If I have helped you please consider a donation : https://gofund.me/c86b0a2c
 

Offline mikeselectricstuffTopic starter

  • Super Contributor
  • ***
  • Posts: 14001
  • Country: gb
    • Mike's Electric Stuff
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #490 on: October 27, 2014, 09:35:18 pm »
« Last Edit: October 27, 2014, 09:41:36 pm by mikeselectricstuff »
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 
The following users thanked this post: nikitasius

Offline eneuro

  • Super Contributor
  • ***
  • Posts: 1528
  • Country: 00
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #491 on: October 27, 2014, 09:36:40 pm »
I definitely wouldn't expect unprocessed data. They have to maintain the 9hz to make their camera ITAR safe.
Why not? They can simply make toy version hardware eg. with voltage regulators operating temperature 0*C-70*C or use ICs in non MIL versions as well as simplify design and make this thing not usable on battle fields.
For example issue with this thermal gradient detected  ???
Endless posibilities to make this hardware usable only in perfect conditions like room temperature, etc  ;)

Probably they had to do it, while reprogramming on board PCB MPU is not a big problem for skilled electronics guys.

Than, not problem what so ever to give someone even low level API while without hardware modyfications they can't get more from this device than it was designed for... maybe like a toy, while they do not provided even temperature scale on LUT map overlay in their app  :-DD

Sure thing, but I have more to come, double the resolution and frenky's noise reduction.
Still, you have guys black pixels column on the right  >:D

Anyway, did you tried to make noise reduction, but using not ONLY one frame but series with some kind of moving average or other methods?
In the case of one image only a little bit of blur to smooth looks nice depending on use case, so one simply need to be able control level of smoothing and this is what I'd like to have in my app, so implemented it.


If one could improove lens in this Seek Thermal camera to be able to do optical magnification of small elements as Mike shown in his first vblog it could be nice.
@Mike - Could you disclosure what external lens you used in your Seek Thermal teradown 1 vbog if this is not a mystery, please?
They very nice fitted on oryginal ones and it looked like easy enhancement DIY to make, but we need proper lens for IR   8)
« Last Edit: October 27, 2014, 09:43:27 pm by eneuro »
12oV4dWZCAia7vXBzQzBF9wAt1U3JWZkpk
“Let the future tell the truth, and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I have really worked, is mine”  - Nikola Tesla
-||-|-
 

Offline Fraser

  • Super Contributor
  • ***
  • Posts: 13382
  • Country: gb
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #492 on: October 27, 2014, 10:00:40 pm »
ZnSe CO2 laser focus lens. these are either Biconvex or Plano Convex. Both will work OK. Plano Convex is likely the best performing of the two however.

On ebay for around $20. Choose your diameter and the focal length that suits your needs  :)

I have been using these lenses for years for close up work and they are still the cheapest way to achieve it.

More information may be found in my "FLIR E4 Useful information" thread on this forum.

I tend to use the 100mm FL and 50mm FL types. These have also been used to good effect on the FLIR E4.

ZnSe lenses are common in certain thermal camera optics as a high transmission efficiency and relatively cheap element. The down side is their huge pass-band so they are used in combination with filters or Germanium Lenses for Thermal work.

Aurora
« Last Edit: October 29, 2014, 08:48:51 pm by Aurora »
If I have helped you please consider a donation : https://gofund.me/c86b0a2c
 

Offline efahrenholz

  • Regular Contributor
  • *
  • !
  • Posts: 188
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #493 on: October 27, 2014, 10:12:11 pm »
@eneuro,

I am referring to the fact that they wouldn't develop an SDK that does more than the app allows. They have clearly targeted this device at the average Joe, they have done enough work to call it satisfactory for the pricepoint. The SDK will leave much to be desired. The issues with the camera, while yes they suck, are to be expected at $200. I'm looking forward to seeing what people come up with on the firmware, perhaps the real value is there.
 

Offline mikeselectricstuffTopic starter

  • Super Contributor
  • ***
  • Posts: 14001
  • Country: gb
    • Mike's Electric Stuff
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #494 on: October 27, 2014, 10:34:06 pm »
An obvious app would be something that can give lower noise images at the expense of lower framerate
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 

Offline callipso

  • Regular Contributor
  • *
  • Posts: 87
  • Country: cz
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #495 on: October 27, 2014, 10:46:23 pm »
The SDK will positively be one that allows creation of apps in the "Thermal-to-facebook", or "HOW HOT IS SHE?" or "paranormal hunting" or "100% functional lie detector" ballpark, nothing useful, just your regular advertising-ridden google analytics equipped consumer bullcrap. Plus I reckon there's an EULA to the SDK, so for me a definite no-go.

Let's focus on the hardware hacking, as that's where the magic happens...
I wonder... **BOOM
 

Offline Fraser

  • Super Contributor
  • ***
  • Posts: 13382
  • Country: gb
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #496 on: October 27, 2014, 10:49:12 pm »
@Mike,

I just watched your latest SEEK video....... excellent as ever.

You have been very thorough in your investigation.

I was unimpressed to see contamination of the microbolometer and the rear of the lens. Whilst it did not appear to have an effect on the image, it isn't good to see.

With regard to the lens positioning....I have to admit to being very surprised. It looks like no optical block issue that I have seen before.  :-//

Not wanting to be flippant about this lens issue.....but if my SEEK would benefit from something a little higher class, I have a lens looking for a microbolometer to illuminate ... pictures attached.

It is somewhat higher quality than the SEEK lens but then it did originally cost over $3000 !

Aurora
If I have helped you please consider a donation : https://gofund.me/c86b0a2c
 

Offline ricksastro

  • Contributor
  • Posts: 30
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #497 on: October 27, 2014, 11:10:01 pm »


Great stuff, Mike!

Assuming it is indeed lens positioning rather than the shutter, which you seem to show, then really all that would be needed is to build a Flat Field of the lens pointing to a flat source (without the shutter in the way) and apply it to the output (after the full shutter calibration).  That should flatten the output and be a whole lot easier than fixing the lens.   Would be awesome if Seek provided an advanced option menu where you could create this flat field yourself with a single button push.  Since it's a gradual gradient, it could be heavily filtered so it doesn't introduce noise.   It should be relatively stable as well, assuming the lens doesn't shift.

I am still curious about the time based changing of the gradient (starts small and maxes out after a few minutes).   I know you did show it was still relatively stable with your lens adjusted even overnight (but still a few degrees), so maybe it's a secondary, smaller thermal effect.

Once the SDK is available, we could post-process the images in another app, but it wouldn't fix the temperature measurement.

Here's to hoping!

Thanks again for your hard work!

Rick
 

Offline tom66

  • Super Contributor
  • ***
  • Posts: 7050
  • Country: gb
  • Electronics Hobbyist & FPGA/Embedded Systems EE
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #498 on: October 27, 2014, 11:32:59 pm »
For dead pixel reduction, why not follow the way of LEPTON (which actually has a fairly noisy sensor but uses a lot of processing.)

The methods are patented, but you can do it for research purposes only ;). Simply look for stuck pixels in moving images, pixels which do not change much when the rest of the image goes. Mark these on a mask, and replace them with a regional average of neighbouring pixels. For columns and rows, take the sum of each, and compare to the neighbours over multiple frames. If there appear to be particularly strong columns/rows, reduce the gain of it until it is similar to its neighbours.
« Last Edit: October 27, 2014, 11:41:20 pm by tom66 »
 

Offline mikeselectricstuffTopic starter

  • Super Contributor
  • ***
  • Posts: 14001
  • Country: gb
    • Mike's Electric Stuff
Re: Yet another cheap thermal imager incoming.. Seek Thermal
« Reply #499 on: October 27, 2014, 11:33:43 pm »
I wonder if it might be seeing the edge of the aperture in the lens assembly, in which case the temperature of the assembly may have an effect.
Something I noticed was that the gradient was much higher when looking at a cold scene, which would seem to be consistent with it seeing a constant warm-ish object at the edge of the FOV
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf