Even though I have a very good mount (AP900), auto-focus software (FocusMax), and good guiding (Lodestar Off-Axis Guide Camera and Maxim DL) I still end up with a few image subframes that need to be discarded before calibration and integration. The reasons are many: momentary poor tracking, poor seeing, airplane lights, clouds, and the ever popular "I don't know what happened".
I used to examine and reject frames on an ad-hoc basis, mostly based on visual examination, but I now increasingly rely on analytical measures to determine whether or not to reject a frame. I believe that moving to an analytical approach has improved my final image quality, but you'll have to try both methods to see what works best for you. I use PixInsight for my end-to-end workflow, so will describe PI tools for both approaches, but you'll find similar tools in other software packages, maybe just not as good!
I usually start with a quick visual examination, to get a sense of overall image quality, and to remove any obviously bad frames. I use the Blink tool in PixInsight, which allows rapid examination of images. You can step through images one at a time, or continuously in a loop. You can select one or more images and move them to another folder. I create a folder called Rejected for each filter type, and use Blink to move obviously bad sub-frames into it. One note - I always select the little histogram icon at the top - this does an auto screen stretch independently for each image, so that each image is visually similar in terms of intensity.
I used to stop at this point, but found that it was very difficult to grade images in terms of FWHM and Eccentricity by pure visual examination. Therefore, I've recently started to rely on the powerful SubframeSelector script in PixInsight. This script was written by Mike Schuster and generously contributed to the PixInsight community. As Mike explains in the About panel of the script, SubframeSelector facilitates subframe evaluation, selection, and weighting based on several subframe measurements, including FWHM, Eccentricity, and signal to noise ratio. The script has a few options, and lots of panels, but is very easy to use.
Basically you load the subframes you want to analyze, set a few telescope and camera parameters, and click on the Measure button. The script processes all of the images in the list, computing the various parameters mentioned above. Once it has completed, there are several approaches to viewing and selecting (or removing) subframes. I start by looking at the plots. I usually look at FWHM first. In the example below, I see right away that generally the FWHM values are within reason for my seeing at this time of year (December). I also see that 3 subframes in a row stand out as having higher values - there was some high cloudiness at times the night I collected these images, so that might have been the problem. All of the data are also available in a table that can be saved for later viewing and further analysis.
By simply clicking on the outliers, they are marked for later moving to a folder of your choice. Note that the dotted lines on the plot show a plus or minus 1 sigma spread, so that you can more easily decide which subframes are really outliers. You still need a good understanding of your equipment and local seeing, but these plots make the analysis process much easier. You can also look at plots for Eccentricity, SNR, etc.
Once you've identified all of the frames you want to reject, you simply tell the script where you want the approved and rejected frames to be copied or moved, and click on the Output Subframes button. As mentioned above, I create Approved and Rejected folders for each filter, and use the SubframeSelector script to move the images into the appropriate folder for later processing. I never delete an image - you never know when you might need it.
There are additional script capabilities, including the ability to write simple Approval scripts that automatically compute approval or rejection based on a formula of your design. However, for now, I am reviewing the plots and tables manually and selecting subframes. A big thanks to Mike Schuster for this really useful PixInsight script!