×

INDI Library v2.0.6 is Released (02 Feb 2024)

Bi-monthly release with minor bug fixes and improvements

New All Sky camera management software: indi-allsky

  • Posts: 255
  • Thank you received: 65
I announced this on CloudyNights a couple of weeks ago, I figured people here may be interested.

Like many others, when I setup my first All Sky camera, I used Thomas Jacquin's fantastic allsky software.  It works very well, obviously.  My first camera was a ASI290MM, but I wanted to setup a color all sky camera and I wanted to see if I could use the Svbony SV305 [IMX290] camera which is at least half the cost of most planetary cameras in the same class.I think one of the biggest requests for enhancement for Thomas Jacquin's allsky is supporting more than just ZWO and Raspberry PI cameras.  For this reason, I decided to build my software around INDI.  This would have the possibility of supporting any camera supported by INDI.  The SV305 INDI support was about 6 months old at the time I started, but seemed to be reasonably stable.

8 months later, I think the software is stable enough to be released:
github.com/aaronwmorris/indi-allsky/

At this point, the camera and image management is roughly at parity with Thomas Jacquin's allsky.  I do not have the fancy web interface yet, but I do have some simple web viewers.  The software is written in Python and utilizes the pyindi-client for the INDI interface.  Python may seem like a non-optimal choice, but most of the functionality is actually C-based modules (pyindi-client, OpenCV, pycurl, ffmpeg) so most operations are lightning fast.  The code is also implemented using Python multiprocessor semantics, so actions are implemented in parallel--operations like file uploads will not interfere with image acquisition.

I have been running both of my all sky cameras with my software for the past few months and INDI seems to be well up to the task for weeks of constant runtime.
Features:
  • Theoretically supports any INDI camera.  The software will automatically detect the camera on startup
    • ASI290MM has been extensively tested.
    • SV305 has been extensively tested.
    • QHY cameras supported
    • Canon DSLRs supported
  • Time lapse movie generation
  • Keograms
  • Day and night time support
    • Special "moon mode" operation reduces gain when the moon is out.
  • File upload support
  • Automatic image debayering
At this point I am really just waiting on more people to try the software with more cameras.  I would love to have some tests run with Altair, Player One Astronomy, Touptek, etc.  I mainly need to know the name of Gain property so that I can properly set the gain for the different camera vendors.

Let me know what you think.
The following user(s) said Thank You: Jasem Mutlaq, Gonzothegreat, S, Alfred, Jim, jiberjaber, Matteo Piscitelli, Hank, Chris Kuethe
Last edit: 2 years 4 months ago by Aaron Morris.
2 years 4 months ago #77029

Please Log in or Create an account to join the conversation.

  • Posts: 205
  • Thank you received: 19
Nice work, this looks pretty good and I'll have to try it out sometime.

How have you got it setup on the hardware side?  Do you have some all weather enclosure, etc?
2 years 4 months ago #77030

Please Log in or Create an account to join the conversation.

  • Posts: 278
  • Thank you received: 17
This looks very nice :-)

I mainly use my all-sky for cloud detection. Do you have support for could detection? I do it by counting the number of stars, which seems to work pretty well but not 100%....
2 years 4 months ago #77038

Please Log in or Create an account to join the conversation.

  • Posts: 255
  • Thank you received: 65
Cloud detection is one of the next areas I intended to focus some development time.  In fact, someone has already pointed me at your code from a post about a year ago.  I also found the example code from scikit-image from which you based your code.
2 years 4 months ago #77051

Please Log in or Create an account to join the conversation.

  • Posts: 255
  • Thank you received: 65
I used an external junction box from Home Depot and a plastic security dome from Amazon.  Internally is the camera, Raspberry Pi 3, PoE splitter, and a custom made 1W dew heater powered via USB.  It is completely powered by PoE.

I built a second version just using a generic junction box from Amazon.  I actually prefer the one from Home Depot, but they were out of stock for a long time (possibly due to the pandemic).

This is an image of my "mark 1" device.
2 years 4 months ago #77053

Please Log in or Create an account to join the conversation.

  • Posts: 278
  • Thank you received: 17
Nice!

To make the cloud detection more accurate, one could compared the measured number of stars with the expected number of stars, if that can be obtained from kstar. I just have a fixed limit at the moment, which sometimes fails.
2 years 4 months ago #77055

Please Log in or Create an account to join the conversation.

  • Posts: 255
  • Thank you received: 65
I have integrated some star detection code.  I initially used your example, but it was slower than I really wanted.  It worked very well, but it was just slow-ish and processor intensive.

I found another method using OpenCV template matching that is much faster and more sensitive.
2 years 4 months ago #77416

Please Log in or Create an account to join the conversation.

Aaron, I was just reading about OpenCV method a couple of days ago. Can you share more details? how much faster was it compared to SEP I suppose? but SEP alone is not enough, you need to perform some star matching using triangles/quads..etc (not just based on number).
2 years 4 months ago #77417

Please Log in or Create an account to join the conversation.

  • Posts: 255
  • Thank you received: 65
At the moment, I am just counting the instances of an image of a single star in the picture.  I am not using it for SEP or plate solving, but it would not be too difficult to do that.

From reading the documentation, it seems to be best described as finding instances of a picture within another picture.  You can use this for complex pattern matching, but stars are very simple objects.  In most of the examples I looked at, they included an example image of a star.  In my case, instead of using a real star image, I just generate a fake star image using cv2 by drawing a white circle and applying a blur() function to it--a perfect star every time.

As for the speed, it is one of the faster methods I have used.  It can find all of the stars in a 1920x1080 image covering 120 degress of the sky in about a second.  The only problem is that it generates a lot of duplicate findings, finding the same star multiple times.  Eliminating the duplicates slows things down a lot, but still *at least* 2-3 times faster than scikit-image blob_dog() for similar results.  It is not perfect, but it is good enough for my purposes. 

Here is an example.  I only look for patterns in the central box of the image.  This is to stay away from the trees.  The gaps in the leaves look like stars to the pattern matching.
1035 "stars" were detected in 0.5 seconds on a Raspberry PI 3.  The brighter the red circle, the more times it was duplicated.
Eliminating the duplicates brings the star count to 198 which adds another 2 seconds to processing.
 
The following user(s) said Thank You: Jasem Mutlaq
2 years 4 months ago #77419
Attachments:

Please Log in or Create an account to join the conversation.

That looks great! It would be nice to compare it against SEP (after crop) and see the differences. Of course, SEP gives back much more data on each star as well.
2 years 4 months ago #77425

Please Log in or Create an account to join the conversation.

  • Posts: 10
  • Thank you received: 1
What lens are you using on the SVBony camera?
2 years 4 months ago #77438

Please Log in or Create an account to join the conversation.

  • Posts: 255
  • Thank you received: 65
I am just using a ZWO 2.1 or 2.5mm CS mount lens that came with one of my other cameras I use for autoguiding.
2 years 4 months ago #77439

Please Log in or Create an account to join the conversation.

Time to create page: 1.639 seconds