扩展画面内容不合理的问题,在AI图像外绘、商品图延展、海报补全、视频画面扩展等场景中非常普遍。模型虽然能生成看似连贯的像素,但放大后经常发现新增区域的地平线对不上、人物多出一只手、窗户朝向相反、阴影方向和原图矛盾,或者背景直接变成一团没有结构的色块。这类问题不能只靠提高采样步数解决,因为它本质上是生成过程缺少空间与语义约束。要想让扩展区域既保留原图逻辑,又自然融入整体,需要从提示词引导和结构控制两个方向同时下手。

扩展画面内容不合理的常见原因
扩图任务的输入通常是一张原图和向外扩展的空白区域,模型需要根据已知边缘推断未知内容。普通文生图模型在训练时看到的大多是完整画面,对画面边界外的信息并没有可靠推理能力。当空白区域占比变大,模型会倾向于从训练分布中采样常见图案,而不是严格延续原图的透视、光照和物体关系。比如原图是一个斜侧角的建筑,扩图后新增部分可能突然变成正面视角,因为模型对斜侧角建筑与周围环境的空间关系没有足够强的先验。
另一个原因是注意力机制的作用范围有限。扩散模型在去噪时虽然会参考整张特征图,但距离当前生成位置较远的原图像素,对最终结果的约束力会下降。如果扩展区域较大,模型只能依赖模糊的全局上下文,于是出现物体重复、边缘接缝生硬、细节缺失等情况。简单提高提示词权重往往只会让模型更“自信”地画出某个物体,但物体位置、大小、朝向仍然可能不合理。
还有一个容易被忽略的问题是蒙版过渡。很多扩图工作流会用一个二值蒙版标记原图区域和待生成区域,但蒙版边缘如果处理得过于锐利,生成器会在边界处产生颜色跳变或伪影。如果蒙版过度羽化,又会导致原图内容被意外修改。因此,结构控制不只是给一张参考图,还要设计合理的区域约束方式,让模型知道哪里可以自由发挥,哪里必须严格保留。
提示词引导:让新增区域有明确语义
提示词引导不是简单写一句“扩展背景”,而是要把新增区域应当出现的物体、材质、环境、光照、拍摄角度等信息描述清楚。比如原图是一张靠左的产品图,右侧需要补出桌面和窗户,可以把正向提示词写成:木质桌面,浅色窗帘,柔和的自然光从右上方照入,背景干净,产品右侧留出空间。这样模型在填充右侧区域时就有了明确目标,而不是随意生成一些模糊纹理。
更稳定的做法是使用区域提示词或分区域条件。常见的扩散模型工作流支持对蒙版区域单独设置提示词,原图区域使用较低去噪强度保护内容,扩展区域使用较高去噪强度并绑定专门提示词。比如在ComfyUI中,可以把原图区域和扩展区域拆成两个条件分支,对扩展区域使用类似“现代办公室,白墙,深色木地板,窗外城市景观”的描述,同时用负向提示词排除“文字、水印、扭曲、重复物体、不自然接缝”。这样生成的画面会更接近预期。
提示词还需要注意尺度描述。扩展区域如果只是写“蓝天白云”,模型可能生成与地面完全不相称的巨大云朵。可以在提示词中加入空间尺度词,例如“远处的地平线”“近景的草地”“中等高度的树木”,帮助模型建立前后关系。对于人物扩图,还要明确服装下摆、手臂状态、腿部姿态,避免出现肢体不完整或多余肢体。以下是一个扩展画面的提示词组织示例,适合在Stable Diffusion类工具中使用:
positive = (
"outpainting, seamless extension, photorealistic, "
"continuing the same room, wooden floor, white wall, "
"soft window light from left, shallow depth of field, "
"clear spatial relationship, no text, no watermark"
)
negative = (
"extra limbs, distorted perspective, repeated objects, "
"visible seam, blurry background, oversaturated, "
"low quality, random texture"
)
如果模型仍然出现重复物体,可以适当提高负向提示词中“重复物体”“对称图案”的权重,同时降低扩展区域的引导系数。提示词引导的作用是缩小语义搜索范围,但它不能单独解决硬性的空间结构问题,因此需要与结构控制结合。
结构控制:先固定骨架再填充细节
结构控制的核心思想是先给模型提供一个低层次的空间约束,例如边缘图、深度图、法线图或人体关键点,让模型在去噪初期就确定大致的布局和透视。以深度图控制为例,可以先根据原图的深度信息估计扩展区域应有的深度分布,再把这个深度图作为条件输入,模型在生成时会遵循近处物体大、远处物体小的规则,避免主体与背景的空间关系混乱。
边缘控制适用于建筑、室内、线条感较强的画面。先用边缘检测算法提取原图边缘,再人工或程序化地延伸边缘到扩展区域,形成完整的透视线。这样扩图时新增的墙壁、道路、家具边缘会沿着已有的结构线走。法线图控制更适合复杂曲面和不规则物体,它能告诉模型表面的朝向,从而让光影和立体感保持一致。实际工作中可以先使用ControlNet的深度模式生成第一版,再换用边缘模式做局部修正。
蒙版设计也是结构控制的一部分。推荐做法是不要直接使用硬边二值蒙版,而是对蒙版边缘做小范围羽化,让原图与扩展区之间有一个渐变过渡。对于需要严格保留的主体,可以额外设置一个保护蒙版,把去噪强度降到很低,防止主体被修改。如果扩展区域有明确边界,比如把正方形图扩成横版,可以先在扩展区域放置一个粗略的草图,用草图作为引导,再让模型填充纹理。下面演示如何用Python生成一个简单的羽化蒙版:
import cv2
import numpy as np
def make_soft_mask(H, W, left_keep=0.7, feather=40):
mask = np.zeros((H, W), dtype=np.uint8)
cut = int(W * left_keep)
mask[:, :cut] = 255
# 对分界线附近做羽化
for c in range(cut, min(cut + feather, W)):
alpha = 1 - (c - cut) / feather
mask[:, c] = int(255 * alpha)
mask = cv2.GaussianBlur(mask, (feather * 2 + 1, feather * 2 + 1), 0)
return mask
mask = make_soft_mask(512, 768, left_keep=0.7, feather=48)
这段代码生成一个左侧保留、右侧扩展且边缘平滑的蒙版。羽化宽度需要根据图像分辨率调整,太窄会出现硬接缝,太宽则可能让原图内容被意外改变。结构控制并不意味着完全不让模型自由发挥,而是把自由限制在合理的空间框架内。
工作流落地与参数调整建议
实际扩图时,建议先分析原图的几何特点。如果是室内或建筑类画面,优先使用深度图和边缘图作为结构条件;如果是人物或动物,优先使用姿态关键点和边缘图;如果是自然风景,深度图和法线图更有效。第一步用较低去噪强度生成候选结果,检查新增区域的空间关系是否与原图一致。如果发现透视错误,不要反复提升提示词权重,而是先修正结构条件图,比如把边缘线拉直、把深度图调整成连续平面。
采样参数方面,扩展区域的去噪强度通常设置在0.6到0.8之间。过低的去噪强度会导致生成内容模糊,过高的去噪强度会破坏与原图的衔接。CFG引导系数建议从7开始,逐步增加到9或10,同时观察画面是否过度饱和或出现噪点。对于大范围扩展,可以分多次进行,每次只扩展一小圈,每次扩展后重新生成结构条件,这样比一次性扩展大幅区域稳定得多。
如果使用分区域提示词,注意原图区域和扩展区域的提示词不要互相冲突。例如原图是夜晚室内,扩展区域却写“晴朗白天”,光照矛盾会让模型在接缝处产生奇怪过渡。建议在全局提示词中统一时间、季节、天气和光线方向,然后在区域提示词中只补充局部物体和材质。这样既能保证语义一致,又能给模型足够的局部引导。
最后可以引入简单的后处理来进一步消除不合理痕迹。对扩展区域做一次低强度图像修复,重点处理接缝和重复纹理;再用脚本检测明显的不连续边缘,如果发现断裂就回到控制图层面做局部修正。提示词引导解决的是“画什么”,结构控制解决的是“画在哪里、朝哪个方向、遵循什么透视”。两者不是二选一,而是扩图质量稳定的两个必要环节。