Author Topic: Express your interest for TE-Q1 improved android app (possibly thermviewer).  (Read 3583 times)

0 Members and 1 Guest are viewing this topic.

Offline nikoumTopic starter

  • Contributor
  • Posts: 25
  • Country: gr
Hi friends,
I started this thread as I recently acquired a TE-Q1 plus working it with the android Thermal Expert app. I am not really satisfied from this app, considering the camera specifications and in comparison with other android apps such as ThermApp Plus and Thermviewer with many more capabilities and optimizations. I have also read a few people also not being that happy with the specific Thermal Expert app.
I also understand that quite a few members and other people have bought this camera and would probably be interested in the development of an improved android app which will be optimized and offer more capabilities.
That being said, I would like to inform you that a couple of weeks ago I contacted JINHUA the developer of thermviewer app and kindly asked him if he would be interested in such a development and include TE-Q1 plus in the compatible cameras of the thermviewer app . His reply was positive but he needed the android sdk in order to test it and in this respect I contacted
Thermal Expert and requested the latest android sdk file.

Here is the link they provided me (for anyone interested in development), which I forwarded to JINHUA.
https://drive.google.com/open?id=1MYGgL1SXxaV3atZQSB2cGduX-JeI-Wrq

I also informed JINHUA that I am willing to pay/donate a relevant amount, like other thermviewer users and that other owners of TE-Q1, might also be interested/willing to support such a project.

So I kindly ask TE-Q1 owners to express your interest in this thread, either :
-  for JINHUA making  TE-Q1 compatible with thermviewer app, or alternatively
-  for the development of a new app by any other android expert in this forum

Furthermore,  if any of you are more acquainted with JINHUA (for whom Ultrapurple said ",The man's a genius"), maybe you could express your interest and support in this project.

Finally please note that I am completely ignorant as far as android development and I am just a normal user of the camera, so I can not offer anything more in this project.
« Last Edit: April 24, 2019, 12:33:57 pm by nikoum »
 
The following users thanked this post: frenky

Offline bugi

  • Regular Contributor
  • *
  • Posts: 249
  • Country: fi
  • Hobbyist using the ultra slow and unsure method
Interesting, the linked android SDK zip contains possibly older version than what I got (assuming the "180617" is a version/build/date number and grows). However, links they provided to me (as part of the purchase) had only the .jar-file for Android, no documentation/apk/sources for example app, so in that sense the zip link above is tons better, and certainly enough to get going.

My own intended summer project is to mainly rewrite the "driver" part of the SDK (would do the USB comms, calibration stuff, low-level frame calcs with optimized code) while keeping the API as similar to the official one as possible, so that swapping from one to another would be easy. Fancier stuff like color palettes etc. would be left for the app-side code; the official SDK seems to handle the palettes, too, and few other upper layer things which IMHO would belong to the app.

So I'm certainly happy if someone (or few) would provide better app (UI and higher level processing of the frame data). My "driver" side, if ever actually finished, could help with improving the source data (and how much CPU is wasted in getting it, etc.).
 

Offline nikoumTopic starter

  • Contributor
  • Posts: 25
  • Country: gr
@bugi
Well i contacted thermal expert on 8th of april requesting the latest android sdk and they asked me when did i purchase the camera. I replied that i purchased on early february and this is what they provided me. I also found in one of the threads here a link posted by @frenky which is actually an old version jar file ( 160425)
https://drive.google.com/folderview?id=0B36fN1Q-Tg1AQ1l0aWFGVnVSUTg&usp=sharing
So if your jar file is newer than 180617, may be you can share it here. i do not know if this will make any real difference but we could provide this to Jinhua so he has the latest jar.




 

Offline frenky

  • Supporter
  • ****
  • Posts: 1003
  • Country: si
    • Frenki.net
I would be willing to pay up to 50€ for a better app. :-/O
 

Online Berni

  • Super Contributor
  • ***
  • Posts: 5031
  • Country: si
I dunno i find the android app actually a lot better than the thrown together Windows Desktop app for it.

Tho i seen a lot of compatibility issues with phones, went trough 3 phones that the app didn't work with, had more luck with newer phones so perhaps it just doesn't like old versions of the android OS.
 

Offline PlainName

  • Super Contributor
  • ***
  • Posts: 7307
  • Country: va
I would be interested in a different app. The issues I have with the official one, apart from having to reset in my mind how things should operate, are basically the specific sequence of connection/startup in order for it to work, and the silly stretch-to-fit aspect ratio that distorts the image. Having the visual image properly overlay the IR image would be really nice but I don't see anyone being able to fix that easily :)

So, I would pay for a better app, but it would have to be better and not just a differently annoying one.
 

Offline polar

  • Contributor
  • Posts: 15
  • Country: ch
I would also be interested in a approved app and would also be willing to pay for it.
@dunkemhigh: the aspectratio strechting can already be turned off quite easily: Options> Aspect Ratio > Original
 

Offline PlainName

  • Super Contributor
  • ***
  • Posts: 7307
  • Country: va
It doesn't work in some circumstances, like overlay.

Unless there's been an update since I last used it...
 

Offline TooQik

  • Regular Contributor
  • *
  • Posts: 56
  • Country: au
I'm all for a better Android app but it would need to support all current Thermal Expert models ie. M1, Q1 and V1.

The problem I'm hitting right now is the released SDKs do not support the M1, only the Q1 or V1 and as two independent SDKs. I'm currently trying to obtain an official M1 SDK so I can progress with coding, as at this stage I'm doing this  |O.

My personal goal is to use an Android device as a portable capture source, outputting raw data with all post processing done off the device. Seems like a simple goal but presently the current Android SDKs won't even allow me to view an uncorrupted image from my M1.
 

Offline Conure

  • Contributor
  • Posts: 39
  • Country: se
I would be willing to pay up to 50€ for a better app. :-/O
What software improvements could be worth 50€?  :o
 

Offline Vipitis

  • Frequent Contributor
  • **
  • Posts: 876
  • Country: de
  • aspiring thermal photography enthusiast
the noise reduction and superresolution are really nice features to have. I paid to have a better app that offer superresolution on my camera as well. Sadly the development seems to have ended a year ago.
Maybe Thermviewer will support all the dongles one day.
 

Offline Conure

  • Contributor
  • Posts: 39
  • Country: se
the noise reduction and superresolution are really nice features to have. I paid to have a better app that offer superresolution on my camera as well. Sadly the development seems to have ended a year ago.
Maybe Thermviewer will support all the dongles one day.
Noise reduction? Sounds much nice. I have not tried any 3rd party software for thermal imager.
 

Offline agh768

  • Contributor
  • Posts: 15
  • Country: de
I have been in i3 in contact from time to time over the last year since i got my Q1. earlier this week i have submitted my APK for them to review so it can be published on the play store. If I get a green light I will definitely post here again.

The main goal of this app is to have dynamic colour palettes changing gamma and colour mix see examples attached. Later if i have levelled up my android skills enough even with a sub menu to create fully custom colour palettes. Stuff like multi-image noise reduction, super resolution or even Edge-Directed Interpolation are things to consider. But I’m not a pro android developer – just someone who likes IR cameras.

I’m using the SDK provided by them. I don’t understand their policy how they sharing the SDK – they seem little protective. E.g. I’m not sure how they would like OpenSource apps using it and distributing it freely.

Depending on how things go will try to explore options and showing them the benefits of community driven projects. Lets see whats possible.
 
The following users thanked this post: nikoum, billyt

Offline billyt

  • Contributor
  • Posts: 24
  • Country: al
Hi all,
i have a te q1 plus camera but i am not really that happy with it as far as noise and blurriness with the phone app. So i am definately interested if someone develops a new improved app for this camera and of course i am willing to pay like @frenky said even up to 50 euro, as a reward to someone that will put work hours to make the camera work up to its specs.
So in this respect i will keep the camera for a while longer, but if nothing happends, i will sell it and try the xtherm t3s which has better images i believe.  The thermal expert co. has no interest in improving their app.
« Last Edit: April 29, 2019, 04:58:11 pm by billyt »
 

Offline bugi

  • Regular Contributor
  • *
  • Posts: 249
  • Country: fi
  • Hobbyist using the ultra slow and unsure method
The thermal expert co. has no interest in improving their app.
Actually, they do improve their app, just not very quickly, and it is not doing anything wondrous in the current state.
 

Offline Jinhua

  • Newbie
  • Posts: 4
  • Country: cn
Hello all,
I am a thermviewer developer. Currently thermviewer already supports ThermApp full range of cameras, even 640 resolution ThermApp Pro and Xtherm t3s, t3Pro infrared camera, I am willing to continue to develop to support te q1 or more models of infrared cameras This is based on the vendor's ability to provide a valid SDK, because the thermviewer needs to obtain the raw temperature data for each pixel of the infrared camera and generate a higher quality image with a more flexible algorithm, so this step is necessary. By analyzing the existing SDK, it is known that this API is not provided. If the vendor is willing to provide it, the thermviewer will soon be able to support te q1.
 
The following users thanked this post: Ultrapurple, nikoum, billyt

Offline Jinhua

  • Newbie
  • Posts: 4
  • Country: cn
the noise reduction and superresolution are really nice features to have. I paid to have a better app that offer superresolution on my camera as well. Sadly the development seems to have ended a year ago.
Maybe Thermviewer will support all the dongles one day.

Thermviewer update service has never been interrupted, just recently released a new version, which can be downloaded at thermviewer.com or via Googleplay.
« Last Edit: April 30, 2019, 09:06:40 am by Jinhua »
 
The following users thanked this post: Ultrapurple

Offline Vipitis

  • Frequent Contributor
  • **
  • Posts: 876
  • Country: de
  • aspiring thermal photography enthusiast
Are the SDK tools that FLIR provides sufficient to make Thermviewer support the FLIR One and it's various appearances?
 

Offline bugi

  • Regular Contributor
  • *
  • Posts: 249
  • Country: fi
  • Hobbyist using the ultra slow and unsure method
Hello all,
... because the thermviewer needs to obtain the raw temperature data for each pixel of the infrared camera and generate a higher quality image with a more flexible algorithm, so this step is necessary. By analyzing the existing SDK, it is known that this API is not provided.
The older SDK provides pixel data after the per-pixel calibration is done (pretty much required) and their dead-pixel filling routine has been applied (certainly not optimal); so, almost "raw", but with basic dead-pixel processing done. Unfortunately, the API does not provide means to get the sensor temperature or the blind pixel values etc. which would be required for further processing.

Also, seems that the latest version(s) of the SDK have dropped that getData() method which returned those almost raw pixel values. So, better processing is indeed not possible with the current official SDKs.

The official SDK code is quite a mess, littered with old unused code, public methods that actually are not meant for public use, etc.  I am trying to write a better "driver" level thing, but I expect it will take at least couple months, or more likely in late July before anything useful will be ready and tested to work. (I think I'll have some code done well before, but actually making it to work on a device is the big step for me.)
 

Offline bugi

  • Regular Contributor
  • *
  • Posts: 249
  • Country: fi
  • Hobbyist using the ultra slow and unsure method
I have now analyzed almost all of the SDK jar that was provided for me (apparently the latest version seen mentioned here). In short, it is more like a demo-level library, not a proper SDK. So, any improved app would likely NOT want to use the official SDK as is, as there is not much possibilities for improvements left open in it. This applies at least to version 181027. (I also analyzed the old versions; less processing, allow reading the calibrated frames, but otherwise not much better as an "SDK".)


Here are some notes, some things compared to the versions some years ago (in the reverse-engineering thread back then by frenky, mahony & co).

The SDK has been added (possibly some time earlier) 3 separate threads for processing: one to read the frames from the camera, and two threads that process alternating frames. Nice.

What is not so nice is how they orchestrate between the two processing threads.

As both use a shared array and a Bitmap for output, they can not proceed to write into those until they know the other thread has finished (and likely the further use of those has completed). They do this by sleeping until the other thread has received the next frame before computing and storing its own output data. That forces a full frame delay at minimum, even if processing was completed quicker. After producing its outputs, it sleeps again long enough to ensure that the delay after the other thread has notified listeners of the previous ready frame is at least 110ms (~9Hz). Then the thread finally notifies listeners that its own outputs are ready for use.

If there is some hiccup during the final output processing, the last step of notifying and marking the time of completed frame will shift forward, and so will the sleeping in the other thread (to ensure that minimum 110ms). Which in turn sleeps and delays the frame after next, etc.  Thus, if I understood it right, the "lag" from receiving a frame to displaying it will be the maximum of (~one frame period) and (~one frame period + the longest hiccup encountered during last steps of processing).

If it had been implemented properly, the lag could be as short as it takes to process the received frame, and it could still ensure an average 9Hz framerate.

(I have not actually run/debugged it, so, I could have misunderstood something..)


The amount of processing has increased a lot since the versions couple years back. E.g. dead-pixel filling is now done to two separate sets of pixel data (i.e. two big tasks per frame). Seems they have added some noise reduction and maybe edge enhancement (or some such), both of which are run at all times, and include two relatively heavy full frame calculations with 3x3 filter kernel (named bilateral and gaussian blur). (Note, while heavy, the algorithms are quite simple compared to e.g. what a decent photo/image editing software would do on a PC.) Both algorithm implementations are quite (read "horribly") unoptimized. (And, assuming they use the same code in their latest app, a bug I found in the code might explain the weird "leakage" effect between left-right edges.)

(Since the bilateral mask table has public access, and gaussian mask table has package access, it might be possible to reduce the effects by manipulating those tables, but some of the code uses hard-coded coefficients, and the processing amount would not change, so ...)

(Also means my statement in another thread about the app having no noise removal is likely incorrect. Need to go correct that one...)


Some parts of AGC seem to be calculated for all frames (whether AGC is enabled or not) (EDIT: seems that the AGC evaluation and scaling is done always, whether the related setting is true or false; if AGC is disabled, it seems to only do some temperature based limiting on min/max ends). The conversion to temperature values is always calculated for the full frame, not just for the selected pixels/area (like done couple years ago). But for the conversion they have added an option to use table lookup instead of math, but the amount of ops saved is miniscule due to large number scalings still going on. At least the table-version doesn't do square root. Which way it is calculated depends on the unexplained "recog" configuration values.


And then bunch of misc stuff, like unused framerate calculation code, pointless array initializations, etc. etc.
« Last Edit: May 02, 2019, 10:10:13 pm by bugi »
 
The following users thanked this post: billyt


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf