Elija un píxel aleatorio como un píxel de inicialización. Esto se convierte en el área A. Expande repetidamente A hasta que A no se haga más grande. Esa es tu área.
La manera de ampliar Una es mediante la búsqueda de píxeles vecinos a A, de modo que tengan color parecido a al menos un píxel vecino en A.
Qué "color parecido" significa para usted es algo variable. Si puedes hacer exactamente dos colores, como dices en otra respuesta, entonces "similar" es "igual". De lo contrario, "similar" significaría colores que tienen valores RGB o no, donde cada componente de los dos colores se encuentra dentro de una pequeña cantidad el uno del otro (es decir, 255, 128, 128 es similar a 252, 125, 130).
También puede limitar los píxeles seleccionados, por lo que deben ser similares al píxel inicial, pero eso funciona mejor cuando un humano está recogiendo la semilla. (Creo que esto es lo que se hace en Photoshop, por ejemplo.)
Esto puede ser mejor que la detección de bordes porque puede tratar degradados sin filtrarlos y no necesita procesar el resultado detectado bordes en un área coherente. Tiene la desventaja de que un degradado puede ir desde el negro al blanco y se registrará como la misma área, pero eso puede ser lo que desee. Además, debe tener cuidado con la implementación o de lo contrario será demasiado lento.
Puedo hacer exactamente dos colores, si es necesario. Estoy filtrando un mapa de calor – Malfist
Entonces debería estar bien con un algoritmo de detección de bordes. El problema no está en los colores, sino en el cambio de píxeles. Si tiene diferencias muy marcadas, es muy fácil, y esto se aplica a un mapa de calor. Sin embargo, no puedo ayudarte con una implementación específica del algoritmo. – Femaref