Help with decreasing program loop time

The delayMicroseconds is called twice.

Really?

      if(image[x][y] == 3){
        setRegisterPin(blupins[y], HIGH);
        digitalWrite(colpins[x], HIGH);
        writeRegisters();
        delayMicroseconds(DELAY);
        setRegisterPin(blupins[y], LOW);
        digitalWrite(colpins[x], LOW);
        writeRegisters();
        delayMicroseconds(DELAY);
      }

It is called twice in this block, if the statement is true.

It is called twice more in each of the following blocks.

Those three blocks are located inside some for loops.
for(int x = 0; x < 13; x++){
for(int y = 0; y < 13; y++){
So, I see the possibility of delayMicroseconds() being called 169 * 6 times per call to Display(), depending on the value passed to the function. That could add up to a lot of delay.