【无标题】Image-to-Image Translation 图像风格迁移中的成对图像拼接代码

引 言 在图像风格迁移任务中,近几年比较火热的Generative Adversarial Nets (GAN)模型以及各种变体深受视觉研究团体的青睐,在具体任务中取得比较不错的实验表现。在有监督图像风格迁移任务迁移中,需要输入给模型成对的图片(一个来自源域source domain,一个来自目标域target domain)。成对图像底层内容可以相同,pix2pix模型主要研究这类图像集合,图像底层内容也可以不同,CycleGAN模型主要解决底层内容不同的风格迁移问题。在图像输入模型前需要对图像进行预处理,可以将两个领域的图像拼接成一张图作为模型的输入。本文主要讲述两个用于图像拼接处理的代码。代码来源于文章【Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks】[paper] [Project code]

文章目录

一、PIL库实现图像拼接

图像拼接的前提条件是两张图具有相同的尺寸,若尺寸不同需要采用缩放、裁剪等策略对图像进行预处理。调用Image.new(mode, size)创建拼接图,通过 paste()函数将两张图片粘贴到指定位置。

示例代码:

c 复制代码
def align_images(a_file_paths, b_file_paths, target_path):
    if not os.path.exists(target_path):
        os.makedirs(target_path,exist_ok=True)

    for i in range(len(a_file_paths)):
        img_a = Image.open(a_file_paths[i])
        img_b = Image.open(b_file_paths[i])
        assert(img_a.size == img_b.size)

        aligned_image = Image.new("RGB", (img_a.size[0] * 2, img_a.size[1]))
        aligned_image.paste(img_a, (0, 0))
        aligned_image.paste(img_b, (img_a.size[0], 0))
        aligned_image.save(os.path.join(target_path, '{:04d}.jpg'.format(i)))

if __name__ == '__main__':
    img_A_path = './2007_000121.jpg'
    img_B_path = './2007_000123.jpg'
    img_AB_dir = './AB/splice'
    align_images([img_A_path], [img_B_path], img_AB_dir)

图片效果

二、cv2库实现图像拼接

首先调用cv2.imread()函数读取两张图片,将两张图片拼接后调用cv2.imwrite()函数写入到新图片文件中。

示例代码

c 复制代码
def image_write(path_A, path_B, path_AB):
    if not os.path.exists(path_AB):
        os.makedirs(path_AB,exist_ok=True)
    im_A = cv2.imread(path_A, 1) # python2: cv2.CV_LOAD_IMAGE_COLOR; python3: cv2.IMREAD_COLOR
    im_B = cv2.imread(path_B, 1) # python2: cv2.CV_LOAD_IMAGE_COLOR; python3: cv2.IMREAD_COLOR
    im_AB = np.concatenate([im_A, im_B], 1)
    img_save = os.path.join(path_AB,'concate.jpg')
    cv2.imwrite(img_save, im_AB)

if __name__ == '__main__':
    img_A_path = './2007_000121.jpg'
    img_B_path = './2007_000123.jpg'
    img_AB_dir = './AB/splice'
    image_write(img_A_path,img_B_path,img_AB_dir)

三、总结

在视觉项目中,图像数据集的预处理是一个非常重要的关键环节,在CycleGAN的项目代码中除本文 描述的一个小细节外,还有很多图像数据预处理代码值得大家学习和引用。在引言部分给出了项目代码的 hub库。想要阅读项目代码的同学可以自行下载学习。

相关推荐
weixin_5051544620 小时前
打破传统界限:Bowell Studio引领3D作业指导新纪元
人工智能·3d·制造·数据安全·数字孪生·数据可视化
ModelHub XC信创模盒21 小时前
中国信创AI生态下 “信创模盒”社区战略招募种子用户
人工智能·大模型·开发者·信创·算力
袋鼠云数栈1 天前
集团数字化统战实战:统一数据门户与全业态监管体系构建
大数据·数据结构·人工智能·多模态
廋到被风吹走1 天前
【AI】Codex 多语言实测:Python/Java/JS/SQL 效果横评
java·人工智能·python
cskywit1 天前
【IEEE TNNLS 2025】赋予大模型“跨院行医”的能力:基于全局与局部提示的医学图像泛化框架 (GLP) 解析
人工智能
2501_948114241 天前
AI API Gateway 选型指南:2026 年生产环境下的聚合平台深度对比
人工智能·gateway
实在智能RPA1 天前
Agent 在物流行业能实现哪些自动化?——深度拆解 AI Agent 驱动的智慧物流新范式
运维·人工智能·ai·自动化
TechubNews1 天前
Jack Dorsey:告别传统公司层级,借助 AI 走向智能体架构
大数据·人工智能
伴野星辰1 天前
如何提高YOLO8目标检测的准确性?
人工智能·目标检测·机器学习
胡耀超1 天前
Token的八副面孔:为什么“词元“不需要更好的翻译,而需要更多的读者
大数据·人工智能·python·agent·token·代币·词元