想象你手里有一张很漂亮的照片:池塘、凉亭、远山,构图精美,可惜画幅太小,想把它挂满整面墙却总差一截。这时来了一位园林设计师,他并不把画面缩小,而是提笔向画纸四周接着画——池塘边多出一片竹林,远山后延出云海,风格与原来浑然一体。这项让画面向外“生长”的技术,就是 AI 扩图(Outpainting)。 Outpainting 是一种图像后处理能力:给定一张原图,AI 会读懂边缘处的颜色、纹理与光影,在画布之外重新生成与原有画面连续的新内容。这个过程不是简单放大,而是有语义的“续写”——就像园林设计师依据旧园的风格续建新区,绝不让新区的植被和旧区打架。你只需告诉它往哪个方向扩、扩多大、希望新区域里有什么,它就能帮你完成构图延展。设计师用它把方图变横版海报,内容创作者用它把画面比例调成各种平台的封面规格,概念设计师则靠它把一个小角度的概念图扩展成沉浸式大场景。正如给一座旧园子添新区,AI 扩图让创作从“画面之内”解放到“画面之外”。
对 AI 从业者而言,掌握 Outpainting 的原理与实操,能显著提升视觉内容创作的效率与成片质量,也是理解扩散模型“条件生成”能力的极佳入口。
可视化演示
展示Outpainting多方向画幅扩展(水平左/右+垂直上/下+四向同时)、扩散模型生成流程(原图→噪声填充→逐步去噪T=50→1→生成内容)与边缘衔接优化(denoising strength 0.3-0.4+mask blur 6-8px→无缝融合),交互切换核心技术。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Outpainting多方向画幅扩展 水平扩展:向左/右延伸画面,适合横版适配与宽幅构图 垂直扩展:向上/下延伸画面,适合竖版适配与全景构图 四向扩展:同时向四个方向扩展,最大化画幅延伸范围 Outpainting vs Inpainting: 向外扩展(↓) vs 向内补全(↑) | 扩展方向影响构图 根据主体位置和创作意图选择扩展方向
核心原理
园林扩建前,设计师一定要先读懂旧园:土壤是黏土还是沙地,植物是松柏还是芭蕉,屋瓦是青灰还是赭红。Outpainting 也一样,第一步不是“画”,而是“读”——模型要消化原图已有的像素,作为向外生长的根。
Outpainting 又被称为“图像外扩”,是图像后处理的一个重要分支。它和 Inpainting(图像内补)正好互补:内补像是修补墙上的破洞,外扩则是把墙往远处再砌一圈。实现方式上,现代 Outpainting 大多建立在扩散模型之上:模型从纯噪声出发,每一步去噪,同时把原图区域当作“锚点条件”,让生成出来的新区域和已有画面保持连续。
从工程视角看,一次扩图可以描述为:输入原图 I_in、扩展区域掩码 M 与提示词 T,经生成模型 G_θ 输出完整画布 I_out。掩码标记着哪些像素是“已有”,哪些是“待生成”;模型只在待生成区域自由发挥,又无时无刻不受已有区域约束。
读懂了旧园,才能画出新景。模型“读懂”原图的方式,正是把原图区域作为条件一遍遍参考——这是所有外扩生成的基础,也是后续方向、衔接、一致性控制的前提。
- 原图输入\(I_{in}\) 代表你手头已有的图像,它是扩建的起点与风格依据。
- 扩展掩码\(M\) 是一块“规划图”,标出画面外哪些区域需要 AI 生成。
- 文本提示\(T\) 是设计说明,告诉模型新区域里应该出现什么景物。
- 生成模型\(\mathcal{G}_{\theta}\) 是负责“续画”的模型,在扩散模型中通常由 U-Net 与文本编码器共同完成。
- 完整画布\(I_{out}\) 是输出结果,包含原图与新增内容,尺寸比输入更大。
方向控制
设计师拿到扩建任务,第一件事就是和业主确认:是往南扩一个水景,还是往西扩一片草坪?方向错了,再好的设计也会破坏原有动线。Outpainting 同样要先确定扩展方向与扩展量。
主流工具的界面里,通常有“向上/下/左/右扩展像素”四个输入框,对应生成时掩码在四个方向上的分布。更聪明的工具会先让你画一个目标框(比如把画布从 1:1 拖到 16:9),再自动计算四个方向各需补多少像素。
构图重心是决定方向的关键:原图主体在左,优先向右扩,给主体前方留出呼吸感;主体居中,四向对称扩展通常安全;原图若是天空为主,向上扩则容易接出更多云层,但地平线可能被推远。设置方向的本质,其实是定义“新画布范围”与“旧画布范围”的差值。
方向与尺寸定好,AI 就知道该往哪里用力。就像园林施工先放线打桩,把边界画清楚,后续每一笔新内容才有落点。
- 原图宽\(W_{old}\) 是原图的像素宽度,代表旧园目前的横向占地。
- 左扩量\(w_{left}\) 是向左扩展的像素数,对应新园在左边让出的地块。
- 右扩量\(w_{right}\) 是向右扩展的像素数,常用于给主体前方留空间。
- 新高\(H_{new}\) 是扩展后的画布高度,由原高、上扩量、下扩量相加。
边缘衔接
再好的园林,新旧交界处如果突然风格断裂,也会一眼穿帮。边缘衔接是 Outpainting 成败的分水岭:模型必须让新生成的内容顺着原图边缘的纹理、颜色和光照“长”出去,而不是凭空贴一块。
扩散模型会重点关照原图边缘一圈的上下文信息:最右一列像素是什么颜色、山脊线在哪个高度消失、光线从哪边打来。生成新区域时,这些边缘信息被反复参考,使新一代像素在统计上与旧边缘连续。
工程上,许多实现会在新旧区域之间设一条“过渡带”,带内像素同时受旧图边缘和新生成内容的共同影响:离旧图越近,旧信息占比越大;越往外,新生成内容渐渐主导。这种加权混合避免了拼接感。
衔接自然,观感才完整。正如绿篱与碎石路把新区和旧区温柔地连在一起,过渡带让接缝从“裁剪粘贴”变成“天衣无缝”。
- 带内距离\(d\) 表示当前生成位置到原图边缘的像素距离,单位为像素。
- 带总宽度\(D\) 是过渡带的整体宽度,通常由工具参数或模型隐式决定。
- 原图权重\(\alpha(d)\) 表示原图信息在该位置的保留程度,数值在 0 到 1 之间。
- 加权关系\(1 - d/D\) 说明权重随距离线性衰减,末端衔接逐渐过渡到全新内容。
内容一致性
如果扩建的新园区用的是另一套建筑风格——旧区是徽派白墙,新区却是北欧木屋——路人一眼就知道不是同一座园子。内容一致性要求扩展出的画面与原图“同气连枝”:风格统一、色调协调、纹理连贯。
风格统一指材料语言一致,水墨风扩展区就不应出现厚涂油画肌理;色调协调指光线环境一致,正午强光下扩出的画面不该是黄昏暖调;纹理连贯指地面、植被、水面等材质的密度与走向延续原图规律。模型通过两个途径实现一致性:一是将原图整体作为参考条件,二是在提示词中强调统一的风格关键词。后期制作时,还可以用色阶、曲线工具把新老区域的色调进一步拉齐。
在训练与评估中,研究者常用“感知风格损失”量化新旧区域的一致性:把两幅区域分别送入神经网络的风格层,比较它们的统计特征差异,差异越小说明越统一。
一致性不是“一模一样”,而是“同一位画师在完成同一幅画”。AI 越是忠实地参照旧园的语言系统,扩展出的新区就越像原本就存在一样。
- 特征提取\(\phi_l\) 是神经网络第 \(l\) 层的特征提取函数,可理解为园林师的审美分析器。
- 风格统计\(\mu(\cdot)\) 是特征图的均值,用于代表一块区域的整体风格语言。
- 差值平方\(\|\cdot\|_2^2\) 计算新旧风格特征的欧氏距离平方,数值越小越一致。
- 逐层累加\(\sum_l\) 把多个神经网络层的风格距离相加,做到从粗到细多层把关。
提示词技巧
开工之前,业主总要向设计师描述需求;需求说得越具体,方案越少返工。Outpainting 里的提示词,就是你和 AI 设计师之间的“委托书”。
扩图提示词有三个核心部件。内容描述负责告诉模型新区域里有什么,比如“向右扩展出一片沙滩与海平面”;风格关键词负责锁定整体艺术语言,比如“写实摄影风格”“东方水墨留白”;氛围修饰负责补充光线、季节、天气等感官信息,比如“黄昏金色侧光、薄雾”。此外,负面提示词用来排除常见瑕疵,如“文字、水印、变形、多余手指”。
一个常见的初学者问题是:只拉画幅不写提示词。此时模型只能凭边缘信息“盲猜”,结果往往是平庸的模糊延续甚至扭曲。把“委托书”写清楚,生成质量立刻上一个台阶。
委托书写清楚了,AI 设计师就能一次到位。好提示词的价值不在于词藻华丽,而在于每一句都在回答“扩展区到底应该是什么样”。
- 内容部分\(T_{content}\) 描述扩展区的主体景物,是提示词的信息主体。
- 风格部分\(T_{style}\) 锁定艺术风格,避免新区与原图风格漂移。
- 氛围部分\(T_{atmosphere}\) 补充光影、季节、天气等情绪性描述。
- 拼接生成\(+\) 表示将三部分文本按顺序组合,形成一条完整提示词。
工具实操
同样的图纸,不同施工队的工艺也参差。选对工具、调好参数,Outpainting 的效果与效率相差很大。
主流工具各有侧重:Midjourney 的 Pan 功能支持向四个方向平移扩展,氛围延续出色;Adobe Firefly 的“生成填充”可以直接在扩展画布上刷选区域,适合与 PS 工作流结合;Stable Diffusion WebUI 提供专门的 Outpainting 脚本,允许精细控制重绘幅度与去噪强度;DALL·E 的扩展画布功能则在简单场景上非常稳健。
参数调优方面,最核心的是重绘幅度(denoising strength):数值越大,新区域越自由,但越容易偏离原图;数值越小,越保守,适合需要严格延续纹理的场景。CFG Scale 控制提示词遵循程度,过大会让画面生硬,过小则忽略委托书。实操中一次性扩展过多最容易产生畸变,建议分步扩展:每步只向外扩一段距离(如 256px),把上一步结果当作“已被锁定的新区”,再继续向外。
节奏对了,工程就稳了。工具是施工队,参数是施工工艺,分步扩展则是把巨石切成小块搬运——看似多走了几步,实际避开了一次性铺开带来的崩坏风险。
- 总扩展距离\(L_{total}\) 是计划扩展的总像素距离,即新区要推出的总长度。
- 单步距离\(S_{per\_step}\) 是每次扩展的安全像素数,通常取 256 或 512。
- 扩展次数\(N\) 是分步执行的次数,决定整条施工流程的节奏。
- 向上取整\(\lceil \cdot \rceil\) 保证即使不能整除,最后一步也覆盖全部距离。
应用场景
园子扩建好了,就该想想它服务谁:是市民公园,还是私家会所?Outpainting 的最终价值,恰恰体现在它适配出的画幅与场景里。
最直观的应用是平台尺寸适配。一张竖幅商品图要放进电商首页横幅,不需要重新拍摄,向右扩展补出干净背景即可;一段横版视频封面要做成竖版短视频,向上向下扩展出更多环境空间即可。其次是平面设计,海报、Banner、画册跨页常常要求特定的宽高比,Outpainting 能把原先的单图无缝延伸到目标比例。此外,视觉延伸还用于影视概念设计:把一张关键帧概念图扩展成全景环境,帮助导演与美术提前在同机位看到更大世界。
实际工作流可归纳为:确定目标画幅比例 → 反推各方向扩展量 → 撰写提示词 → 执行分步扩展 → 检查接缝与色调 → 后期统一输出。这里的核心计算,是先把比例框定,再决定每边补多少。
场景决定画幅,画幅决定扩展方案。当 AI 扩图从“能扩出来”进化到“刚好适配”,它就真正成为创作者手里一把合手的尺子。
- 目标宽度\(W_{new}\) 是扩展后的画布宽度,由原始宽度和左右扩展量决定。
- 目标高度\(H_{new}\) 是扩展后的画布高度,由原始高度和上下扩展量决定。
- 宽高比例\(R_{target}\) 是最终画面的宽高比,决定作品适合 16:9、3:4 还是 1:1。
- 反推尺寸给定 \(R_{target}\) 后,结合原图尺寸即可解出每边所需扩展像素。
AI 应用场景
电商设计师:把主图扩成首页横幅
阶段:图像后处理
解决的问题:商品主图为白色背景方图,首页 Banner 需要 16:9 横幅;重新拍摄成本高,直接拉伸会变形。
具体案例:某电商设计师用手持吸尘器主图向右扩展 800px,提示词写“干净的浅灰墙面背景,柔和阴影”,一次跑三组候选稿,选中一组在 PS 里微调边缘阴影,十分钟即交付上线。
自媒体创作者:竖版视频一键适配横版封面
阶段:AIGC 内容创作
解决的问题:短视频封面为 9:16,同步发布到横版平台需要 16:9 的宽图;原素材不够宽。
具体案例:创作者把竖版风景片段向左右各扩展 50%,让 AI 补全清晨海边的沙滩和天空,生成结果做模糊背景叠加,封面信息文字放左侧空白区,避免了裁切主体。
影视美术:概念图延展全景环境
阶段:AI图像生成辅助设计
解决的问题:前期概念图只有单一机位视角,导演希望在分镜前看到更宽阔的环境关系。
具体案例:美术组用一张城堡概念图向上、向右扩展出山脉与云层,扩展后在 PS 中放置角色行进路线标识,帮助导演确认场景空间布局,缩短了分镜沟通周期。
Python 演示
"""Simulate Outpainting: edge extension + transition blend"""import numpy as npfrom PIL import Image def create_demo_image(size=160): """Generate a synthetic gradient image as the original picture""" x = np.linspace(0, 1, size) y = np.linspace(0, 1, size) X, Y = np.meshgrid(x, y) r = (X * 220).astype(np.uint8) g = (Y * 180).astype(np.uint8) b = (120 + 50 * np.sin(X * 3)).astype(np.uint8) return np.stack([r, g, b], axis=-1) def extend_border(img, top=0, right=80, bottom=80, left=0): """Extend canvas and fill the border first""" h, w, c = img.shape nh, nw = h + top + bottom, w + left + right canvas = np.zeros((nh, nw, c), dtype=np.uint8) canvas[top:top + h, left:left + w] = img # 右扩展: 复制最右列 canvas[top:top + h, left + w:] = np.repeat(img[:, -1:, :], right, axis=1) # 下扩展: 复制最底行 canvas[top + h:, left:left + w] = np.repeat(img[-1:, :, :], bottom, axis=0) # 右下角: 复制角落颜色 canvas[top + h:, left + w:] = img[-1, -1, :] return canvas, h, w def smooth_transition(canvas, oh, ow, top, left, band=20): """Blend edge band to simulate seamless stitching""" out = canvas.copy().astype(np.float32) h, w = out.shape[:2] # 右过渡带: 靠近原图让原图像素占主导, 向外渐变 for i in range(band): alpha = (band - i) / band x = left + ow - band + i if 0 <= x < left + ow: out[top:top + oh, x] = ( alpha * canvas[top:top + oh, x] + (1 - alpha) * canvas[top:top + oh, left + ow - 1] ) return out def main(): img = create_demo_image() expanded, oh, ow = extend_border(img, 0, 80, 80, 0) result = smooth_transition(expanded, oh, ow, 0, 0) Image.fromarray(expanded).save('outpaint_before.jpg') Image.fromarray(result.astype(np.uint8)).save('outpaint_after.jpg') print('已输出两张图: 粗糙外扩 vs 平滑过渡外扩') if __name__ == '__main__': main()
canvas[top:top + h, left:left + w] = img将原图放到新画布的对应位置,相当于扩建时先把旧园原样保留。np.repeat(img[:, -1:, :], right, axis=1)把原图最右列重复复制到右侧新区,模拟“粗糙外扩”。np.repeat(img[-1:, :, :], bottom, axis=0)把原图最底行向下复制,覆盖底部扩展区。alpha = (band - i) / band过渡带权重随距离衰减,靠近原图的像素保留更多原图信息。out[top:top + oh, x] = alpha * 原图列 + (1 - alpha) * 边缘列在过渡带内做线性混合,让新旧边界平滑起来。if __name__ == '__main__':保证模块被直接运行时才执行 main(),便于被其他代码 import。
常见误区
误区很多初学者觉得“反正是 AI 扩图,往哪边扩都一样”,直接把四个方向拉到最大,结果主体被挤到角落或画面失衡。
正解扩展方向必须配合构图重心。主体在左,应主要向右扩;主体在上,应主要向下扩。方向错了,AI 就算把新内容画得再精致,整幅图的视觉重心也已经流产。
为何常见:手机上的一键扩图功能隐藏了方向参数,让用户误以为 AI 会自动完成构图决策。
误区认为新区域的内容完全由提示词决定,原图只是放在旁边当摆设。
正解Outpainting 的核心约束来自原图边缘的上下文。新内容必须延续边缘的颜色、纹理和光照,提示词只能引导“新区域里有什么”,不能推翻边缘连续性。
为何常见:看到 AI 生成了原图中不存在的新景物,容易夸大“无中生有”的程度。
误区把目标画幅一步拖到位,认为分步扩展是浪费时间。
正解模型一次推理的信息容量有限,扩展距离越大,远处内容越容易失真变形。分步扩展每一步以上一步结果为条件,相当于每步都有“已知新区”作为参考,质量明显更稳。
为何常见:追求点击一次就完成,忽略了扩散模型“长距离推理”的不稳定性。
误区以为扩图只是改尺寸,模型会自动猜出画布外该有什么。
正解不写提示词时,模型只能靠边缘信息盲猜,产出常是模糊的延续或随机的堆叠。写清楚“沙滩、日落、向左扩展”,生成内容才能准确落到需求上。
为何常见:部分工具内置自动补全,给用户造成“不用输入也还行”的错觉。
误区认为 AI 生成的部分不属于任何人,拿来商用没问题。
正解扩图结果是否能商用取决于所选平台的用户协议、底层训练数据授权,以及涉及元素是否包含人物、品牌、建筑等受保护对象。商用前应逐条核对条款并留档。
为何常见:社交平台上大量 AI 图免费传播,让版权意识被进一步淡化。
面试题
Q1. Outpainting 中的“扩展”主要指什么?
- A.将图像的像素分辨率调大
- B.在画布外侧补全生成新内容← 正确答案
- C.修改已有图像中的主体内容
- D.压缩图片让文件体积变小
答案:B。Outpainting 是在画布边界之外新增像素内容,而非简单地放大分辨率。放大像素只是插值,不产生新的语义;向内修改则是 Inpainting 的职责。
Q2. 与 Outpainting 形成互补、用于向内修复的技术是?
- A.图像内部的修复技术← 正确答案
- B.图像分辨率的放大技术
- C.图像语义区域的分割技术
- D.图像艺术风格的迁移技术
答案:A。Inpainting(图像内补)负责修复画面内部缺失或破损区域,与 Outpainting 一个向内、一个向外。超分、分割、风格迁移解决的是其他问题。
Q3. 原图主体靠左,目标比例是 16:9,最合理的扩图策略是?
- A.向上下两个方向扩展
- B.主要向右进行大范围扩展← 正确答案
- C.主要向左进行大范围扩展
- D.四个方向均匀进行扩展
答案:B。主体靠左时,画面左侧信息已经完整,向右扩展才能为主体前方留出空间。向左扩展会让主体更偏向右边甚至裁切,上下扩展则可能让画面变得空旷。
Q4. 影响 Outpainting 边缘衔接质量的因素有哪些?
- A.过渡带宽度的设置← 正确答案
- B.光照方向是否保持一致← 正确答案
- C.提示词越长效果越好
- D.边缘处纹理的连续程度← 正确答案
答案:ABD。过渡带太窄容易产生接缝,太宽可能让近原图区域失真;光照方向与纹理连续性直接决定拼接感。提示长度与衔接质量并无单调正相关,过长反会稀释注意力。
Q5. 在过渡带公式 α(d) = 1 - d/D 中,靠近原图处原图像素权重如何?
- A.离原图越远权重越高
- B.离原图越近权重越高← 正确答案
- C.权重与距离完全无关
- D.过渡带内权重处处相同
答案:B。d 越小,α 越大,即越贴近原图,原图信息保留越多。这是线性衰减的直观结果,也是“越靠边越延续原图”这一直觉的数学表达。
Q6. 关于分步扩展的说法,正确的是?
- A.一次扩展到位效率最高
- B.分步扩展保证结果更稳定← 正确答案
- C.分步扩展必然导致质量下降
- D.分步只适合线稿插画场景
答案:B。分步扩展让每一步都以“上一步结果”为上下文条件,模型能看到更近的真实边缘,远距离生成退化减少。它不是效率最低,而是以质量换稳定的正确取舍。
Q7. 保持扩展内容与原图一致性的常用手段有哪些?
- A.利用原图作为参考约束← 正确答案
- B.在提示词中统一风格描述← 正确答案
- C.后期对整体色调进行微调← 正确答案
- D.完全关闭提示词生成约束
答案:ABC。原图参考与统一风格词让生成阶段更稳,后期色调微调处理残余色差。完全关闭提示词等于放弃内容引导,只靠边缘信息,一致性风险显著上升。
Q8. 重绘幅度(denoising)数值调大,最可能出现的现象是?
- A.生成内容越不受原图约束← 正确答案
- B.生成的内容清晰度越高
- C.原图细节保留程度越高
- D.可扩展的画布面积越大
答案:A。重绘幅度控制生成过程对初始噪声的保留比例。数值越大,模型越倾向于“重新构想”,原图边缘只充当弱提示;这与清晰度、面积无直接关系。
Q9. 扩图结果出现明显拼接感时,最直接的后期修复手段是?
- A.直接把整体图片放大处理
- B.对交接区域做蒙版融合处理← 正确答案
- C.继续增加提示词的篇幅长度
- D.将图片转换为更低清晰度
答案:B。拼接感的本质是过渡带两侧的颜色、纹理或光照不连续。用蒙版加模糊或混合工具针对接缝局部处理,能直接把不连续性抹平;放大、改提示词或降清晰度都解决不了本质问题。
Q10. Outpainting 与 Inpainting 的共同点包括?
- A.都利用图像上下文条件← 正确答案
- B.都能用扩散模型完成← 正确答案
- C.都会增加图像像素数量
- D.都需指定待处理区域掩码← 正确答案
答案:ABD。两者都在已知区域条件的约束下生成新像素,且扩散模型是它们的通用底座;掩码用于标记需要处理或保留的区域。区别在于 Inpainting 不增加总像素面积,只替换内部内容,而 Outpainting 会扩大画布。