Correcting coordinates of an image with polynomial root in python
This is more of a suggestion as I don't have the time to code it, but it is perhaps too long for a comment.
From your code it seems that it is assumed that this fifth degree polynomial has only a single real root. It must have one, because the complex ones must come in conjugate pairs, but I don't see why it has only one.
I will assume it has an unique real root. Here's the idea:

Calculate abs_ru in a fast, vectorized manner.
Order these real values.
Take the smallest, use numpy.roots to find the corresponding unique real root.
Starting from this, consider the next abs_ru value and the corresponding polynomial. If this next abs_ru is far, then consider using numpy.roots again, else a few iteration steps using a root finding iteration should suffice. Consider a gradient descent on the square of the polynomial, or a Newton iteration.

A few things on the code as it is.
Root finding is generally done numerically, therefore it is perhaps better to consider the numeric roots that have a real value of an absolute value below say 1e-5 instead of ~np.iscomplex(abs_rd).
Root finding is expensive, and it is redundant if i == yc and j == xc. Move it to the else branch.