As best I understand, a pixel is collected if and only if the two conditions below are satisfied.
(1) It and its square neighborhood (so-called "Noore neighborhood") lie entirely in the annulus.
(2) It has the maximum value in that neighborhood.
So you can preprocess the entire array to figure out who satisfies the second condition. Then for each annulus you simply figure out which pixels from that list also satisfy the first. Form an efficiency viewpoint it is probably easier to find out which pixels satisfy the first requirement and then check if they satisfy the second as well.