Normalmente, lo que se hace es obtener las coordenadas del mouse sobre el canvas (para eso pueden usarse offsetLeft y offsetTop o las poropidades de event: layerX y layerY u offsetX y offsetY -estas últimas para Explorer-). Una vez que se tienen las coordenadas del mouse, con la propiedad data de getImageData podés obtener el color del pixel sobre el que se encuentra el mouse y así manejar el rollOver de manera condicional:
Código:
//en pseudocódigo:
if(color==rojo){
hacer lo que quiero que pase cuando estoy en rectángulo rojo
}else if(color==verde){
hacer lo que quiero que pase cuando estoy en rectángulo verde
}