I have several hundred images from a timelapse of the night sky. My goal is to detect meteors, which basically appear as streaks that are green at one end and reddish at the other. Example:
What’s the right way to do this? After a bunch of tinkering, I’ve gotten this far:
- Resize image using
pyrDown(). The softer image results in a less noisy image, which seems to help with line detection. Otherwise, I think a median blur really helped with removing most of the stars and ISO noise.
cv::ximgproc::FastLineDetectorto detect lines:
Result (sorry I can’t embed more than one image)
I know I can probably focus on a particular ROI to ignore the horizon. But instead of one line for the meteor streak, there are multiple line segments along the “sides” of the meteor streak.
- I had stumbled on the idea dilation and erosion to create a skeleton. After tweaking the kernel sizes, I get something like this:
So, it sort of works, but I’m really questioning my approach, especially since I don’t want to be manually tweaking parameters for every image.
Furthermore, if there are clouds or airplanes at the same time, this approach falls apart. I’ll post a reply with a link to those images since I can’t post more than two links. But basically, the part of the meteor streak that’s behind the clouds isn’t detected, and tweaking the FLD parameters didn’t seem to help. Also, the airplane trail wasn’t detected as a line in this particular image, but I could see it being an issue.
Any ideas? Willing to do something completely different, of course.