## Materials and Methods
### Processing  
The measurement output is a three-dimensional (nx \(\times\) ny \(\times\) N) data cube, with nx and ny the vertical and horizontal pixel locations and N = 1800 the different time steps. The relative temperatures are recorded as 14-bit grayscale values. Before thermal excitation of the sample, several cold frames are recorded. These frames are averaged in order to reduce the time-dependent noise, this average is subtracted from each frame in the data cube. As a result, the data that is being evaluated are temperature differences with respect to the average cold frame. For display purposes, these values are normalized from 0 to 1 in each image or over the entire data cube. The measurement data is processed with clustering algorithms in order to obtain easy to interpret results that can assist with identifying the differ glass types. Two different clustering methods are used, k-means clustering and hierarchical clustering, and their results are compared. K-means clustering is a popular unsupervised learning technique for finding clusters in data. It aims to partition all observations/image pixels into a predetermined number of clusters, k. In the present case, each pixel is characterized by a feature vector consisting of the temperature  
Figure 2: Experimental setup with the camera facing the interior side of the window. **Left:** The heat sources are placed in transmission mode. **Right:** the heat sources are placed in reflection mode. difference reading as a function of (cool-down) time. In Figure 8 some typical feature vectors (cluster averages) are plotted. Each observation/pixel is assigned to the cluster whose mean is closest to that observation, according to some distance metric between their feature vectors. K-means clustering can be used on (hyperspectral) image data for segmentation and therefore also to thermographic datasets. Before clustering a mask was manually defined that eliminates the pixels corresponding to the wooden frame, the lead cames and the areas near them. These pixels are replaced with NaN (not-a-number) values. This enabled clustering solely on the different glass types. Prior to the actual clustering, the data cube was reshaped into a two-dimensional (nx \(\times\)ny \(\times\) N) matrix, so each pixel is an observation and the features are the temperature differences at different times during the cooling-down period. The MATLAB(r) implementation of the k-means clustering algorithm with the squared Euclidian distance metric was employed as Euclidean distance is often used for clustering time-series data [31]. In order to avoid local minima which can occur as a result of the random initialization step, the clustering algorithm is repeated a few times and the result with the smallest loss is selected. The clustering results are visualized by color-coding each pixel according to the cluster it belongs to. The objective is to obtain segmented images that clearly place several glass panes or pieces of the glass panes in the same group, which likely indicates they are the same glass type. While for k-means clustering it is necessary to make an assumption about the number of clusters in the data before running the algorithm, this is not the case for agglomerative hierarchical clustering. Here, individual observations or clusters are hierarchically linked into larger clusters, based on the distance between their feature vectors. The closest unlinked observations/clusters are linked to each other into a larger cluster, then the next ones and so on until all observations belong to a single all-encompassing cluster. The linkage method determines how the distance between a cluster and another cluster/observation is measured. We manually draw multiple regions of interest (ROIs) in the image, one for each small glass pane and two for the larger ones, and take the average temperature difference of each ROI for each time step. These averages of the ROIs are the observations we perform hierarchical clustering on.