JLabel no mostrará la imagen - NullPointerException

este es mi primer programa Java GUI, y realmente solo mi segundo programa java, así que tómatelo con calma :) Mi programa es el resultado de una gran cantidad de búsquedas en Google y en documentos Java. Mi problema es que tengo una hoja sprite de 52 tarjetas, y estoy tratando de guardar estas tarjetas individualmente en una matriz de imagen almacenada utilizando subImage, y solo con fines de prueba, mostrar las 52 en una ventana. El archivo está en el directorio correcto, me aseguré de eso. Creo que mi problema radica en mi uso de Jlabels, o simplemente en un error estúpido. De todos modos, aquí está mi clase que hace la división de la hoja de sprites.

 package gui;

import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.io.File;


import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class crdimgs extends JPanel {/**
 *
 */
    static final long serialVersionUID = 1L;
    public final int width = 10;
    public final int height = 20;
    public int rows = 13;
    public int cols = 5;

    public BufferedImage image;
    File cardimg = new File("Cards.jpg");
    BufferedImage cards[];

    public void loadsplit(File loadimage){

        try{
            image = ImageIO.read(loadimage);

            } catch(Exception error){
                System.out.print("error");
              }


        cards = new BufferedImage[cols*rows];

    }

    public crdimgs() {
        loadsplit(cardimg);
        setLayout(new GridLayout(rows, cols, 1, 1));

        int x = 0;
        int y = 0;
        int subimg = 0;

        for( int i = 0; i < rows; i++)
        {
            JPanel panel = new JPanel();
            cards[subimg] = new BufferedImage(width, height, 5);
            cards[subimg] = image.getSubimage(x, y, width, height);
            panel.add(new JLabel(new ImageIcon(cards[subimg])));
            add(panel);
            x+=width;
            subimg++;
        }
        y+=height;
        x=0;
        }
    }
}

Y mi clase principal

package gui;
import javax.swing.JFrame;
import java.awt.Color;


public class cards extends JFrame {

    private static final long serialVersionUID = 1L;

    public cards(){

        setTitle("Poker");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(1000, 700);
        setLocationRelativeTo(null);
        this.getContentPane().setBackground(Color.GREEN);
        setVisible(true);
        setResizable(false);
        add(new crdimgs());

    }

public static void main(String[] args){
    new cards();
}
}

Los errores que recibo en este momento son:

errorException in thread "main" java.lang.NullPointerException
at gui.crdimgs.<init>(crdimgs.java:53)
at gui.cards.<init>(cards.java:22)
at gui.cards.main(cards.java:28)

Respuestas a la pregunta(1)

Su respuesta a la pregunta