eq = 64/81 (x1^2 + 9 y1^2) (x2^2 + 9 y2^2) == 1;
With[{facGps = GroupBy[FactorList[First@eq], VectorQ[#, NumericQ] &],
list2factor = Times @@ Power @@@ # &},
list2factor@Lookup[facGps, False, {}] ==
Last[eq]/list2factor@Lookup[facGps, True, {}]
]
(* (x1^2 + 9 y1^2) (x2^2 + 9 y2^2) == 81/64 *)
You can use FreeQ[#, x1 | x2 | y1 | y2] & instead of VectorQ[#, NumericQ] & if there are literal (nonnumeric) constants as in another one of your questions.