Wenn er das so machen will:
Am besten nimmt es Image::Magick und Holt sich die Rohdaten
my ( $data )=$magick->imageToBlob(magick => 'RGB');
Wandlet er das in eine Matrix um:
my @matrix;
while(length($data))
{
my $line=subtsr($data,0,($image_width)*3,'');
push(@matrix,[split(//,$line)]);
}
Nun kann er in der Matrix nach Pixeln einer Farbe suchen.
Wenn er rekursiv vorgeht kann er Felder einer Farbe finden. Überschreitet die Anzahl der Punkte einen bestimmten Wert, handelt es sich möglicherweise um eine Störung. Dann sucht er aus der Liste der gefundenen Pixeln das minimum/maximum zur X und Y Achse heraus und bestimmt die Ausdehnung der Fläche. Ist die x/y Ausdehung identisch oder ähnlich ist es wahrscheinlich eine Störung.
Wollte es ganz sicher gehen, könnte er die Geometrie des Gefundenen "Flecks" analysieren und so bestimmen ob es ein Rechteck ist.
Aber das ist keine Typisches Perlprobem. Bei reinem Daten-wühlen ist Perl weder besonders schnell noch Speicher sparend.