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.
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.
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
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.
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.
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).
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.
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).
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.