code: public CifarRaw readImage() throws IOException {
  
      int label = readUnsignedByte(); // peel off the first byte which is the image label
  
      int[][] red = new int[getRows()][getCols()];
      for (int i = 0; i < getCols(); i++) {
        for (int j = 0; j < getRows(); j++) {
          red[i][j] = readUnsignedByte();
        }
      }
  
      int[][] green = new int[getRows()][getCols()];
      for (int i = 0; i < getCols(); i++) {
        for (int j = 0; j < getRows(); j++) {
          green[i][j] = readUnsignedByte();
        }
      }
  
      int[][] blue = new int[getRows()][getCols()];
      for (int i = 0; i < getCols(); i++) {
        for (int j = 0; j < getRows(); j++) {
          blue[i][j] = readUnsignedByte();
        }
      }
      return new CifarRaw(label, red, green, blue);
    }
docs: Reads the image at the current position.
  
  @return matrix representing the image
  @throws IOException