在计算机视觉(CVPR、ICCV、ECCV)、多媒体(ACM MM)以及人工智能综合顶会(NeurIPS、AAAI)中,图像超分辨率、去噪、去雾、图像修复(Inpainting)、语义分割、目标检测以及 3D 隐式重建(NeRF/3DGS)等方向的手稿,定性视觉效果对比图(Qualitative Comparison Figures) 占据了实验章节最关键的视觉版面。

审稿人(Reviewer)在评审这类论文时,往往会率先放大阅读对比图。许多初学者制作对比图时常犯以下几类典型排版错误:

  • 裁剪位置不一致:不同算法截取的局部放大区域存在几到十几个像素的偏移,导致审稿人无法进行严丝合缝的逐像素纹理对比;

  • 二次平滑失真:将小图贴入 PPT 或 Word 放大时,软件默认启用了双线性或双三次插值(Bilinear/Bicubic),导致原本锐利的算法结果被人为抹平发虚;

  • 框线混乱遮挡:原图上的选框过粗,遮挡了核心结构;或者未建立放大部分与原图选框的颜色联动,读者根本找不到放大区域来自何处;

  • 排版稀疏占版面:多张子图之间留着巨大的空白间距,白白挤占宝贵的手稿页码配额。

掌握规范的 ROI 裁剪法则、掌握防失真的放大机制,并利用脚本实现全流程自动化,是打造顶会级定性对比图的必备功底。

 

 

1. 顶会定性对比图的四大核心排版铁律

一张经得起严苛同行推敲的局部放大对比图,必须在底层数据和视觉呈现上遵循以下准则:

① 严格对齐 ROI(Region of Interest)像素坐标
  • 单点截取,全员映射:选定待放大的感兴趣区域(ROI)后,必须记录下其在原始高分辨率图像中的绝对像素矩形坐标 $[y_{\min}:y_{\max}, x_{\min}:x_{\max}]$。

  • 基线算法(Baselines)、真实标签(Ground Truth/Reference)以及己方提出的模型(Ours),必须强制使用这组完全相同的切片坐标进行裁剪,绝对不能凭借肉眼手动截图。

② 拒绝平滑,强制使用“最近邻插值(Nearest Neighbor)”放大
  • 当从原图切出一个诸如 $64 \times 64$ 像素的极小局部块、需要将其放大到与全景图等宽显示时,绝对不能使用常规的双线性(Bilinear)或抗锯齿插值。

  • 常规插值算法会在像素边缘自动混色过渡,掩盖低质算法的锯齿走样(Aliasing),也会抹杀优秀算法重建出的高频纹理。

  • 出版规范:必须采用最近邻插值(Nearest Neighbor Interpolation)。该算法通过直接复制相邻像素来拉大图像,能够 100% 真实还原算法在微观像素层面的真实输出状态。

③ 框线颜色联动与防遮挡规范(Color-Coded Linkage)
  • 原图红框 $\rightarrow$ 放大图红边框:原图上框选 ROI 的矩形边框颜色,必须与对应的局部放大图的外层实线边框颜色完全一致(如采用亮红 #E41A1C 或亮黄 #FFFF00)。

  • 多区域双色对比:若同一张全景图需要展示两个不同的局部(如一个看边缘轮廓,一个看平坦区噪点),应分别使用红色与绿色(或红色与黄色)两套独立的线框,切忌全用同一种颜色造成指向混乱。

  • 线宽克制:全景图上的选框线宽通常控制在 $1.5$ 至 $2$ 像素(以原图分辨率为基准),既能清晰辨识,又绝不压盖核心物体边缘。

④ 叠加定量指标角标(In-situ Metrics Inset)
  • 在超分辨率或去噪任务中,主流顶会推崇在每个算法对应的局部图左下角或右下角,半透明悬浮打上该图的具体定量评估数值(如 PSNR / SSIM 或 LPIPS)。

  • 这能让审稿人将微观视觉质感与客观数学指标一并审阅,避免在正文表格与图表之间来回翻阅,大幅提升审稿体验。

2. 经典排版拓扑构图方案

根据论文版面预算与算法对比数量,通常采用以下两种排版拓扑:

拓扑 A:横向矩阵式网格(工科、CV顶会最推荐)

整张大图横跨双栏(Double-Column Width,宽约 17.5 cm):

  • 第一行(全局视野):水平排列 5 至 6 张图,从左至右依次为:Input / Degraded $\rightarrow$ Baseline 1 $\rightarrow$ Baseline 2 $\rightarrow$ Baseline 3 $\rightarrow$ Ours $\rightarrow$ Ground Truth。原图上均标注一致的红色矩形框。

  • 第二行(局部精微):对应第一行正下方,垂直对齐展示每一个算法的红色 ROI 放大图。

  • 优势:上下垂直对齐,人眼只需轻微纵向移动视线,即可在毫秒级内甄别不同模型在同一结构边缘的处理差异。

拓扑 B:角落嵌合式画中画(单栏紧凑型)

当版面空间极度紧张、图片只能放置在单栏(Single-Column Width,宽约 8.5 cm)时:

  • 直接将最近邻放大的局部切片,以“画中画(Picture-in-Picture)”的形式叠放在该图片内部信息量最少、背景最空旷的角落(如纯天空、纯黑底色处);

  • 放大块四周加上醒目的反差色边框(如白边或黄边),并引出一根极细的导引折线指向原图中的取样框。

3. Python 自动化裁切、加框与拼图实操脚本

借助 Python 的 Pillow (PIL) 和 OpenCV,可以构建一个标准化的批处理流水线,杜绝手动截图带来的任何像素级误差:

Python
import os
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont

def process_qualitative_comparison(image_paths, methods, crop_box, zoom_factor=4, border_color=(0, 0, 255), border_width=2):
    """
    image_paths: 各算法输出图像的路径列表 [input, baseline1, baseline2, ours, gt]
    methods: 算法名称列表
    crop_box: ROI 切片坐标元组 (x1, y1, x2, y2)
    zoom_factor: 放大倍数 (通常设为 3 或 4)
    border_color: BGR 颜色元组,默认红色 (0, 0, 255)
    border_width: 选框与放大图外边框的像素宽度
    """
    x1, y1, x2, y2 = crop_box
    crop_w, crop_h = x2 - x1, y2 - y1
    
    top_row_images = []
    bottom_row_images = []
    
    for path, method in zip(image_paths, methods):
        # 1. 以无损 RGB 模式读取原始高分辨率图像
        img = cv2.imread(path)
        if img is None:
            raise FileNotFoundError(f"Image not found at {path}")
            
        # 2. 提取严丝合缝的局部 ROI
        cropped = img[y1:y2, x1:x2].copy()
        
        # 3. 关键点:使用最近邻插值 (INTER_NEAREST) 无损放大局部块
        zoomed_crop = cv2.resize(
            cropped, 
            (crop_w * zoom_factor, crop_h * zoom_factor), 
            interpolation=cv2.INTER_NEAREST
        )
        
        # 4. 为放大后的切片绘制包裹外边框 (颜色与原图选框绝对一致)
        zoomed_crop = cv2.copyMakeBorder(
            zoomed_crop, 
            border_width, border_width, border_width, border_width, 
            cv2.BORDER_CONSTANT, 
            value=border_color
        )
        
        # 5. 在全景原图上绘制 ROI 标记矩形框
        img_with_box = img.copy()
        cv2.rectangle(img_with_box, (x1, y1), (x2, y2), border_color, border_width)
        
        top_row_images.append(img_with_box)
        bottom_row_images.append(zoomed_crop)

    # 6. 水平拼合顶部全景行与底部放大切片行 (可调整底部宽度与顶部对齐)
    # 将放大切片 resize 到与全景图等宽,确保上下网格绝对垂直对称
    target_width = top_row_images[0].shape[1]
    bottom_row_aligned = [
        cv2.resize(z, (target_width, int(z.shape[0] * (target_width / z.shape[1]))), 
                   interpolation=cv2.INTER_NEAREST)
        for z in bottom_row_images
    ]
    
    # 拼合矩阵
    row1 = np.hstack(top_row_images)
    row2 = np.hstack(bottom_row_aligned)
    final_canvas = np.vstack([row1, row2])
    
    # 7. 保存为无损 PNG 格式 (严禁使用有损 JPG)
    cv2.imwrite("qualitative_comparison_result.png", final_canvas)
    print("Qualitative comparison matrix successfully generated at lossless quality.")

# ----------------- 工业级调用示例 -----------------
# 设定统一裁剪的坐标: [x_min, y_min, x_max, y_max]
ROI_COORDINATES = (120, 85, 184, 149) 

ALGORITHM_PATHS = [
    "results/input.png", 
    "results/baseline_rcan.png", 
    "results/baseline_swinir.png", 
    "results/proposed_ours.png", 
    "results/ground_truth.png"
]
METHOD_NAMES = ["Bicubic", "RCAN", "SwinIR", "Ours", "Reference"]

# process_qualitative_comparison(ALGORITHM_PATHS, METHOD_NAMES, ROI_COORDINATES)

4. LaTeX 双栏紧密子图排版标准模板

在将切好的单张子图放入 LaTeX 时,最常见的问题是子图之间空隙过大、换行混乱。

国际顶会模板(如 IEEEtran 或 CVPR 官方模板)中,推荐使用 subcaption 宏包,配合全局宽度参数将图片间距压到极限(接近无缝排版):

代码段
\documentclass[10pt,journal,compsoc]{IEEEtran}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{booktabs}

\begin{document}

\begin{figure*}[t]
  \centering
  % 设置极紧密的水平子图间距,杜绝多余留白
  \setlength{\tabcolsep}{1.2pt}
  
  \begin{tabular}{ccccc}
    % ---------- 第一行: 全景图 (带统一红色线框) ----------
    \includegraphics[width=0.19\linewidth]{figs/crop1_input_box.png} &
    \includegraphics[width=0.19\linewidth]{figs/crop1_rcan_box.png} &
    \includegraphics[width=0.19\linewidth]{figs/crop1_swinir_box.png} &
    \includegraphics[width=0.19\linewidth]{figs/crop1_ours_box.png} &
    \includegraphics[width=0.19\linewidth]{figs/crop1_gt_box.png} \\
    
    % ---------- 第二行: 对应算法的局部放大图 (最近邻放大) ----------
    \includegraphics[width=0.19\linewidth]{figs/crop1_input_zoom.png} &
    \includegraphics[width=0.19\linewidth]{figs/crop1_rcan_zoom.png} &
    \includegraphics[width=0.19\linewidth]{figs/crop1_swinir_zoom.png} &
    \includegraphics[width=0.19\linewidth]{figs/crop1_ours_zoom.png} &
    \includegraphics[width=0.19\linewidth]{figs/crop1_gt_zoom.png} \\
    
    % ---------- 子图标签与对应指标 ----------
    \small (a) Low-Res Input & 
    \small (b) RCAN~\cite{zhang2018rcan} & 
    \small (c) SwinIR~\cite{liang2021swinir} & 
    \small (d) \textbf{Ours} & 
    \small (e) Reference (GT) \\
    \footnotesize 24.12 dB / 0.712 & 
    \footnotesize 28.45 dB / 0.835 & 
    \footnotesize 29.80 dB / 0.869 & 
    \footnotesize \textbf{31.25 dB} / \textbf{0.904} & 
    \footnotesize PSNR / SSIM \\
  \end{tabular}
  
  \caption{Qualitative comparison of $4\times$ super-resolution on the Urban100 benchmark. The red bounding boxes in the top row indicate the regions of interest (ROI), which are magnified using nearest-neighbor interpolation in the bottom row. Our proposed framework reconstructs sharp repetitive lattice textures with fewer structural artifacts while maintaining higher PSNR/SSIM scores.}
  \label{fig:qualitative_comparison}
\end{figure*}

\end{document}

5. 提交前的定性对比图排雷自检清单

在导出最终 Camera-Ready PDF 之前,对照以下清单逐项放大检验:

自检维度 规范合格标准 常见严重缺陷排查
ROI 坐标一致性 所有参与对比的算法使用完全相同的像素矩形范围 某基线由于手动裁剪导致内容错位了数个像素。
插值真实性 放大展示使用最近邻插值(Nearest Neighbor) 使用了抗锯齿平滑,导致全景图与放大切片的像素微观结构相互矛盾。
边框颜色联动 原图框线颜色与放大切片外轮廓线条颜色严格统一 原图画红框,放大图却用蓝框或者无框,审稿人无法对应视线。
图像存储格式 全程保存为无损 PNG 或无损 TIFF 格式 误存为 JPEG 格式,在高频边缘处引入了大量伪影与块状脏噪点。
文字字号下限 图表下方的算法名称与指标角标在 100% 打印下不低于 7 pt 插入 LaTeX 后图片被强行压缩,字号缩小到无法裸眼阅读。
极端对比度呈现 挑选的 ROI 必须包含结构突变、细密纹理或文字线条 挑选了毫无细节的纯色天空或平整墙面,完全看不出算法之间的性能分水岭。

遵循“严谨的相同坐标提取、最近邻无损放大渲染、色彩映射框线引导与紧密的无缝矩阵编排”,不仅能让研究成果的视觉优势直观呈现,更能以工业级的学术严谨度赢得顶会审稿专家的高分认可。