\appendix
% \onecolumn
% The appendix section contains additional qualitative examples and figures to illustrate the color transforming behavior of our method.

\begin{figure*}[t!]
    \centering
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/midog_paired/domain0_0_transformed.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/midog_paired/domain2_0.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/midog_paired/domain0_1_transformed.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/midog_paired/domain2_1.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/midog_paired/domain0_2_transformed.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/midog_paired/domain2_2.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        $\uparrow$
        \includegraphics[width=\textwidth]{figures/midog_paired/domain0_0.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        $\downarrow$
        \includegraphics[width=\textwidth]{figures/midog_paired/domain2_0_transformed.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        $\uparrow$
        \includegraphics[width=\textwidth]{figures/midog_paired/domain0_1.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        $\downarrow$
        \includegraphics[width=\textwidth]{figures/midog_paired/domain2_1_transformed.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        $\uparrow$
        \includegraphics[width=\textwidth]{figures/midog_paired/domain0_2.png}
    \end{minipage}
    \begin{minipage}[b]{0.15\textwidth}
        \centering
        $\downarrow$
        \includegraphics[width=\textwidth]{figures/midog_paired/domain2_2_transformed.png}
    \end{minipage}
    \caption{Six samples from the MIDOG 2021 dataset and their transformations by the respective \ours models are shown.
    Images with a green border are the modified version of the image in the same column. The rows represent two different domains in the dataset.
    Note that MIDOG 2021 does not contain image pairs.
    }
    \label{fig:midog}
\end{figure*}

\section{Implementation and computational performance}\label{sec:appendix_implementation}
The network architecture is the same as in StainNet, i.e. a fully $1\times1$ convolutional neural network with three layers of $32$ kernels each, followed by a new residual addition at the end.
Adam optimizers are used with a learning rate of $0.0001$ and batches of $8$ images.
For every batch, $N:=8$ orthonormal bases are sampled uniformly for the color distribution dissimilarity loss.
\todo{Mention relevance of N.}
The target color distribution for the dissimilarity is aggregated by sweeping over the target train set.
An L1 weight decay loss term is added with $\lambda_{reg}:=0.25$.
In our implementation, this comes down to $386$ MiB of GPU memory usage while idle.
During inference on a single NVIDIA RTX 4090 GPU the memory requirements rise to $2500$ MiB for streaming large images, i.e. batches of $1\times3\times4096\times4096$.
These images are processed with a delay of $.0350 s$ ± $.0019 s$ or $28.62$ ± $0.41$ fps.

\section{Hallucination evaluation dataset}\label{sec:appendix_dataset}
To study the risk of hallucinations, we collected a proprietary dataset of real-world data from multiple institutes.
The sources of data include The Cancer Imaging Archive (TCIA, \citet{Clark2013TCIA}), Michigan Medicine, and Charité – Universitätsmedizin Berlin.
From these, we extracted subsets containing only breast tissue samples, with only one scanner model per domain.
While future work will examine heterogeneous datasets with multiple tissue types, here we limit the study to breast tissue only as many related works are designed for a homogeneous setting.
The source set originated from TCIA and contains 65k patches scanned through a Leica Aperio AT2.
The target set of 18k patches comes from Michigan Medicine and was scanned using a Leica Aperio GT 450 DX.
Finally, a test set of 24k patches scanned with the same model of scanner as in the source set was collected from Charité.
Beyond tissue type and scanner model, these subsets were not curated.
Upon visual inspection and annotation, several artifacts were discovered, as would be the case in an actual clinical practice.
These artifacts include air bubbles, tissue folds, misaligned image stitching, markers, overstaining, foreign materials, and out-of-focus regions.
For comparison, the CAMELYON16 dataset \cite{bejnordi2017diagnostic} is far more sterile and is limited to 6k images in its source and target domains each, and 10k in the test set.



\begin{figure*}[h!]
    \centering
    \subfigure[original]{
        \includegraphics[width=0.41\textwidth]{figures/bio1_method_comparison_original/original_bio1_crop0.png}
    }
    \subfigure[StainGAN]{
        \includegraphics[width=0.41\textwidth]{figures/bio1_method_comparison_original/staingan_bio1_crop0.png}
    }
    \caption{Stain normalization examples.}
\end{figure*}

\begin{figure*}[h!]
    \centering
    \subfigure[ContriMix]{
        \includegraphics[width=0.41\textwidth]{figures/bio1_method_comparison_original/contrimix_bio1_crop0.png}
    }
    \subfigure[StainFuser]{
        \includegraphics[width=0.41\textwidth]{figures/bio1_method_comparison_original/stainfuser_bio1_crop0.png}
    }
    \caption{Stain normalization examples.}
\end{figure*}

\begin{figure*}[h!]
    \centering
    \subfigure[StainNet]{
        \includegraphics[width=0.41\textwidth]{figures/bio1_method_comparison_original/stainnet_bio1_crop0.png}
    }
    \subfigure[$1\times1$ Stainer (ours)]{
        \includegraphics[width=0.41\textwidth]{figures/bio1_method_comparison_original/ours_bio1_crop0.png}
    }
    \caption{Stain normalization examples.}
\end{figure*}


\begin{figure*}[b!]
    \centering
    \subfigure[Source (aperio)\label{fig:source_histogram}]{
        \includegraphics[width=0.40\textwidth]{figures/histos/source_aperio.png}
    }
    \subfigure[1$\times$1 Stainer (ours)\label{fig:target_histogram}]{
        \includegraphics[width=0.40\textwidth]{figures/histos/mitos_test_aperio_transformed_into_hamamatsu_2025-02-19__23_59_40__not_always_stainnet_407462_color_histogram.png}
    }
    \subfigure[StainNet]{
        \includegraphics[width=0.40\textwidth]{figures/histos/mitos_test_aperio_transformed_into_hamamatsu_stainnet_color_histogram.png}
    }
    \subfigure[Target (hamamatsu)]{
        \includegraphics[width=0.40\textwidth]{figures/histos/target_hamamatsu.png}
    }
    % \caption{These histograms show the RGB projection of the color distributions of the images of the aperio (source) and hamamatsu (target) domains in the Mitos \& Atypia 14 dataset.
    % The distributions after the source is modified to resemble the target by the 1$\times$1 Stainer (b) and StainNet (c) are shown as well.
    % }
    \caption{
    The RGB color distributions after the source is modified to resemble the target by \ours and StainNet \citep{stainnet} are shown.
    }
    \label{fig:histograms}
\end{figure*}



\begin{table}[!h]
\centering
\caption{Examples of Structure Discrepancy \cite{moens2026hallucinates}. Even when scores are close, the perceived hallucinations can vary in severity, especially at the lower end.}
\label{tab:structure}
\begin{tabular}{l|ccc}
& Input & Output & Structure\\
& & & Discrepancy\\
\hline
\multirow{2}{*}[-5em]{\textbf{\rotatebox{30}{StainGAN}}} & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/staingan_48_000555_input.png}} & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/staingan_48_000555_output.png}} & 48\\
 & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/staingan_70_006282_input.png}} & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/staingan_70_006282_output.png}} & 70\\
\hline
\multirow{2}{*}[-5em]{\textbf{\rotatebox{30}{StainNet}}} & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/stainnet_46_000453_input.png}} & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/stainnet_46_000453_output.png}} & 46\\
 & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/stainnet_64_003232_input.png}} & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/stainnet_64_003232_output.png}} & 64\\
\hline
\multirow{2}{*}[-5em]{\textbf{\rotatebox{30}{\ours}}} & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/ours_49_000220_input.png}} & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/ours_49_000220_output.png}} & 49\\
 & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/ours_50_000217_input.png}} & \raisebox{-.5\height}{\includegraphics[width=0.22\linewidth]{figures/hallucinations/ours_50_000217_output.png}} & 50\\
\end{tabular}
\end{table}


\begin{figure*}[ht!]
    \centering
    \subfigure[Source (aperio)]{
        \includegraphics[width=0.40\textwidth]{figures/color_cubes/mitos_pca_test_aperio_all.png}
    }
    \subfigure[1$\times$1 Stainer (ours)]{
        \includegraphics[width=0.40\textwidth]{figures/color_cubes/mitos_pca_test_aperio_ours_2025-02-27__01_03_43__not_always_stainnet_557627.png}
    }
    \subfigure[StainNet]{
        \includegraphics[width=0.40\textwidth]{figures/color_cubes/mitos_pca_test_aperio_StainNet-Public_layer3_ch32.png}
    }
    % \caption{These histograms show the RGB projection of the color distributions of the images of the aperio (source) and hamamatsu (target) domains in the Mitos \& Atypia 14 dataset.
    % The distributions after the source is modified to resemble the target by the 1$\times$1 Stainer (b) and StainNet (c) are shown as well.
    % }
    \caption{
    An illustration of the color mapping by \ours and StainNet. 
    (a) A projection is taken of the RGB color cube perpendicular to the principal component vectors of the set of colors in the source train set of Mitos \& Atypia 14.
    (b) At the same position on the projection, the colors transformed by our method are shown.
    The colors appear shifted and warped. Notice how there is barely any orange past 50 times the first principal component vector.
    (c) StainNet maps everything to colors that are expected in the target distribution.
    In this way, information from out of distribution colors might be lost.
    }
    \label{fig:cubes}
\end{figure*}


\begin{figure*}
\centering
\subfigure[The StainGAN \protect\citep{shaban2019staingan} training process involves an adversarial cycle-consistency loop with two generator networks and a discriminator.]{
    \includegraphics[width=.4\linewidth]{figures/staingan_training.png}
}
\hspace{.03\linewidth}
\subfigure[The StainNet \protect\citep{stainnet} training process first requires training of a StainGAN model for supervision.]{
    \includegraphics[width=0.4\linewidth]{figures/stainnet_training.png}
}
\hspace{.03\linewidth}
\subfigure[During the \ours training process (ours) a residual network is supervised directly by the target color distribution.]{
% \begin{subfigure}[0.5\linewidth] % subfigure box is 50% of the line
    \includegraphics[width=.37\linewidth]{figures/architecture_as_stainnet.png}
%  \caption{The \ours{} training process (ours). The network updates are guided directly by a color distribution matching loss.}
%   \label{fig:ours-wide-caption}
% \end{subfigure}
}
\caption{A bird's-eye view comparison of the training process for StainGAN, StainNet, and 1$\times$1 Stainer. 
StainNet and \ours have an extremely small number of parameters, which bounds the modifications that can be made to the input images.
These diagrams highlight the difference in simplicity of training, as well as the dependency of StainNet on StainGAN.
Figure (b) is reproduced exactly as in the original publication \citep{stainnet} and (a) is adapted from it.
% The network architecture is kept extremely tiny to bound the modifications that can be made.
} 
\label{fig:architecture_comparison}
\end{figure*}

% Qualitative comparison: 3 example blocks × 4 methods (Input, Comp0, Comp1, Ours)
% Assumes the Python script created:
%   annotated/<same-filenames>      = full images with gold dashed box (input only)
%   crops_resized/<same-filenames>  = ROI crops resized to original W×H (no boxes)

\begin{figure*}[t!]
    \centering

    %-------------------------
    % Column headers
    %-------------------------
    \setlength{\tabcolsep}{4pt}
    {\footnotesize
    \begin{tabular}{@{}c c c c@{}}
        \makebox[0.13\linewidth][c]{\textbf{Input}} &
        \makebox[0.13\linewidth][c]{\textbf{StainNet}} &
        \makebox[0.13\linewidth][c]{\textbf{StainGAN}} &
        \makebox[0.13\linewidth][c]{\textbf{Ours}} \\
    \end{tabular}
    }
    \vspace{0.35em}

    %========================================================
    % Example block 1: 1295
    %========================================================
    % Full images (gold box on input only)
    \setlength{\tabcolsep}{4pt}
    \begin{tabular}{@{}c c c c@{}}
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/annotated/1595_0input.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/1595_comp0_softmax0.6616_1595.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/1595_comp1_softmax0.9997_1595.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/1595_ours.png} \\
        % \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/1595_ours_softmax0.0730_2025-04-01__02_34_20__grid_camelyon_to0_more_capacity_critics_022415_max_discriminator_value_1595.png} \\
        \multicolumn{4}{c}{\footnotesize \emph{Full image} (ID 1595). ROI indicated on input only.}
    \end{tabular}

    \vspace{0.35em}

    % Zoomed crops (resized to original W×H), no boxes
    \begin{tabular}{@{}c c c c@{}}
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/1595_0input.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/1595_comp0_softmax0.6616_1595.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/1595_comp1_softmax0.9997_1595.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/1595_ours.png} \\
        \multicolumn{4}{c}{\footnotesize \emph{Zoomed region} (ID 1595).}
    \end{tabular}

    \vspace{0.75em}
    \hrule height 0.4pt
    \vspace{0.6em}

    %========================================================
    % Example block 2: 1257
    %========================================================
    % Full images
    \begin{tabular}{@{}c c c c@{}}
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/annotated/1757_0input.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/1757_comp0_softmax0.8361_1757.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/1757_comp1_softmax0.9986_1757.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/1757_ours.png} \\
        % \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/1757_ours_softmax0.0010_2025-04-01__02_34_20__grid_camelyon_to0_more_capacity_critics_022415_max_discriminator_value_1757.png} \\
        \multicolumn{4}{c}{\footnotesize \emph{Full image} (ID 1757). ROI indicated on input only.}
    \end{tabular}

    \vspace{0.35em}

    % Zoomed crops
    \begin{tabular}{@{}c c c c@{}}
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/1757_0input.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/1757_comp0_softmax0.8361_1757.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/1757_comp1_softmax0.9986_1757.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/1757_ours.png} \\
        \multicolumn{4}{c}{\footnotesize \emph{Zoomed region} (ID 1757).}
    \end{tabular}

    \vspace{0.75em}
    \hrule height 0.4pt
    \vspace{0.6em}

    %========================================================
    % Example block 3: 3012
    %========================================================
    % Full images
    \begin{tabular}{@{}c c c c@{}}
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/annotated/3015_0input.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/3015_comp0_softmax1.0000_3015.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/3015_comp1_softmax1.0000_3015.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/3015_ours.png} \\
        % \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/3015_ours_softmax0.0104_2025-04-01__02_34_20__grid_camelyon_to0_more_capacity_critics_022415_max_discriminator_value_3015.png} \\
        \multicolumn{4}{c}{\footnotesize \emph{Full image} (ID 3015). ROI indicated on input only.}
    \end{tabular}

    \vspace{0.35em}

    % Zoomed crops
    \begin{tabular}{@{}c c c c@{}}
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/3015_0input.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/3015_comp0_softmax1.0000_3015.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/3015_comp1_softmax1.0000_3015.png} &
        \includegraphics[width=0.13\linewidth]{figures/rebuttal/misclassifications/crops_resized/3015_ours.png} \\
        \multicolumn{4}{c}{\footnotesize \emph{Zoomed region} (ID 3015).}
    \end{tabular}

    \vspace{0.6em}

    \caption{
        \rebutextra{Qualitative comparison of CAMELYON16 misclassifications.}
        Columns show the \emph{Input}, two related works (\emph{StainNet}, \emph{StainGAN}), and \emph{\ours (Ours)}.
        For each example, the top row displays the full image (ROI indicated with a gold dashed box on the input only), and the bottom row shows the corresponding zoomed region.
        Our method retains infrequent colors to avoid information loss.
    }
    \label{fig:qual_three_blocks}
\end{figure*}

% Appendix qualitative figure: 6 samples × 8 methods (Original, Macenko, Reinhard, Vahadane, StainGAN, StainNet, Ours[alt], Target)
% Paths are relative to this .tex file and point to ./figures/rebuttal/mitos_eval
% Requires: \usepackage{graphicx}

\begin{figure*}[t!]
    \centering

    %----------------------------------
    % Column headers (width = image width)
    %----------------------------------
    \setlength{\tabcolsep}{3pt}
    {\footnotesize
    \begin{tabular}{@{}c c c c c c c c@{}}
        \makebox[0.115\linewidth][c]{\textbf{Source}} &
        \makebox[0.115\linewidth][c]{\textbf{Macenko}} &
        \makebox[0.115\linewidth][c]{\textbf{Reinhard}} &
        \makebox[0.115\linewidth][c]{\textbf{Vahadane}} &
        \makebox[0.115\linewidth][c]{\textbf{StainGAN}} &
        \makebox[0.115\linewidth][c]{\textbf{StainNet}} &
        \makebox[0.115\linewidth][c]{\textbf{Ours}} &
        \makebox[0.115\linewidth][c]{\textbf{Target}} \\
    \end{tabular}
    }

    \vspace{0.4em}

    %=============================
    % Sample 01
    %=============================
    \begin{tabular}{@{}c c c c c c c c@{}}
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/01__original__A06_02Bd_1_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/01__Macenko__macenko_matched__A06_02Bd_1_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/01__Reinhard__reinhard_matched__A06_02Bd_1_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/01__Vahadane__vahadane_matched__A06_02Bd_1_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/01__StainGAN__latest_net_G_A__A06_02Bd_1_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/01__StainNet__StainNet-Public_layer3_ch32__A06_02Bd_1_1.png} &
        % Ours column intentionally uses the *alt* variant:
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/01__ours_alt__one_by_one__06-19__10_13__max_discriminator_value__A06_02Bd_1_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/01__target__hamamatsu__A06_02Bd_1_1.png} \\
    \end{tabular}

    \vspace{0.5em}\hrule height 0.35pt \vspace{0.5em}

    %=============================
    % Sample 03
    %=============================
    \begin{tabular}{@{}c c c c c c c c@{}}
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/03__original__A08_03Bc_2_3.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/03__Macenko__macenko_matched__A08_03Bc_2_3.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/03__Reinhard__reinhard_matched__A08_03Bc_2_3.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/03__Vahadane__vahadane_matched__A08_03Bc_2_3.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/03__StainGAN__latest_net_G_A__A08_03Bc_2_3.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/03__StainNet__StainNet-Public_layer3_ch32__A08_03Bc_2_3.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/03__ours_alt__one_by_one__06-19__10_13__max_discriminator_value__A08_03Bc_2_3.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/03__target__hamamatsu__A08_03Bc_2_3.png} \\
    \end{tabular}

    \vspace{0.5em}\hrule height 0.35pt \vspace{0.5em}

    %=============================
    % Sample 04
    %=============================
    \begin{tabular}{@{}c c c c c c c c@{}}
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/04__original__A09_01Da_0_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/04__Macenko__macenko_matched__A09_01Da_0_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/04__Reinhard__reinhard_matched__A09_01Da_0_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/04__Vahadane__vahadane_matched__A09_01Da_0_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/04__StainGAN__latest_net_G_A__A09_01Da_0_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/04__StainNet__StainNet-Public_layer3_ch32__A09_01Da_0_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/04__ours_alt__one_by_one__06-19__10_13__max_discriminator_value__A09_01Da_0_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/04__target__hamamatsu__A09_01Da_0_1.png} \\
    \end{tabular}

    \vspace{0.5em}\hrule height 0.35pt \vspace{0.5em}

    %=============================
    % Sample 12
    %=============================
    \begin{tabular}{@{}c c c c c c c c@{}}
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/12__original__A13_03Bc_0_0.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/12__Macenko__macenko_matched__A13_03Bc_0_0.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/12__Reinhard__reinhard_matched__A13_03Bc_0_0.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/12__Vahadane__vahadane_matched__A13_03Bc_0_0.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/12__StainGAN__latest_net_G_A__A13_03Bc_0_0.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/12__StainNet__StainNet-Public_layer3_ch32__A13_03Bc_0_0.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/12__ours_alt__one_by_one__06-19__10_13__max_discriminator_value__A13_03Bc_0_0.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/12__target__hamamatsu__A13_03Bc_0_0.png} \\
    \end{tabular}

    \vspace{0.5em}\hrule height 0.35pt \vspace{0.5em}

    %=============================
    % Sample 18
    %=============================
    \begin{tabular}{@{}c c c c c c c c@{}}
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/18__original__A16_05Dd_2_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/18__Macenko__macenko_matched__A16_05Dd_2_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/18__Reinhard__reinhard_matched__A16_05Dd_2_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/18__Vahadane__vahadane_matched__A16_05Dd_2_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/18__StainGAN__latest_net_G_A__A16_05Dd_2_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/18__StainNet__StainNet-Public_layer3_ch32__A16_05Dd_2_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/18__ours_alt__one_by_one__06-19__10_13__max_discriminator_value__A16_05Dd_2_1.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/18__target__hamamatsu__A16_05Dd_2_1.png} \\
    \end{tabular}

    \vspace{0.5em}\hrule height 0.35pt \vspace{0.5em}

    %=============================
    % Sample 20
    %=============================
    \begin{tabular}{@{}c c c c c c c c@{}}
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/20__original__A16_09Dc_0_2.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/20__Macenko__macenko_matched__A16_09Dc_0_2.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/20__Reinhard__reinhard_matched__A16_09Dc_0_2.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/20__Vahadane__vahadane_matched__A16_09Dc_0_2.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/20__StainGAN__latest_net_G_A__A16_09Dc_0_2.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/20__StainNet__StainNet-Public_layer3_ch32__A16_09Dc_0_2.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/20__ours_alt__one_by_one__06-19__10_13__max_discriminator_value__A16_09Dc_0_2.png} &
        \includegraphics[width=0.115\linewidth]{figures/rebuttal/mitos_eval/20__target__hamamatsu__A16_09Dc_0_2.png} \\
    \end{tabular}

    \vspace{0.6em}

    \caption{
        \rebutextra{Qualitative comparison across many methods on Mitos \& Atypia 14.
        }
        Columns show the \emph{Source} input (Aperio), classical stain normalizations (Macenko, Reinhard, Vahadane), learning-based methods (StainGAN, StainNet), \emph{\ours (Ours)}, and the ground truth \emph{Target} (Hamamatsu).
    }
    \label{fig:appendix_many_methods_nozooms}
\end{figure*}

\begin{figure*}[t!]
    \centering
    \setlength{\tabcolsep}{6pt}
    \begin{tabular}{@{}c c c@{}}
        \includegraphics[width=0.31\linewidth]{figures/rebuttal/heterogeneous_tissue_train_source/09__src__074_0016.png} &
        \includegraphics[width=0.31\linewidth]{figures/rebuttal/heterogeneous_tissue_train_source/13__src__134_0157.png} &
        \includegraphics[width=0.31\linewidth]{figures/rebuttal/heterogeneous_tissue_train_source/16__src__148_1113.png}
    \end{tabular}

    \vspace{0.4em}

    \caption{
        \rebutextra{Random samples from the training source dataset used during a study on the applicability of our method on datasets with heterogeneous tissue types.
        See section~\ref{sec:ablation_data_distribution} for details.}
    }
    \label{fig:heterogeneous_train_source}
\end{figure*}

% Appendix figure: heterogeneous_eval (4 samples × 3 columns: Original, Ours[alt88], Target)
% Paths are relative to this .tex file.
% Requires: \usepackage{graphicx}

\begin{figure*}[t!]
    \centering

    % Column headers centered with width matching the images
    \setlength{\tabcolsep}{4pt}
    {\footnotesize
    \begin{tabular}{@{}c c c@{}}
        \makebox[0.28\linewidth][c]{\textbf{Source}} &
        \makebox[0.28\linewidth][c]{\textbf{Ours}} &
        \makebox[0.28\linewidth][c]{\textbf{Target}} \\
    \end{tabular}
    }

    \vspace{0.4em}

    %=============================
    % Sample 05
    %=============================
    \begin{tabular}{@{}c c c@{}}
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/05__original__A09_03Ca_1_3.png} &
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/05__ours_alt88__one_by_one__01-22__14_42__step_00088__A09_03Ca_1_3.png} &
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/05__target__hamamatsu__A09_03Ca_1_3.png} \\
    \end{tabular}

    \vspace{0.5em}\hrule height 0.35pt \vspace{0.5em}

    %=============================
    % Sample 07
    %=============================
    \begin{tabular}{@{}c c c@{}}
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/07__original__A09_04Bd_0_2.png} &
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/07__ours_alt88__one_by_one__01-22__14_42__step_00088__A09_04Bd_0_2.png} &
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/07__target__hamamatsu__A09_04Bd_0_2.png} \\
    \end{tabular}

    \vspace{0.5em}\hrule height 0.35pt \vspace{0.5em}

    %=============================
    % Sample 10
    %=============================
    \begin{tabular}{@{}c c c@{}}
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/10__original__A13_02Dd_3_0.png} &
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/10__ours_alt88__one_by_one__01-22__14_42__step_00088__A13_02Dd_3_0.png} &
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/10__target__hamamatsu__A13_02Dd_3_0.png} \\
    \end{tabular}

    \vspace{0.5em}\hrule height 0.35pt \vspace{0.5em}

    %=============================
    % Sample 20
    %=============================
    \begin{tabular}{@{}c c c@{}}
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/20__original__A16_09Dc_0_2.png} &
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/20__ours_alt88__one_by_one__01-22__14_42__step_00088__A16_09Dc_0_2.png} &
        \includegraphics[width=0.28\linewidth]{figures/rebuttal/heterogeneous_eval/20__target__hamamatsu__A16_09Dc_0_2.png} \\
    \end{tabular}

    \vspace{0.6em}

    \caption{
        \rebutextra{Evaluation on Mitos \& Atypia 14 after training with heterogeneous tissue data.
        See section~\ref{sec:ablation_data_distribution} for details.}
    }
    \label{fig:appendix_heterogeneous_eval}
\end{figure*}

% Appendix figure: illustration of heterogeneous training data (source domain)
