Se confronti tutti i pixel l'elaborazione è lenta, questo è ovvio.
Io ti suggerisco di prendere dei 'campioni' di pixel, piuttosto che elaborare tutti i pixel.

Anni fa ho seguito questo metodo quando dovevo 'catturare' dal web i fotogrammi da uno streaming video. Avendo una connessione telefonica dial-up da pochi kb non potevo né temporizzare la cattura, né stare davanti al monitor per catturarli una alla volta.

In questo modo catturavo il fotogramma solo quando cambiava e lo salvavo 'al volo' in bmp, poi alla fine mi ricrevo il filmato AVI grazie alle immagini salvate.

La scelta di quanti e quali campioni utilizzare dipende dal risultato che si cerca, ovvero che livello di precisione mi occorre.

Ad esempio, suddividendo 'logicamente' i fotogrammi in 9 rettangoli 3x3 (o più... scegli tu) puoi selezionare ad esempio 3 pixel da 5 rettangoli (vedi schema sotto) per un totale di 18 pixel che confronterai tra i due fotogrammi.
E' abbastanza improbabile che cambi un fotogramma senza che almeno uno di questi pixel cambi anch'esso.

codice:
-------------------
|  *  |     |  *  |
-------------------
|     |  *  |     |
-------------------
|  *  |     |  *  |
-------------------
Naturalmente dopo qualche prova potrai verificare se devi aumentare i rettangoli anzichè i 5 indicati nell'asterisco, e se per ogni rettangolo aumentari il numero di pixel da catturare.

Sicuramente è assai più veloce che non leggere tutti i pixels.